2011-10-29 23 views
1

私は、特定のコントロールが押されたときにボタンを強調表示し、非表示にする必要があるアンドロイドのビューを持っています。これは使い勝手の良い機能です。各ボタンがハイライト表示されているので、ユーザーに大声で読み上げられます。私はAlphaAnimationクラスを使ってハイライトを完成させます。しかし、今では無効化呼び出しまたはコールバックスレッドをいくつ入れたかによって、最後のアニメーションだけが実際にユーザーに提示されます。他のアニメーションはまだ呼び出されていますが、最後のアニメーションではオーバーライドされるため、1つしか表示されません。私はボタンの不透明度/アルファプロパティを設定することも試みましたが、これらの変更は一度に一括して実行されます。これらのアニメーションがシーケンスで発生する必要があります。コントロールフローが返される前にメインビューを更新するための良い方法はまだ見つかりませんでした(つまり、呼び出すメソッドが返される前に複数回更新する)。誰にもアイデアはありますか?複数のボタンアニメーションが順番に表示されます - 最後の1つだけが表示されます

+0

あなたのコードはどこですか? – blessenm

+0

ここでコードを投稿するにはあまりにも多くのアプローチを試みましたが、コードには問題はないようでした。私は最終的にそれを理解し、以下の解決策を掲載しました。 –

答えて

2

この問題にぶつかる他の人にとって、私はついに解決策を見つけました。

ドキュメント: http://developer.android.com/reference/android/os/AsyncTask.html http://www.anddev.org/tut_updating_ui_from_a_thread-t11125.html

私のソリューション:ボタンの配列を取り込みAsyncTaskを作成します。そのdoInBackgroundメソッドでは、ハイライト/淡色表示し、ボタンのハイライト表示の各繰り返し中に、有効なボタンの更新をonProgressUpdateメソッドにプッシュします。 onProgressUpdateメソッドは、渡されたすべてのボタンに対してinvalidate()を呼び出します。ハイライト機能に簡単にアクセスできるように、AsyncTaskの新しいインスタンスを作成し、呼び出しを実行する静的ハイライト(buttons ...)メソッドを作成しました。

関連する問題