国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android ImageLoader第三方框架解析

2019-12-12 04:46:33
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android ImageLoader框架的使用方法,供大家參考,具體內容如下

1.準備工作

1)導入universal-image-loader-1.9.5.jar到項目中

2)創建MyApplication繼承Application,在oncreate()中初始化ImageLoader

public class MyApplication extends Application {  @Override public void onCreate() {  super.onCreate();  initImageLoader(this); }  // 初始化imageloader private void initImageLoader(Context context) {  // 初始化參數  ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)    .threadPriority(Thread.NORM_PRIORITY - 2)    // 線程優先級    .denyCacheImageMultipleSizesInMemory()     // 當同一個Uri獲取不同大小的圖片,緩存到內存時,只緩存一個。默認會緩存多個不同的大小的相同圖片    .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 將保存的時候的URI名稱用MD5    .tasksProcessingOrder(QueueProcessingType.LIFO)   // 設置圖片下載和顯示的工作隊列排序    .writeDebugLogs()          // 打印debug log    .build();   // 全局初始化此配置  ImageLoader.getInstance().init(config); }}

2.ImageLoader_Listview中使用

5)初始化DisplayImageOptions
6)獲取ImageLoader實例
7)顯示加載的圖片

public class ImageloaderListviewAdapter extends BaseAdapter { private Context mContext; private final ImageLoader imageLoader; private DisplayImageOptions options = new DisplayImageOptions.Builder()   .showStubImage(R.drawable.atguigu_logo)   // 設置圖片下載期間顯示的圖片   .showImageForEmptyUri(R.drawable.atguigu_logo) // 設置圖片Uri為空或是錯誤的時候顯示的圖片   .showImageOnFail(R.drawable.atguigu_logo)  // 設置圖片加載或解碼過程中發生錯誤顯示的圖片   .cacheInMemory(true)      // 設置下載的圖片是否緩存在內存中   .cacheOnDisk(true)       // 設置下載的圖片是否緩存在SD卡中   .displayer(new RoundedBitmapDisplayer(20)) // 設置成圓角圖片   .build();         // 創建配置過得DisplayImageOption對象;  public ImageloaderListviewAdapter(Context context) {  mContext = context;   // 初始化imageloader  imageLoader = ImageLoader.getInstance(); }  @Override public int getCount() {  return Constants.IMAGES.length; }  @Override public Object getItem(int position) {  return Constants.IMAGES[position]; }  @Override public long getItemId(int position) {  return position; }  @Override public View getView(int position, View convertView, ViewGroup parent) {  Viewholder holder;  if(convertView == null) {   convertView = View.inflate(mContext, R.layout.item_imageloader_listview, null);   holder = new Viewholder(convertView);   convertView.setTag(holder);  }else {   holder = (Viewholder) convertView.getTag();  }  holder.name.setText("item"+(position + 1));   imageLoader.displayImage(Constants.IMAGES[position],holder.iv,options);   return convertView; }  class Viewholder{  @Bind(R.id.iv_imageloader_listview)  ImageView iv;   @Bind(R.id.tv_imageloader_name)  TextView name;   public Viewholder(View view) {   ButterKnife.bind(this,view);  } }}

3.ImageLoader_在ViewPager中使用

public class ImageloaderViewpagerAdapter extends PagerAdapter {  private Context mContext; private final ImageLoader imageLoader; private DisplayImageOptions options = new DisplayImageOptions.Builder()   .showImageForEmptyUri(R.drawable.atguigu_logo) // 設置圖片Uri為空或是錯誤的時候顯示的圖片   .showImageOnFail(R.drawable.atguigu_logo)  // 設置圖片加載或解碼過程中發生錯誤顯示的圖片   .resetViewBeforeLoading(true)    // 設置圖片在下載前是否重置,復位   .cacheOnDisc(true)       // 設置下載的圖片是否緩存在SD卡中   .imageScaleType(ImageScaleType.EXACTLY)  // 設置圖片以如何的編碼方式顯示   .bitmapConfig(Bitmap.Config.RGB_565)  // 設置圖片的解碼類型   .displayer(new FadeInBitmapDisplayer(300)) // 設置圖片漸變顯示   .build(); ;  public ImageloaderViewpagerAdapter(Context context) {  mContext = context;   // 初始化Imageloader  imageLoader = ImageLoader.getInstance(); }  @Override public Object instantiateItem(ViewGroup container, int position) {  // 添加布局文件  View view = View.inflate(mContext, R.layout.item_imageloader_viewpager, null);   // 獲取控件對象  ImageView iv = (ImageView) view.findViewById(R.id.iv_imageloader_viewpager);   // 顯示圖片  imageLoader.displayImage(Constants.IMAGES[position], iv, options);   ((ViewPager) container).addView(view, 0);   return view; }  @Override public void destroyItem(ViewGroup container, int position, Object object) {  ((ViewPager) container).removeView((View) object); }  @Override public int getCount() {  return Constants.IMAGES.length; }  @Override public boolean isViewFromObject(View view, Object object) {  return view.equals(object); }}

3.ImageLoader 內存溢出解決辦法

1)減少線程池中線程的個數,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推薦配置1-5。
2)在DisplayImageOptions選項中配置bitmapConfig為Bitmap.Config.RGB_565,因為默認是ARGB_8888, 使用RGB_565會比使用ARGB_8888少消耗2倍的內存。
3)在ImageLoaderConfiguration中配置圖片的內存緩存為memoryCache(new WeakMemoryCache()) 或者不使用內存緩存。
4)在DisplayImageOptions選項中設置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临海市| 甘洛县| 宁城县| 两当县| 德钦县| 锡林郭勒盟| 崇礼县| 普安县| 门源| 屯门区| 济阳县| 金川县| 石嘴山市| 舞钢市| 嘉禾县| 洪洞县| 云南省| 萝北县| 灵武市| 阆中市| 遵化市| 台前县| 酒泉市| 涿鹿县| 鄂温| 油尖旺区| 葵青区| 车致| 庐江县| 广水市| 色达县| 株洲市| 花莲县| 和政县| 长白| 明溪县| 波密县| 依兰县| 濉溪县| 太仆寺旗| 于都县|