4

それ自体をクリックして画像ボタンを360度回転させようとしていますが、機能しません

私はこのようなxmlファイルを使用しています。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="72dp"
        android:layout_height="72dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="83dp"
        android:layout_marginTop="103dp"
        android:clickable="true"
        android:src="@drawable/cute" />
</RelativeLayout>

そしてこのようなJavaコード...

package com.example.testapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.RotateAnimation;
import android.widget.ImageButton;

public class MainActivity extends Activity implements OnClickListener {


    ImageButton img;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageButton) findViewById(R.id.imageView1);



    }
    public void onClick(View v) {
        // TODO Auto-generated method stub
        RotateAnimation ra =new RotateAnimation(0, 360);
        ra.setFillAfter(true);
        ra.setDuration(0);

        img.startAnimation(ra);

    }

}

私のアプリケーションの目的は、9imgbtn開発とパズル検索ゲームを使用することです。

4

2 に答える 2

7

コードは問題なく機能します。問題は次のとおりです。期間を0に設定します。360度回転すると終了位置と開始位置が同じになるため、これが発生することはわかりません。したがって、アニメーションが実際に発生するのを確認するには、期間を1000(秒)以上に設定します。

ちょうど試して:

ra.setDuration(1000);

また、imgのonClickリスナーも設定していません。

ちょうど試して:

img .setOnClickListener(new OnClickListener() {

    public void onClick(View arg0) {
        //animation here
    }
});
于 2012-11-06T10:31:23.587 に答える
4

これは、1つの小さなアプリで回転するために使用したコードでした。

public class MainScreen extends Activity{
    ImageView ivDH = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen);
        ivDH = (ImageView) findViewById(R.id.dollhouse);

        ivDH.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub

                startAnimation(ivDH);
                return false;
            }
        }); 
    }
    public void startAnimation(ImageView ivDH)
    {
        System.out.println("Inside startAnimation()");
        Animation scaleAnim = new ScaleAnimation(0, 2, 0, 2);
        scaleAnim.setDuration(5000);
        scaleAnim.setRepeatCount(1);
        scaleAnim.setInterpolator(new AccelerateInterpolator());
        scaleAnim.setRepeatMode(Animation.REVERSE);

        Animation rotateAnim = new RotateAnimation(0, 360, Animation.ABSOLUTE, Animation.ABSOLUTE, Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF);
        rotateAnim.setDuration(5000);
        rotateAnim.setRepeatCount(1);
        rotateAnim.setInterpolator(new AccelerateInterpolator());
        rotateAnim.setRepeatMode(Animation.REVERSE);

        AnimationSet animationSet = new AnimationSet(true);
        animationSet.addAnimation(scaleAnim);
        animationSet.addAnimation(rotateAnim);

        ivDH.startAnimation(animationSet);
    }
}

いくつかのパラメータを変更する必要があります。それが役に立てば幸い

于 2012-11-06T09:55:16.890 に答える