Android:引入Fresco项目解决图片加载乱序的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a695929533/article/details/51297255

今天玩着自己写的android程序,滑来滑去发现有一些图片的存放顺序出错了,本以为是viewholder出问题,后来发现这是android上常见的问题:

由于GirdView、ListView、RecyclerView等的复用机制,导致快速滑动引起的图片乱序。

其实不仅是图片,视频,checkbox等放入item,在快速滑动都会出现乱序的现象。


办法一:

在adapter的onCreateViewHolder()方法里面加入:holder.setIsRecyclable(false).

简单粗暴的方法,既然是复用机制导致的问题,那么我们就关闭复用。代价是在item到达一定数量之后(不同设备不一样),性能有所下降。


办法二(待改进):

本着不重复制造轮子的概念,这一次我从网上找了找解决方案。网友推荐使用facebook的fresco项目。

加入项目:

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

dependencies {
...
compile 'com.facebook.fresco:fresco:0.9.0+'
...
}

构建之后即可使用。

引入命名空间

 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"


控件:

 <com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/picSDV"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:visibility="gone"
                fresco:placeholderImage="@drawable/ic_menu_camera"
                />

在相应的activity中

 setContentView(R.layout.activity_navigation);
 Fresco.initialize(getApplicationContext());


这样就可以使用了,具体:http://fresco-cn.org/docs/index.html#_ 点击打开链接

但是:我的问题并没有解决。虽然官方文档说明了会自己管理图片内存,但是我这李还是出现图片错乱。或许官方解释的并不是我所遇见的问题。

猜你喜欢

转载自blog.csdn.net/a695929533/article/details/51297255