0

私は 2animation を持っており、最初に背景が最初のアニメーションで表示され、最初のアニメーションが終了すると 4 つのボタンが 2 番目のアニメーションで表示されます。背景とボタンは 1 つの XML ファイルにあります。アニメーションが実行されると、 onTouch() メソッドが機能しなくなります。

私は検索して、AnimationListenerを使用すると言いましたが、これは使用できません!

これは私のコードです。読んで助けてください

public class Splash extends Activity {

Animation animation1;
Animation animation2;
Animation animation3;
ImageView image;
ImageButton circleProduct;
ImageButton circleIntroduce;
ImageButton circleMore;
ImageButton circleContact;

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

    animation1=AnimationUtils.loadAnimation(this, R.anim.bounce);
    animation1.setAnimationListener(this);
    animation2=AnimationUtils.loadAnimation(this, R.anim.push_left_out);
    animation2.setAnimationListener(this);
    animation3=AnimationUtils.loadAnimation(this, R.anim.push_left_out);
    animation3.setAnimationListener(this);

    image=(ImageView)findViewById(R.id.img);
    image.startAnimation(animation1);

    circleProduct=(ImageButton)findViewById(R.id.btnCircleProduct);
    circleIntroduce=(ImageButton)findViewById(R.id.btnCircleIntroduce);
    circleMore=(ImageButton)findViewById(R.id.btnCircleMore);
    circleContact=(ImageButton)findViewById(R.id.btnCircleContact);

    circleProduct.setVisibility(View.VISIBLE);
    circleProduct.startAnimation(animation2);
    circleContact.setVisibility(View.VISIBLE);
    circleContact.startAnimation(animation2);
    circleIntroduce.setVisibility(View.VISIBLE);
    circleIntroduce.startAnimation(animation3);
    circleMore.setVisibility(View.VISIBLE);
    circleMore.startAnimation(animation3);

    image.setOnTouchListener(onTouchListener);
    circleProduct.setOnClickListener(onClickListener);
}

private OnTouchListener onTouchListener=new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        Log.i("clicked", "on the Splas");
        Intent intent=new Intent(Splash.this,MainActivity.class);
        startActivity(intent);
        //finish();
        return false;
    }
};

private OnClickListener onClickListener=new OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Log.i("circuleProduct", "clicked");
        Intent intent=new Intent(Splash.this,Product.class);
        startActivity(intent);
    }

};

 }

ありがとう

4

1 に答える 1

0

animationListner を最初のアニメーションに追加し、onAnimationEnd メソッドで 2 番目のアニメーションを開始するだけです。

以下のコードを試してください

他のアニメーション リスナーを削除する

animation1.setAnimationListener(new Animation.AnimationListener() {

        public void onAnimationStart(Animation arg0) {
            // TODO Auto-generated method stub

        }

        public void onAnimationRepeat(Animation arg0) {
            // TODO Auto-generated method stub

        }

        public void onAnimationEnd(Animation arg0) {
            // TODO Auto-generated method stub

            yourView.startAnimation(animation2);
        }
    });

それがあなたを助けることを願っています。

于 2013-09-25T16:32:39.043 に答える