Лучший способ связать видимость ImageView с состоянием MediaPlayer?
Я работаю над проектом, в котором элемент ImageView должен быть виден только во время воспроизведения объекта MediaPlayer.
Состояние MediaPlayer может измениться в любое время.
Что было бы лучшим способом подключить это? Я рассмотрел запуск потока в фоновом режиме, но он кажется немного тяжелым для такой мелочи.
Вот текущий код для потока, и приложение запускается, но изображение не отображается.
Thread imageRender = new Thread() {
@Override
public void run() {
if (mp.isPlaying() && img.getVisibility() == View.INVISIBLE) {
img.setVisibility(View.VISIBLE);
} else if (!mp.isPlaying() && img.getVisibility() == View.VISIBLE) {
img.setVisibility(View.INVISIBLE);
}
}
};
1 ответ
Решение
Вам необходимо обработать обновление пользовательского интерфейса в потоке пользовательского интерфейса. Простой способ решить вашу проблему
Thread imageRender = new Thread() {
@Override
public void run() {
if (mp.isPlaying() && img.getVisibility() == View.INVISIBLE) {
runOnUiThread(new Runnable() {
@Override
public void run() {
img.setVisibility(View.VISIBLE);
}
});
} else if (!mp.isPlaying() && img.getVisibility() == View.VISIBLE) {
runOnUiThread(new Runnable() {
@Override
public void run() {
img.setVisibility(View.INVISIBLE);
}
});
}
}
};