将 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);
                    }
                });

            }
        }
    };