1

onClick ofrotate imageviewを開始したいのですが、問題は、Androidシステムがアクティビティを完了して起動する時間がないことです。では、どうすればアニメーションを完全に表示してからアクティビティを呼び出すことができますか。これは私のxmlコードです:activityimageviewanimation

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromDegrees="-7"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:toDegrees="7" />

そしてこのコード:

      public void onImageViewClicked(View view){
        switch(view.getId()){
            case R.id.viewstock:
                Animation shakeV = AnimationUtils.loadAnimation(this,     R.anim.shake);
                view.startAnimation(shakeV);
                startActivityForResult(intent, 12);
                break;
            case R.id.about:
                Animation shakeA = AnimationUtils.loadAnimation(this,     R.anim.shake1);


                 view.startAnimation(shakeA);
            Intent aboutIntent = new Intent(MainActivity.this,AboutActivity.class);
            startActivity(aboutIntent);
            break;
    }
}
4

3 に答える 3

3

質問をサポートするためのコードスニペットを提供できますか。したがって、アニメーションをどのように処理しているかを知る方がはるかに簡単です。

今のところ、標準のアニメーションを使用していると仮定します。その場合は、Animation.AnimationListenerリッスンに使用しますonAnimationEnd(Animation animation)。そこで活動を開始します。

詳細については、これを確認してください。

これがお役に立てば幸いです。

于 2012-09-15T10:08:40.443 に答える
3

うん、私の推測は正しかった。shakeA、shakeVに使用

shakeA.setAnimationListener(new AnimationListener(){

@Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { // TODO Start your activity here. startActivity(aboutIntent); // Here you go. } })
于 2012-09-15T10:27:58.443 に答える
0

開始アクティビティの期間を設定する方が良いと思います

    @Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(aboutIntent); 
        }
    }, 2000);
}

@Override
public void onAnimationRepeat(Animation animation) {

}
于 2020-08-28T19:52:40.513 に答える