将ImageView的可见性连接到MediaPlayer状态的最佳方法是什么?

问题描述 投票:0回答:1

我正在开发一个项目,其中只有在播放MediaPlayer对象时才能看到ImageView元素。

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);
        }
    }
};
android android-mediaplayer android-imageview android-threading
1个回答
0
投票

您需要处理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);
                    }
                });

            }
        }
    };
© www.soinside.com 2019 - 2024. All rights reserved.