解決Android快速滑動時(shí)圖片一閃一閃問題
快速滑動圖片一閃一閃的問題,圖片加載等處理在這里不介紹,主要就是介紹下在Adapter中維護(hù)一個LinkedHashMap解決上述問題
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<Map<String, Object>> mAllList; //圖片加載相關(guān) CCImageLoader mImageLoader; //用于緩存圖片,減小快速滑動時(shí)圖片顯示落幀現(xiàn)象 final LinkedHashMap<String, SoftReference<Bitmap>> linkedHashMap; final int MAX_SIZE = 16; public OrderFinishAdapter(Context context, List<Map<String, Object>> list) { this.mContext = context; this.mAllList = list; linkedHashMap = new LinkedHashMap<String, SoftReference<Bitmap>>(16, 0.75f, true) { private static final long serialVersionUID = 1L; @Override protected boolean removeEldestEntry(Entry<String, SoftReference<Bitmap>> eldest) { boolean flag = size() > MAX_SIZE; if (flag) { SoftReference<Bitmap> 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<String, Object> map = mAllList.get(position); //處理圖片 SoftReference<Bitmap> 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<Bitmap> soft = new SoftReference<Bitmap>(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; } }
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- Android實(shí)現(xiàn)Banner界面廣告圖片循環(huán)輪播(包括實(shí)現(xiàn)手動滑動循環(huán))
- Android開發(fā)之使用ViewPager實(shí)現(xiàn)圖片左右滑動切換效果
- Android實(shí)現(xiàn)圖片自動輪播并且支持手勢左右無限滑動
- Android 高仿微信朋友圈動態(tài)支持雙擊手勢放大并滑動查看圖片效果
- Android實(shí)現(xiàn)手勢滑動多點(diǎn)觸摸放大縮小圖片效果
- Android手勢滑動實(shí)現(xiàn)ImageView縮放圖片大小
- Android中RecyclerView 滑動時(shí)圖片加載的優(yōu)化
- Android 使用ViewPager實(shí)現(xiàn)圖片左右循環(huán)滑動自動播放
- Android 利用ViewPager實(shí)現(xiàn)圖片可以左右循環(huán)滑動效果附代碼下載
- Android利用ViewPager實(shí)現(xiàn)帶小圓球的圖片滑動
相關(guān)文章
Android中用MediaRecorder進(jìn)行錄影的實(shí)例代碼
這篇文章主要介紹了Android中用MediaRecorder進(jìn)行錄影的實(shí)例代碼,有需要的朋友可以參考一下2014-01-01Flutter如何通過一行命令解決多個pubspec.yaml文件的依賴項(xiàng)問題
這篇文章主要介紹了Flutter如何通過一行命令解決多個pubspec.yaml文件的依賴項(xiàng)問題,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06flutter 實(shí)現(xiàn)多布局列表的示例代碼
這篇文章主要介紹了flutter 實(shí)現(xiàn)多布局列表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Android ListView 滾動條的設(shè)置詳解及實(shí)例代碼
這篇文章主要介紹了 ListView等滾動條的設(shè)置詳解詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02android短信管理器SmsManager實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了android短信管理器SmsManager實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號、發(fā)送短信及長按菜單操作方法實(shí)例小結(jié)
這篇文章主要介紹了Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號、發(fā)送短信及長按菜單操作方法,以完整實(shí)例形式總結(jié)分析了Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號、發(fā)送短信及長按菜單等操作的相關(guān)技巧,需要的朋友可以參考下2015-10-10Android 上下滾動TextSwitcher實(shí)例詳解
這篇文章主要介紹了Android 上下滾動TextSwitcher實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06Afianl框架里面的FinalBitmap加載網(wǎng)絡(luò)圖片
這篇文章主要介紹了Afianl框架里面的FinalBitmap加載網(wǎng)絡(luò)圖片的相關(guān)資料,需要的朋友可以參考下2015-07-07