Как сделать видимость изображения видимой, 5-секундная пауза, невидимая, 5-секундная пауза и т. Д. - PullRequest
1 голос
/ 19 сентября 2010

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

ImageViewer видимый

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

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

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

ImageViewer видимый

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

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

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

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

2 голосов
/ 19 сентября 2010

Я не программист на 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, который включает задержку в логику отправки сообщения.

...