zoukankan      html  css  js  c++  java
  • Android学习笔记--universal_image_loader图片加载框架

    昨天学习了universal_image_loader图片加载框架,今天把所学的和大家分享一下,

    首先需要新建一个APP文件继承与Application

    代码如下

      1 package com.wuxianedu.auniversalimageloader;
      2 
      3 import android.app.Application;
      4 import android.graphics.Bitmap;
      5 import android.os.Handler;
      6 import android.util.Log;
      7 
      8 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
      9 import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
     10 import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
     11 import com.nostra13.universalimageloader.core.DisplayImageOptions;
     12 import com.nostra13.universalimageloader.core.ImageLoader;
     13 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
     14 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
     15 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
     16 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
     17 import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
     18 import com.nostra13.universalimageloader.utils.StorageUtils;
     19 
     20 import java.io.File;
     21 
     22 /**
     23  * Created by terry-song on 2016/10/7.
     24  *
     25  * 使用universal-imageloader
     26  * 1.引入
     27  * 2.初始化ImageLoader
     28  * 3.调用方法加载图片
     29  */
     30 
     31 public class App extends Application {
     32 
     33     private static final String TAG = "--Main--";
     34 
     35     @Override
     36     public void onCreate() {
     37         super.onCreate();
     38 
     39 //        createDefaultImageLoaderConfiguration();
     40 
     41             DisplayImageOptions options = new DisplayImageOptions.Builder()
     42                     .showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片
     43                     .showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片
     44                     .showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片
     45                     .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
     46                     .delayBeforeLoading(200)  // 下载前的延迟时间
     47                     .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
     48                     .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中
     49                     .considerExifParams(false) // default
     50                     .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
     51                     .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
     52                     //                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)
     53                     .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间
     54                     //.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
     55                     .handler(new Handler()) // default
     56                     .build();
     57 
     58             //设置图片缓存路径
     59             File cacheDir = StorageUtils.getCacheDirectory(this);
     60 
     61             Log.e(TAG, "onCreate: cacheDir===="+cacheDir );
     62             //自定义ImageLoaderConfiguration配置
     63             ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
     64                     .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高
     65     //                .diskCacheExtraOptions(480, 800, null)  // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个
     66                     .threadPoolSize(4) // default  线程池内加载的数量
     67     //                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
     68                     .tasksProcessingOrder(QueueProcessingType.FIFO) // default
     69                     .denyCacheImageMultipleSizesInMemory()
     70                     .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
     71                     .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
     72                     .memoryCacheSizePercentage(13) // default
     73                     //可以自定义缓存路径
     74                     .diskCache(new UnlimitedDiskCache(cacheDir))
     75                     .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值
     76     //                .diskCacheFileCount(100)  // 可以缓存的文件数量
     77                     // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
     78                     .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
     79     //                 .connectTimeout (5 s), readTimeout (30 s)  //超时时间
     80                     //第二个参数:连接超时时间,第三个参数:读取超时时间
     81                     .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))
     82                     .defaultDisplayImageOptions(options)
     83                     .writeDebugLogs() // 打印debug log
     84                     .build(); //开始构建
     85 
     86             //初始化ImageLoader
     87             ImageLoader.getInstance().init(configuration);
     88 
     89     }
     90 
     91     /**
     92      * 创建默认的ImageLoaderConfiguration
     93      * 对ImageLoader进行初始化
     94      */
          
         //默认的初始化方法,上面那些事自定义的 95 private void createDefaultImageLoaderConfiguration() { 96 //创建默认的ImageLoaderConfiguration 97 ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this); 98 //初始化ImageLoader 99 ImageLoader.getInstance().init(configuration); 100 } 101 }

    之后新建一个Java文件

    WXHKdemo.java

     1 package com.wuxianedu.auniversalimageloader;
     2 
     3 import android.graphics.Bitmap;
     4 import android.os.Handler;
     5 import android.widget.ImageView;
     6 
     7 import com.nostra13.universalimageloader.core.DisplayImageOptions;
     8 import com.nostra13.universalimageloader.core.ImageLoader;
     9 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
    10 import com.nostra13.universalimageloader.core.assist.ImageSize;
    11 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
    12 import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
    13 
    14 /**
    15  * Created by Administrator on 2016/10/7.
    16  */
    17 public class WXHKdemo {
    18     private static WXHKdemo wxhlImageLoader;
    19     //获取第三方的ImageLoader
    20     private ImageLoader imageLoader;
    21     //初始化实例
    22     private WXHKdemo(){
    23         //new出来一个实例,来让下面调用不出现空指针,
    24         imageLoader = ImageLoader.getInstance();
    25     }
    26 
    27     /**
    28      * 单例
    29      * @return
    30      */
    31     public static synchronized WXHKdemo getInstance(){
    32 //        return wxhlImageLoader;
    33         if(wxhlImageLoader == null){
    34             wxhlImageLoader = new WXHKdemo();
    35         }
    36         return wxhlImageLoader;
    37 
    38 
    39     }
    40     private DisplayImageOptions options = new DisplayImageOptions.Builder()
    41             .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
    42             .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
    43             .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
    44             .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
    45             .delayBeforeLoading(200)  // 下载前的延迟时间
    46             .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
    47             .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中
    48             .considerExifParams(false) // default
    49             .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
    50             .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
    51 //                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)
    52             .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间
    53 //                .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
    54             .handler(new Handler()) // default
    55             .build();
    56     /**
    57      * 显示图片
    58      * @param url
    59      * @param imageView
    60      */
    61     public void displayHeaderImage(String url, ImageView imageView){
    62         imageLoader.displayImage(url,imageView,options);
    63     }
    64 
    65     /**
    66      * 显示图片,带监听器
    67      *
    68      * @param imageView 组件
    69      *
    70      */
    71     public void displayImage(String imageUrl, ImageView imageView){
    72         imageLoader.displayImage(imageUrl,imageView);
    73     }
    74 
    75     /**
    76      * 加载图片,带监听器
    77      * @param url
    78      * @param imagelo
    79      */
    80     public void loadImage (String url,SimpleImageLoadingListener imagelo){
    81         imageLoader.loadImage(url,imagelo);
    82     }
    83 
    84 
    85     public void loadImage(String url,int gao,int kuan,SimpleImageLoadingListener imagelo){
    86         ImageSize imageSize = new ImageSize(gao,kuan);
    87         imageLoader.loadImage(url,imageSize,imagelo);
    88     }
    89 
    90 }

    调用方法

     1 package com.wuxianedu.auniversalimageloader;
     2 
     3 import android.content.Context;
     4 import android.view.LayoutInflater;
     5 import android.view.View;
     6 import android.view.ViewGroup;
     7 import android.widget.BaseAdapter;
     8 import android.widget.ImageView;
     9 
    10 /**
    11  * Created by terry-song on 2016/9/29.
    12  */
    13 
    14 public class ImageAdapter extends BaseAdapter {
    15 
    16     private final WXHKdemo wxhlImageLoader;
    17     private Context context;
    18     private String[] imageUrls;
    19 
    20     public ImageAdapter(Context context, String[] imageUrls) {
    21         this.context = context;
    22         this.imageUrls = imageUrls;
    23         wxhlImageLoader = WXHKdemo.getInstance();
    24     }
    25 
    26     @Override
    27     public int getCount() {
    28         return imageUrls.length;
    29     }
    30 
    31     @Override
    32     public String getItem(int position) {
    33         return imageUrls[position];
    34     }
    35 
    36     @Override
    37     public long getItemId(int position) {
    38         return position;
    39     }
    40 
    41     @Override
    42     public View getView(int position, View convertView, ViewGroup parent) {
    43         ViewHolder viewHolder;
    44         if(convertView == null){
    45             viewHolder = new ViewHolder();
    46             convertView = LayoutInflater.from(context).inflate(R.layout.item_view,null);
    47             viewHolder.imageView = (ImageView) convertView.findViewById(R.id.iv_id);
    48             convertView.setTag(viewHolder);
    49         }else{
    50             viewHolder = (ViewHolder) convertView.getTag();
    51         }
    52         ImageView imageView = viewHolder.imageView;
    53 
    54         // TODO: 2016/9/29  设置图片
    55         if(position %2 == 0){
    56             //使用之前WXHKdemo里面的方法
    57             wxhlImageLoader.displayImage(imageUrls[position],imageView);
    58         }else{
    59             //使用之前WXHKdemo里面的方法
    60             wxhlImageLoader.displayHeaderImage(imageUrls[position],imageView);
    61         }
    62 
    63 
    64         return convertView;
    65     }
    66 
    67     class ViewHolder {
    68         ImageView imageView;
    69     }
    70 }

    写的有点乱,以后在整理

  • 相关阅读:
    数据结构与算法(4)——python内置数据类型性能
    数据结构与算法(3)——变位词判断问题
    数据结构与算法(2)——算法复杂度O
    数据结构与算法(1)——图灵机计算模型
    R = [obj for obj in recs[imagename] if obj['name'] == classname] KeyError: '007765'
    关于windows下的libtorch配置
    09异常处理
    08多态与异常
    java07接口与继承动手动脑
    java06作业归档
  • 原文地址:https://www.cnblogs.com/langfei8818/p/5943897.html
Copyright © 2011-2022 走看看