2015-12-29 2 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

и что, если я хочу, чтобы показать изображение, а затем задержать всю программу, а затем продолжать и делать звук. (я прошу, конечно, потому что у меня есть этот вопрос ...) –

+0

может понравиться кому-то помочь мне здесь. я хочу что-то такое, что дозирует тот же эффект, что и сон, не замораживая мой пользовательский интерфейс. хендлер не останавливает мою программу. Я хочу остановить программу в середине цикла for, отобразить изображение, а затем остановить все (цикл). но обработчик этого не делает. лучшие regrads –

ответ

0

Замените обработчик OnClick:

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

и что, если я хочу показать изображение, а затем задержать всю программу, а затем продолжить и сделать звук. (я прошу, конечно, потому что у меня есть этот вопрос ...) –

+0

Что значит - задержать всю программу? Вы хотите, чтобы пользователь не взаимодействовал с ним или вы хотите отложить выполнение кода? – Rediska

+0

im хочу сделать эту задержку в середине цикла for, и теперь с этим postDelayed цикл продолжает считать. и я хочу, чтобы все останавливались на 1000 мс, и только после этого, чтобы сохранить округление цикла. спасибо очень много !!! –

0

С Thread.sleep(10000); вы вызывая основной поток, чтобы заморозить и, таким образом, интерфейс не может быть обновлен для этого периода времени.

Если вы хотите, чтобы ждать в течение определенного количества времени, чтобы сделать что-то, вы можете использовать Handler вместо этого, так что интерфейс может быть обновлен в то же время:

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

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

и что, если я хочу показать изображение, а затем задержать всю программу, а затем продолжить и (я прошу, конечно, потому что у меня такая проблема ...) –

+0

может понравиться кому-то, помогите мне здесь. Я хочу что-то, что дозирует тот же эффект, что и сон, не замораживая мой пользовательский интерфейс. hendler не останавливает мою программу. Я хочу остановить программу в середине цикла for, отобразить изображение, а затем остановить все (цикл), но обработчик не делает этого. best regrads –

0

Ты ставишь свой 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

может понравиться кому-то помочь мне здесь. я хочу что-то такое, что дозирует тот же эффект, что и сон, не замораживая мой пользовательский интерфейс. хендлер не останавливает мою программу. Я хочу остановить программу в середине цикла for, отобразить изображение, а затем остановить все (цикл). но обработчик этого не делает. лучшие регады –

Смежные вопросы