gpt4 book ai didi

java - 如何不失去焦点?

转载 作者:行者123 更新时间:2023-12-01 08:53:29 25 4
gpt4 key购买 nike

我有一个视频播放器,使用 library在他的ImageView上,即覆盖视频播放器30%的横幅类型。每 15 秒,图片就会改变一次。

mBannerView.setImageBitmap (BitmapFactory.decodeFile (file.getAbsolutePath ()));
Thread.sleep (1000 * 15);

但是在更改带有消息的图片时发生崩溃:

Android "Only the original thread that created a view hierarchy can Touch its views. "

我尝试将这些行写入 UI 流:

    

runOnUiThread (new Runnable () {
        @Override
        public void run () {
            ............
        }
    });

ImageView 但随后不响应任何计时器或更改。

我现在认为(可能是错误的,在本例中,请更正)视频播放时焦点位于视频播放器上,因此上面的图片发生了变化,崩溃了。

如果是这样,那么在这种情况下如何,如何在继续播放视频的同时不失去 ImageView 的焦点?如果不是,可能出了什么问题?

UPD:代码:

 public void bannerSlide(boolean run) {
Timer timer = new Timer();
File file;
if (run){
mBannerView.setVisibility(View.VISIBLE);
final List<Banner> bannerList = GlobalData.loadBannerInfo(MainActivity.this);
if (bannerList != null && bannerList.size() > 0){
for (int i = 0; i < bannerList.size(); i++){
file = new File(Application.banner_path + bannerList.get(i).getName());
if (file.exists()){
mBannerView.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));
}

final int finalI = i;
timer.schedule(new TimerTask() {
@Override
public void run() {
if (finalI == bannerList.size() - 1){
bannerSlide(true);
}
}
}, 15 * 1000);
}
} else {
mBannerView.setVisibility(View.GONE);
}
} else {
mBannerView.setVisibility(View.GONE);
timer.cancel();
}
}

最佳答案

这与焦点无关。您不得从 UI 线程以外的其他线程触摸 UI 小部件。也不异常(exception)。 runOnUiThread() 应该作为您猜测的解决方案,但是当您没有显示您运行的代码时,很难说您在那里做错了什么。

关于java - 如何不失去焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42215952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com