将 ImageView 的可见性连接到 MediaPlayer 状态的最佳方式?
Best way to connect visibility of ImageView to state of 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);
}
}
};
您需要在 UI 线程上处理更新 UI。简单的方法可以解决你的问题
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);
}
});
}
}
};
我正在处理一个项目,其中 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);
}
}
};
您需要在 UI 线程上处理更新 UI。简单的方法可以解决你的问题
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);
}
});
}
}
};