gpt4 book ai didi

Android: ListView 滚动期间的 setImageBitmap 与 setImageURI

转载 作者:搜寻专家 更新时间:2023-11-01 07:54:48 25 4
gpt4 key购买 nike

我有一个包含未知数量自定义项的 ListView ,在滚动过程中 - 在 getView 内部)我检查本地是否存在与 aConvertView 相关的图像并将其设置为 ListView 项 (aConvertView):

    // out of getView(...)

Bitmap mBitmap;
BitmapFactory.Options mOptions = new BitmapFactory.Options();
mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;


// Inside getView(...)

File file = new File(mContext.getFilesDir(), picture_file_name);
if(file.exists())
{
**// Which one has less impact on the UI thread?**

mBitmap = BitmapFactory.decodeFile(file.getPath(), mOptions);
aImageView.setImageBitmap(mBitmap);

// OR

aImageView.setImageURI(Uri.fromFile(file));
}

当然我有滚动延迟的已知问题,我想知道在滚动期间设置项目的 ImageView 的最佳方法/方法。

setImageBitmap 对 UI 线程的影响是否比 setImageURI 小?还是两者都在 UI 上工作并导致延迟。

是否使用 new File 、 File.exists() 对 UI 线程有影响?

不用说,我为我的 ListView 项目使用了一个 holder,并为我的 ListView 使用了以下参数:

        android:smoothScrollbar="true"
android:scrollingCache="false"
android:animationCache="false"

最佳答案

两者都在 UI 线程上运行。我会说第一个可能比第二个快一点点。第二个实际上取决于 Uri 资源的来源(例如,uri 可能指向甚至没有存储在手机上的远程文件)。

我认为这里的问题是您是否应该在 UI 线程上加载位图,答案是否定的,尤其是在 ListView 中。 Google 在 developers.android.com 上发布了关于从 UI 线程加载位图的精彩教程:http://developer.android.com/training/displaying-bitmaps/process-bitmap.html

关于Android: ListView 滚动期间的 setImageBitmap 与 setImageURI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522659/

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