0

さて、setBackground()でボタンを設定したいのですが、この更新後、スレッドを500ミリ秒でスリープさせ、同じボタンで別の背景を設定した後、これらすべてをonTouchメソッド内で実行します。例

public boolean onTouch(View v,MotionEvent event){
switch(event.getAction()){
case MotionEvent.ACTION_UP:
   button.setBackground(R.drawable.bckg1);
   try{
      Thread.sleep(500);
      button.setBackground(R.drawable.bckg2);
   }catch(Exception e){}
   break;
}
4

1 に答える 1

0

メイン(UI)スレッドをスリープ状態にしないでください。androidスレッドモデルには2つのルールがあります1)メインスレッドを約5秒以上ブロックしないでください(そうしないと、アプリが応答しないクラッシュが発生します)2)メインスレッドからUIを操作しないでください。あなたは500の間しか眠っていなくても、それらの規則の最初のものに違反しようとしています。

代わりに、ハンドラーを使用して、5000ミリ秒で遅延ランナブルを投稿してから、ランナブル内でボタンの背景を更新します。

于 2012-07-26T04:57:14.000 に答える