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"


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