• ImageLoader使用


    第一步: 初始化的配置

      实现自定义的MyApplication类,并初始化ImageLoader

    public class MyApplication extends Application {  
       @Override  
       public void onCreate() {  
           super.onCreate();  
             ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())  
                   .threadPriority(Thread.NORM_PRIORITY - 2)  
                   .denyCacheImageMultipleSizesInMemory()  
                   .discCacheFileNameGenerator(new Md5FileNameGenerator())  
                   .tasksProcessingOrder(QueueProcessingType.LIFO)  
                   .enableLogging() // Not necessary in common  
                   .build();  
           // //全局初始化 ,默认的配置 ,也可以使用默认的配置
          //  ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
           ImageLoader.getInstance().init(config);    //  1 . 初始化配置信息
               
        }
    }

    第二步 : 设置图片的显示类型 DisplayImageOptions

        在要显示图片的时候设置

    DisplayImageOptions   options = new DisplayImageOptions.Builder()  
                .showStubImage(R.drawable.ic_stub)          // 设置图片下载期间显示的图片  
                .showImageForEmptyUri(R.drawable.ic_empty)  // 设置图片Uri为空或是错误的时候显示的图片  
                .showImageOnFail(R.drawable.ic_error)       // 设置图片加载或解码过程中发生错误显示的图片      
                .cacheInMemory(true)                        // 设置下载的图片是否缓存在内存中  
                .cacheOnDisc(true)                          // 设置下载的图片是否缓存在SD卡中  
                .displayer(new RoundedBitmapDisplayer(20))  // 设置成圆角图片  
                .build();                                   // 创建配置过得DisplayImageOption对象  

    第三步 : 使用

          /** 
                 * 显示图片 
                 * 参数1:图片url 
                 * 参数2:显示图片的控件 
                 * 参数3:显示图片的设置 
                 * 
                 */  
        // 第一种:  
     ImageLoader.getInstance().displayImage(url, holder.image, options);  
    
        //第二种 四个参数
                /** 
                 *
                 * 参数1:图片url 
                 * 参数2:显示图片的控件 
                 * 参数3:显示图片的设置 
                 * 参数4:监听器 
                 */  
            ImageLoader.getInstance().displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {  
                    @Override  
                    public void onLoadingStarted(String imageUri, View view) {  // 加载时候
                        spinner.setVisibility(View.VISIBLE);  //显示进度条
                    }  
                    @Override  
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {  
                        String message = null;  
                        switch (failReason.getType()) {     // 获取图片失败类型  
                            case IO_ERROR:              // 文件I/O错误  
                                message = "Input/Output error";  
                                break;  
                            case DECODING_ERROR:        // 解码错误  
                                message = "Image can't be decoded";  
                                break;  
                            case NETWORK_DENIED:        // 网络延迟  
                                message = "Downloads are denied";  
                                break;  
                            case OUT_OF_MEMORY:         // 内存不足  
                                message = "Out Of Memory error";  
                                break;  
                            case UNKNOWN:               // 原因不明  
                                message = "Unknown error";  
                                break;  
                        }  
                        Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();  
      
                        spinner.setVisibility(View.GONE);  
                    }  
      
                    @Override  
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {  //
                        spinner.setVisibility(View.GONE);       // 不显示圆形进度条  
                    }  
                });  

    其他的一些配置 :设置滑动时候不加载图片

      // 设置滑动不加载 pauseOnScroll(滑动不加载) 传 true     pauseOnScroll(猛划不加载) 传true
         listView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), pauseOnScroll, pauseOnScroll));  
         gridView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), pauseOnScroll, pauseOnFling));

    OutOfMemoryError 解决方法

      减少线程池中线程的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推荐配置1-5
      在DisplayImageOptions选项中配置bitmapConfig为Bitmap.Config.RGB_565,因为默认是ARGB_8888,使用RGB_565会比使用ARGB_8888少消耗2倍的内存
      在ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new WeakMemoryCache()) 或者不使用内存缓存
      在DisplayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)

    本地图片的使用 , 转换成url

      //图片来源于Content provider  
      String contentprividerUrl = "content://media/external/audio/albumart/13";  
      //图片来源于assets  
      String assetsUrl = Scheme.ASSETS.wrap("image.png");  
      //图片来源于  
      String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image"); 

    附录 :
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  • 相关阅读:
    百度网盘提交提取密码:根据cookies获取loginId 的js
    javaScript 中的私有,共有,特权属性和方法
    centos7 设置时区和时间
    centos 7 su jenkins 切换不过去
    在宿主机查看docker使用cpu、内存、网络、io情况
    Centos6.8通过yum安装mysql5.7 centos7.5适用
    docker-compose 安装redis sentinel,共享主机网络模式
    spring boot通过Interceptor和HandlerMethodReturnValueHandler实现统一处理为controller返回对象统计处理时间
    centos 7.5安装docker-CE 18
    centos查看系统版本信息
  • 原文地址:https://www.cnblogs.com/java-g/p/4141836.html
Copyright © 2020-2023  润新知