2015-12-29 75 views
0
public class MainActivity extends Activity { 
    ImageView img; 
    MediaPlayer failure; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button bButton= (Button)findViewById(R.id.blueBtn); 
     img = (ImageView)findViewById(R.id.image); 
     img.setVisibility(View.VISIBLE); 
     failure= MediaPlayer.create(this,R.raw.failure_sound); 

     bButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      img.setVisibility(View.VISIBLE);    
      try { 
       Thread.sleep(10000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      failure.start(); 

     } 
     }); 

     } 

這就是我的代碼。 我只是想當我按下按鈕時,它會顯示圖像 然後等待1000毫秒,然後發出聲音。 但是(!)當我按下該按鈕時不幸:過程等待1000毫秒,然後發出聲音並顯示img。如何讓ImageView立即顯示

help plz !!!

+0

''Handler' Thread.sleep' –

+0

什麼,如果我要顯示的圖像,然後延遲整個程序,然後繼續併發出聲音。 (即時要求的課程,因爲我有問題kund ...) –

+0

可以請別人幫我在這裏。我想要一些與睡眠效果相同的東西,而不會凍結我的UI。該hendler不會讓我的程序停止。我想停止for循環的midle程序,顯示一張圖片,然後停止一切(循環)。但處理程序不這樣做。最佳regrads –

回答

0

替換您的onClick處理程序:

public void onClick(View v){ 
    img.setVisibility(View.VISIBLE);    
    v.postDelayed(new Runnable() { 
     public void run() { failure.start(); } 
    },1000); 
} 
+0

以及如果我想顯示圖像,然後延遲整個程序,然後繼續併發出聲音。 (即時要求的課程,因爲我有問題的kund ...) –

+0

你是什麼意思 - 延遲整個程序?你想阻止用戶與它進行交互,或者你想延遲一些代碼執行? – Rediska

+0

即時通訊想要做一個for循環midle延遲,現在用這個postDelayed循環保持countinuing。我希望每1000毫秒停止,並且只有在這之後才能繼續計數循環。 非常感謝你! –

0

隨着Thread.sleep(10000);你造成主線程凍結,因此UI不能的時間量進行更新。

如果要等待一定的時間做一些事情,你可以使用Handler代替,所以UI可以在此期間進行更新:

public void onClick(View v){ 
    img.setVisibility(View.VISIBLE); 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      failure.start(); 
     } 
    }, 1000); 
} 
+0

以及如果我想顯示圖像,然後延遲整個程序,然後繼續(因爲我有這樣的問題,所以要求課程...) –

+0

可以請別人幫我在這裏,我想要的東西和睡眠效果一樣,而不會凍結我的UI,hendler不會讓我的程序停止。我想在for循環的midle中停止程序,顯示一張圖片,然後停止一切(循環),但處理程序不這樣做。最佳regrads –

0

你把你的UI線程睡覺,這會導致您的應用凍結並且圖像不顯示。 更好的方法是使用一個處理程序,它會在延遲後執行代碼,並且不會凍結您的UI。

您clickListener的快速適應是:使用而不是

bButton.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v){ 
     img.setVisibility(View.VISIBLE);    
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       failure.start(); 
      } 
     }, 1000); 
    }); 
} 
+0

以及如果我想顯示圖像e,然後延遲整個節目,然後繼續併發出聲音。 (即時要求課程,因爲我有這樣的問題......) –

+0

可以請別人幫我在這裏。我想要一些與睡眠效果相同的東西,而不會凍結我的UI。該hendler不會讓我的程序停止。我想停止for循環的midle程序,顯示一張圖片,然後停止一切(循環)。但處理程序不這樣做。最好的regrads –