【问题标题】:ListView with Volley NetworkImageView flickering带有 Volley NetworkImageView 闪烁的 ListView
【发布时间】:2016-09-02 16:50:51
【问题描述】:

我有一个带有 NetworkImageView 的非常简单的列表视图

public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) getContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.ladder_item, parent, false);
            }

            image0= (NetworkImageView) convertView.findViewById(R.id.ladder_item_layer_0_user_0_image);
            image0.setDefaultImageResId(R.drawable.test_random_size);
            image0.setImageUrl(obj.getImageUrl(), mLoader);

            return convertView;
        }

问题是滚动不像我希望的那样平滑,它有点闪烁。如果我注释掉“setImageUrl”行,滚动非常流畅,所以问题在于 Volley NetworkImageView 图像加载。有什么办法可以减少闪烁吗?

我正在三星 S5 mini 上进行测试。

非常感谢

【问题讨论】:

    标签: android performance listview android-volley networkimageview


    【解决方案1】:

    在我看来,您有两种选择。

    1. 将图像加载器更改为更适合您的特定情况的性能,例如 picasso 或 glide。
    2. 在加载到 imageview 后调整位图的大小,但我鼓励第一个选项,因为去年 volley 是这样。

    【讨论】:

    • 嗯,Volley 已经有好几年了。你是什​​么意思“调整位图后加载到imageview”?谢谢
    • 将大小设置为 NetworkImageView,然后 volley 将为您调整大小。
    • 我尝试了毕加索:同样的结果,仍然闪烁
    • 图片的平均尺寸是多少?
    • 大约 1000x1000 像素
    【解决方案2】:

    滚动不流畅的原因可能多种多样。 Here 一篇非常好的文章,介绍了 ListView 应遵循的最佳实践。

    在我的情况下,闪烁是由 Volley 图像加载引起的,解决方案是使用 Glide 进行图像加载。 Glide 来自谷歌,它非常强大和轻量级。现在滚动它简直超级流畅。

    HerePicasso 和 Glide 的比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多