Android开发---AUIL图片加载框架的使用

AUIL图片加载框架

使用步骤

注意:要显示imageloader的圆角效果 imageview必须固定宽高

1.导入jar包
universal-image-loader.jar

第一个就可以了

2.添加权限

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:name=".MyApplication"

3.添加Application(并且在清单文件注册)

---------------------------------------Application配置(常规必写)---------------------------------------------

public class MyApplicationextends Application {

@Override

public void onCreate() {

//执行全局设置(遭遇任何的imageLoader的调用)

//创建默认的ImageLoader配置参数

//ImageLoaderConfigurationconfiguration = ImageLoaderConfiguration.createDefault(this);

//Initialize Imageloader withconfiguration

//ImageLoader.getInstance().init(configuration);

---------------------------------------ImageLoader配置(常规必写)---------------------------------------------

ImageLoaderConfigurationconfig=

newImageLoaderConfiguration.Builder(getApplicationContext())

.threadPriority(Thread.NORM_PRIORITY- 2)//线程的优先级别,有限避免oom

.denyCacheImageMultipleSizesInMemory()//拒绝不同的缓存大小

.diskCacheFileNameGenerator(newMd5FileNameGenerator())//对临时文件名加密

.diskCacheSize(50 *1024 * 1024) // 50 Mb SDCard上的缓存空间

.tasksProcessingOrder(QueueProcessingType.LIFO)//任务队列采取LIFO

.writeDebugLogs()//调试日志-可在项目发布时删除

.build();// 构建配置

ImageLoader.getInstance().init(config);

    }

}

 

<application

android:name=".application.MyApplication"

4.设置

//声明监听器

private ImageLoadingListeneranimateFirstListener = new AnimateFirstDisplayListener();

//声明设置类

private DisplayImageOptionsoptions;

public ListAdapter(Contextcontext) {

        this.inflater =LayoutInflater.from(context);

-------------------------------------------ImageLoader选项(常规必写)-------------------------------------------

三个必写项封装的方法

        // 图片具体配置

options=new DisplayImageOptions.Builder()

               .showImageOnLoading(R.drawable.ic_stub)// 加载时

               .showImageForEmptyUri(R.drawable.ic_empty)

                .showImageOnFail(R.drawable.ic_empty)

                .resetViewBeforeLoading(true)//在加载前重置View

                .cacheInMemory(false)

                .cacheOnDisk(true)

                .considerExifParams(true)

               //.displayer(newFadeInBitmapDisplayer(1000))// 淡入特效时//.displayer(newCircleBitmapDisplayer(Color.WHITE, 5))// 圆形特效

.build();

}

 

// 设置图片显示的具体参数

        // 图片的显示设置(选项)

        DisplayImageOptions options = newDisplayImageOptions.Builder()

          .showImageOnLoading(R.drawable.ic_stub)// 加载时的图标

          .showImageForEmptyUri(R.drawable.ic_error)//地址错误时的图标

          .showImageOnFail(R.drawable.ic_empty)//加载失败的图标

          //.resetViewBeforeLoading(true)// 在加载前重置View

           .cacheInMemory(false)// 把它关上,可以避免OOM

           .cacheOnDisk(true)// 在SDCard上缓存

          .imageScaleType(ImageScaleType.EXACTLY)//拉伸类型:确切拉伸,避免OOM

          .bitmapConfig(Bitmap.Config.RGB_565)//图片的解码格式ARGB_8888(透明),ARGB_4444,RGB_565避免OOM

           .considerExifParams(true)// 考虑JPEG的旋转

           .displayer(newFadeInBitmapDisplayer(1000))// 淡入特效时间

          //.displayer(newRoundedBitmapDisplayer(50))// 圆角矩形,参数=弧度

            .displayer(newRoundedVignetteBitmapDisplayer(50,10))// 圆角矩形

            .build();

 

 

5.显示图片
(1)URI规范:

 String uri = "http://site.com/image.png";// 图片来自网络

 String uri ="file:///mnt/sdcard/image.png"; // 图片来自 SD card

 String uri ="content://media/audio/album/13"; // 图片来自 content provider

 String uri = "assets://image.png";// 图片来自 assets文件夹

 String uri = "drawable://" +R.drawable.image; // 图片来自 drawable文件夹

 

(2)参数类型

ImageLoader.getInstance().displayImage(

uri,        //URI

imageView,//要显示图片的控件

options,    //[ 设置 ]

listener,   //[ 监听器1 ]

progressListener    //[ 监听器2 ]

)

 

ImageLoader.getInstance().displayImage(
//URI
java.lang.String uri,
//要显示图片的控件
android.widget.ImageView imageView,
//[ 设置 ]
com.nostra13.universalimageloader.core.DisplayImageOptions options,
//[ 监听器 1 ]
com.nostra13.universalimageloader.core.listener.ImageLoadingListene
r listener,
//[ 监听器 2 ]
com.nostra13.universalimageloader.core.listener.ImageLoadingProgres
sListener progressListener
)

6.示例

1.

ImageLoader.getInstance().displayImage(map.get("uri"),holder.logo, options, new SimpleImageLoadingListener() {

@Override

public voidonLoadingStarted(String imageUri, View view) {

holder.progressBar.setProgress(0);

holder.progressBar.setVisibility(View.VISIBLE);

holder.progressBar.setBackgroundColor(Color.RED);

                LinearLayout.LayoutParamsparams = new LinearLayout.LayoutParams(10, 30);

holder.box.setLayoutParams(params);

            }

 

            @Override

public voidonLoadingFailed(String imageUri, View view, FailReason failReason) {

holder.progressBar.setVisibility(View.GONE);

            }

 

            @Override

public voidonLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

               holder.progressBar.setVisibility(View.GONE);//下载完成取消进度条

holder.box.setVisibility(View.GONE);

            }

        }, new ImageLoadingProgressListener() {

            //进行监听下载进度

            @Override

public void onProgressUpdate(StringimageUri, View view, int current, int total) {

int pro = Math.round(100.0f *current / total);

holder.progressBar.setProgress(pro);

                LinearLayout.LayoutParamsparams = new LinearLayout.LayoutParams(10 * pro, 30);

holder.box.setLayoutParams(params);

Log.i("wxs",imageUri + ":" + pro);

            }

        });

 

2.监听器

 

private staticclass AnimateFirstDisplayListener extends SimpleImageLoadingListener {

static finalList<String> displayedImages = Collections.synchronizedList(newLinkedList<String>());

 

        @Override

public voidonLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

if (loadedImage != null) {

                ImageView imageView =(ImageView) view;

boolean firstDisplay =!displayedImages.contains(imageUri);

if (firstDisplay) {

FadeInBitmapDisplayer.animate(imageView,1500);

displayedImages.add(imageUri);

                }

            }

        }

    }

 

7.必选项封装的方法
(1)Util

/**

     * ImageLoader的全局参数配置

     *

     * @param context

     */

public static voidinitLoader(Context context) {

        // ImageLoader的全局参数配置 建造者模式

        ImageLoaderConfiguration config = new

ImageLoaderConfiguration.Builder(context)

               .threadPriority(Thread.NORM_PRIORITY - 2)// 线程的优先级别

               .denyCacheImageMultipleSizesInMemory() // 拒绝不同的缓存大小

                .diskCacheFileNameGenerator(newMd5FileNameGenerator())// 对临时文件名加密

                .diskCacheSize(50 * 1024 *1024) // 50 Mb SDCard上的缓存空间

               .tasksProcessingOrder(QueueProcessingType.LIFO)// 任务队列采取LIFO

                .writeDebugLogs() //调试日志-可在项目发布时删除

                .build();// 构建配置

        //初始化ImageLoader 单例模式

ImageLoader.getInstance().init(config);

    }

 

    /**

     * 图片显示选项的设置

     *

     * @return

     */

public staticDisplayImageOptions getImageOption() {

        DisplayImageOptions options = newDisplayImageOptions.Builder()

               .showImageOnLoading(R.drawable.ic_stub)

               .showImageForEmptyUri(R.drawable.ic_empty)

               .showImageOnFail(R.drawable.ic_error)

                .cacheInMemory(true)

                .cacheOnDisk(true)

                .considerExifParams(true)

                //.displayer(newCircleBitmapDisplayer(Color.WHITE, 5))//圆形特效

                .build();

return options;

    }

 

(2)Application

publicclass MyApplication extends Application {
@Override
public voidonCreate() {
super.onCreate();
//ImageLoader的全局参数配置 建造者模式
Utils.initLoader(getApplicationContext());
}
}

 

<application
android:name=".MyApplication"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章