自定的适配器中要适配视频或者图片的缩略图,网络图片等比较费时的操作时,可以先放默认的图片,用一个默认的集合保存,等缩略图或者网络图片加载完成之后,在一张张的替换,增加用户体验效果。
在activity中适配之后调用:
/**
* 得到视频缩略图之后替换默认图片
* @param videoPrctures 存放图片的地址的集合
* @param adapter 适配器
* @param bitmaps 存放默认图片的集合
*/
public void changeVideoPrcture(final ArrayList<String> videoPrctures, final GridViewAdapter adapter, final ArrayList<Bitmap> bitmaps) {
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
ArrayList<Bitmap> bitmaps=(ArrayList<Bitmap>) msg.obj;
adapter.update(bitmaps);
}
};
Thread thread = new Thread() {
@Override
public void run() {
for (int i = 0; i < videoPrctures.size(); i++) {
String pathString = videoPrctures.get(i);
Bitmap bitmap = ScanUtil.getVideoThumbnail(pathString, 200, 200,500);
// 替换指定位置的数据
bitmaps.set(i, bitmap);
Message msg=new Message();
msg.obj=bitmaps;
handler.sendMessage(msg);
}
}
};
thread.start();
}
在适配器里刷新数据,通知适配器数据发生改变,重新绘图
public void update(ArrayList<Bitmap> videoPrctures){
this.mVideoPrctures=videoPrctures;
notifyDataSetChanged();
}