Как я могу сделать изображение видимым, 5-секундную паузу, невидимую, 5-секундную паузу и т. д.

У меня есть imageView и я хочу, чтобы он работал так:

ImageViewer виден

5-секундная пауза

невидимый вид изображения

5-секундная пауза

ImageViewer виден

и так далее ...

Как я могу это сделать? Я пробовал спать, но он замораживает всю программу через 5 секунд. Я просто хочу повлиять на свой imageView.


person Xtreme    schedule 19.09.2010    source источник


Ответы (2)


Я не программист Android, но в качестве общего совета я бы сказал, что вы должны выполнить сон, лучше сказать ожидание, в другом потоке и выполнить в конце периода ожидания в основном потоке метод который переключает видимость вашего изображения.

Если говорить более подробно, я бы сказал, что вы должны использовать объект Handler, потому что вы не можете обновлять большинство объектов пользовательского интерфейса в отдельном потоке. Когда вы отправляете сообщение обработчику, оно сохраняется в очереди и выполняется потоком пользовательского интерфейса как можно скорее:

public class MyActivity extends Activity {

// Handler needed for callbacks to the UI thread
final Handler mHandler = new Handler();

// Create runnable for posting
final Runnable mUpdateUIState = new Runnable() {
    public void run() {
        updateUIState();
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    [ . . . ]
}

protected void startToggle() {

    // Fire off a thread to do the waiting
    Thread t = new Thread() {
        public void run() {
            Thread.Sleep(5000);
            mHandler.post(mUpdateUIState);
        }
    };
    t.start();
}

private void updateUiState() {

    // Back in the UI thread -- toggle imageview's visibility
    imageview.setVisibility(1 - imageview.getVisibility());
}
}

или, фрагмент более короткой версии,

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
              imageview.setVisibility(1 - imageview.getVisibility());
         } 
    }, 5000); 

используя метод postDelayed, который включает задержку в логику публикации сообщения.

person luvieere    schedule 19.09.2010

Используйте AlphaAnimation на ImageView с 10-секундная продолжительность перехода от альфа-канала 100 к 0 и обратно к 100 снова. Затем используйте счетчик повторов INFINITE. Вы можете использовать интерполятор для создания приятного эффекта при появлении или исчезновении ImageView.

person Diego Torres Milano    schedule 20.09.2010