2011-01-17 1 views
0

私はここでこのフォーラムで検索していますが、私の質問に対する答えは見つかりません。私は次の問題を抱えています:Androidで新しいアクティビティを開始する前に、どのようにUIの変更をonClickListenerで処理するのですか?

私は画像ビューと2つのテキストを持っていますが、選択時の色を変更して次のアクティビティを読み込む前にビジュアルフィードバックを表示したいと思います。

@Override 
public void onClick(View v) { 
    openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP); 
    openFormOverviewTitle.setTextColor(0xFF00851B); 
    openFormOverviewText.setTextColor(0xFF00851B); 
    Intent tki = new Intent(); 
    tki.setClass(getApplication(), DataCollectorFormOverviewActivity.class); 
    startActivity(tki); 
} 

ボタンとテキストが変更され、新しいアクティビティが開始されると思います。ただし、テキストは変更されず、アクティビティが開始されます。 UIスレッド(runOnUiThread(new Runnable(){...})のrunnableで3行を呼び出すと、アクティビティが開始される前に変更が適用されます。これは実際には奇妙です。別名。UIスレッドメインスレッドが。

ことは、UIスレッドへの変更は、UIスレッド上でimediatelly実行されません?それとも、私は完全に間違って何かをやっていることを意味するのでしょうか?

ベスト、 アダム

答えて

2

正しいですUI要素の変更はすぐには実行されません。次回のUIループの実行時に実行されます。これはコントロールを解放した後です。これはUIで高価な操作を行うことができない理由です読む。

+0

ありがとうございます。ちょっとした説明のために:UIスレッド(runOnUIThread)にRunnableを置くと、スレッドの上に独自のループとして配置され、このループの前に実行されますか?私は本当にそれを理解したい...乾杯! – deradam

関連する問題