почему ImageView не может обновиться до SystemClock.sleep ()

1

Я хочу показать другое изображение в ImageView в течение 3 секунд, после этого прокрутки старого изображения. Код:

    OnClickListener oc = new OnClickListener() {
@Override
public void onClick(View v) {
         ImageView iv = (ImageView)v;
         iv.setImageResource(img2_id);
         SystemClock.sleep(3000);
         iv.setImageResource(img1_id);
    }
    }

    myImageView.setOnClickListener(oc);

Но это не сработает? Итак, я делаю что-то неправильно?

Теги:
sleep
imageview

1 ответ

3

Вы блокируете поток пользовательского интерфейса. Таким образом, во время команды sleep экран не будет обновляться. Вам нужно запланировать неблокирующий задержанный вызов функции, которая изменяет ресурс изображения. Вот модифицированный код, который бы сделал такую вещь:

Handler mHandler = new Handler(); /*handler declared in your Activity thread, I assume*/

OnClickListener oc = new OnClickListener() {
    @Override
    public void onClick(View v) {
        ImageView iv = (ImageView)v;
        iv.setImageResource(img2_id);

        mHandler.postDelayed(new Runnable(){
            public void Run(){
                iv.setImageResource(img1_id);
            }
        },3000);

    }
}
myImageView.setOnClickListener(oc);
  • 0
    это работает, спасибо вам!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню