gpt4 book ai didi

java - 为什么我的 ImageView (Android Studio) 的图像仅在 onClick-Method 结束时发生变化?

转载 作者:行者123 更新时间:2023-12-01 18:48:44 25 4
gpt4 key购买 nike

以下代码显示了如何将图像从我的服务器加载到 ImageViewPicasso(在 Android 上)。我发现 ImageView 中的图像当方法完成时正在更改 - 但我想在执行代码行时更改它。

btn_startlive.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){


while(something_that_is_true_for_a_long_time){
Picasso.with(img_live.getContext()).load("http://localhost:8000/livepicture")
.networkPolicy(NetworkPolicy.NO_CACHE)
.placeholder(img_live.getDrawable())
.memoryPolicy(MemoryPolicy.NO_CACHE)
.into(img_live);
}


}
});

在此示例中,图像没有改变。是因为方法没有结束吗?又该如何解决呢?

最佳答案

你的onClickListener()看起来是正确的。在您的 onClickListener() 方法中 SystemClock.sleep(2000); 停止您的应用程序(据我所知,所有线程)。因此,您的图像无法立即加载。

只需删除 SystemClock.sleep(2000); 即可。

如果你想更有效地使用你的 picasso 图书馆,你可以查看这个answer

如果您的图像在删除 SystemClock.sleep() 后加载速度如此之慢(您说这只是为了展示您的情况),可能您的图像太大而无法处理。

如果您加载大量图像,请尝试使用调整大小以获得更好的内存性能:

Picasso.with(getActivity()).load(getPixId).resize('widthImageView', 'heightImageView').noFade().into(imageView);

编辑:如果您尝试将太大的图像文件加载到 Picasso,它会显示一些延迟的图像。为了消除与您的图像大小有关的问题,请在您的Picasso行中添加.resize()方法。

 Picasso.with(img_live.getContext())
.load("http://localhost:8000/livepicture")
.networkPolicy(NetworkPolicy.NO_CACHE)
.placeholder(img_live.getDrawable()) .memoryPolicy(MemoryPolicy.NO_CACHE)
.resize(100, 100)
.into(img_live); // resizes the image to these dimensions (in pixel). does not respect aspect ratio

关于java - 为什么我的 ImageView (Android Studio) 的图像仅在 onClick-Method 结束时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59771205/

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