Android咋样使bitmap滑动,Android 解决快速滑动问题

快速滑动图片一闪一闪的问题,图片加载等处理在这里不介绍,主要就是介绍下在Adapter中维护一个LinkedHashMap解决上述问题

1.[代码][Java]代码

package com.longraise.seller.adapter;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.drawable.BitmapDrawable;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AbsListView;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

import com.longraise.seller.R;

import com.longraise.seller.view.VoiceButton;

import java.lang.ref.SoftReference;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import cc.sdkutil.control.image.CCImageLoader;

import cc.sdkutil.control.image.CCImageLoaderCallback;

import cc.sdkutil.control.inject.CCInjectUtil;

import cc.sdkutil.model.inject.CCInjectRes;

/**

* Created by wangcong on 15-1-8.

*/

public class OrderFinishAdapter extends BaseAdapter {

//convertview id

private final static int BASE_ID = 0x0fff00;

private Context mContext;

private List> mAllList;

//图片加载相关

CCImageLoader mImageLoader;

//用于缓存图片,减小快速滑动时图片显示落帧现象

final LinkedHashMap> linkedHashMap;

final int MAX_SIZE = 16;

public OrderFinishAdapter(Context context, List> list) {

this.mContext = context;

this.mAllList = list;

linkedHashMap = new LinkedHashMap>(16, 0.75f, true) {

private static final long serialVersionUID = 1L;

@Override

protected boolean removeEldestEntry(Entry> eldest) {

boolean flag = size() > MAX_SIZE;

if (flag) {

SoftReference softReference = eldest.getValue();

Bitmap bitmap = softReference.get();

if (bitmap != null) bitmap.recycle();

remove(eldest.getKey());

}

return flag;

}

};

}

public int getCount() {

return mAllList.size();

}

public Object getItem(int position) {

return mAllList.get(position);

}

public long getItemId(int position) {

return position;

}

@SuppressWarnings("deprecation")

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_finish_item, parent, false);

holder = new ViewHolder();

CCInjectUtil.inject(holder, convertView);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

convertView.setId(BASE_ID + position);

final Map map = mAllList.get(position);

//处理图片

SoftReference softReference = linkedHashMap.get(map.get("orderImgUrl"));

Bitmap bitmap = softReference == null ? null : softReference.get();

if (bitmap == null) {

holder.image.setBackgroundResource(R.drawable.default_image_error);

if (mImageLoader == null)

mImageLoader = new CCImageLoader.Builder().needCacheInDisk().outSize(120, 120)

.callback(new CCImageLoaderCallback() {

@Override

public void onSuccess(Bitmap bitmap, Object... objs) {

super.onSuccess(bitmap, objs);

if (bitmap != null) { //图片加载成功后处理

ImageView imageView = (ImageView) objs[0];

imageView.setBackgroundDrawable(new BitmapDrawable(mContext.getResources(), bitmap));

SoftReference soft = new SoftReference(bitmap);

linkedHashMap.put(objs[1] + "", soft);

bitmap = null;

}

}

}).build();

mImageLoader.loadNetImage(map.get("orderImgUrl") + "", holder.image, map.get("orderImgUrl"));

} else {

holder.image.setBackgroundDrawable(new BitmapDrawable(mContext.getResources(), bitmap));

}

return convertView;

}

static class ViewHolder {

@CCInjectRes(R.id.order_item_image)

ImageView image;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值