ImageLodaderdemo2 图片框架的简单应用

来源:互联网 发布:linux 自动发现新硬盘 编辑:程序博客网 时间:2024/06/05 04:15

Mainactivity

package com.example.imageloaderdemo2;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;

public class MainActivity extends AppCompatActivity {

    private ImageView ivIcon;
    //图片地址
    private String path = "http://img.mp.itc.cn/upload/20161022/03229584d7164a6e88c0669c0975ba77_th.jpeg";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ivIcon = (ImageView) findViewById(R.id.ivIcon);

        //自定义配置
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//让图片进行内存缓存
                .cacheOnDisk(true)//让图片进行sdcard缓存
                .showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误
                .showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片
                .showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片
                .build();

        //ImageLoader.getInstance().loadImage(path,options,new Ima);//加载图片
        //参数1:加载的图片地址
        //参数2:将图片设置到那个图片控件上面
        //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)
        ImageLoader.getInstance().displayImage(path, ivIcon, options);

    }
}

MyApplication

package com.example.imageloaderdemo2;

import android.app.Application;
import android.os.Environment;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.io.File;


public class MyApplication extends Application {


    @Override
    public void onCreate() {
        super.onCreate();
        //当你打开这个APP的时候,他首先会被执行,优先于Activity

        String path = Environment.getExternalStorageDirectory().getPath()+"/"+"Pictrues";
        File file = new File(path);

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(480,800)//配置内存缓存图片的尺寸
                //.diskCacheExtraOptions() bug 不推介你手动去配置
                .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小  例如 : 2* 1024 * 1024 = 2MB
                .threadPoolSize(3)//配置加载图片的线程数
                .threadPriority(100)//配置线程的优先级
                .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
                .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
                .diskCacheFileCount(20)//配置sdcard缓存文件的数量
                .build();//配置构建完成

        ImageLoader.getInstance().init(config);

    }
}

权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.imageloaderdemo2">

    <!--android:name=".MyApplication" 一定要配置-->

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:name=".MyApplication"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>