gpt4 book ai didi

Android ListView 图像滞后

转载 作者:行者123 更新时间:2023-11-29 22:30:19 25 4
gpt4 key购买 nike

我的应用程序包含一个 ListView ,它可以选择包含来自用户 SD 卡的图像。它工作正常但是当加载任何图像时都有明显的滞后。我的 getView 中有这个:

          BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image, o);
final int REQUIRED_SIZE=70;

//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}

//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
Bitmap myBitmap = BitmapFactory.decodeFile(image, o2);
image_main.setImageBitmap(myBitmap);

有什么建议吗?

编辑:用这个替换了上面但是没有图像正在加载...

            class Thumbnailer extends AsyncTask<String, Void, Bitmap> {
String image;

@Override
protected void onPostExecute(Bitmap result) {
image_main.setImageBitmap(result);
}
@Override
protected void onProgressUpdate(Void... progress) {
}

@Override
protected Bitmap doInBackground(String... params) {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image, o);
final int REQUIRED_SIZE=70;

//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeFile(image, o2);
}
}
new Thumbnailer().execute(image);

最佳答案

显示带有占位符图像的行。你的 BitmapFactoryAsyncTask 中工作,完成后更新 ImageView(如果 ImageView 没有被回收所以仍然需要这个特定的缩略图)。缓存您的工作,这样您就不必再次重新进行所有缩放,至少对于 ListView 的这个化身而言,如果图像不会发生变化,可能会更长。

关于Android ListView 图像滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279255/

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