1

TextViewをクリックしてアニメーションを実行しようとしています(xml のアニメーション リストを使用) ではOnClick、バックグラウンド操作を行うためOnClickListener()に を使用しています。AsyncTaskそこで、アニメーションを開始するコードをAsyncTask's preexecute()メソッドに配置しました。ただし、アニメーションはdoInBackground()完了後にのみ発生します。何故ですか?のアニメーションコードpreexecute()は次のとおりです。

protected void onPreExecute()
    {
        Drawable current =  mainActivity.textClicked.getBackground();
          if (current instanceof AnimationDrawable) {
              AnimationDrawable btnAnimation = (AnimationDrawable) current;
              btnAnimation.setVisible(true, false);
              btnAnimation.start();
          }
    }
4

2 に答える 2

1

どこかで、UI スレッド内で .get() メソッドを使用している可能性があります。

ここから撮影

ワーカースレッド内で .get() を使用するだけです。

于 2015-01-21T06:59:54.380 に答える
0
Drawable current =  mainActivity.textClicked.getBackground();
          if (current instanceof AnimationDrawable) {
              AnimationDrawable btnAnimation = (AnimationDrawable) current;
              btnAnimation.setVisible(true, false);
              btnAnimation.start();
          }

上記の行を call の前または後に記述します AysncTask。使用している場合AsyncTask、タスクが完了するまでそこで待機しないためです。

詳細については、http://developer.android.com/reference/android/os/AsyncTask.htmlを参照してください。

于 2013-01-12T09:05:33.730 に答える