Android-Universal-Image-Loader三…

来源:互联网 发布:各行业薪水 知乎 编辑:程序博客网 时间:2024/06/05 20:42
public class MyApplication extends Application {

    @Override
    public void onCreate(){
       super.onCreate();

       String path =Environment.getExternalStorageDirectory();

       File cacheDir = new File(path);

       //希望有缓存,指明缓存的路径
       ImageLoaderConfiguration config = newImageLoaderConfiguration.Builder(this)
              //指明内存缓存要缓存多少*多少像素图片 480 * 800
             .memoryCacheExtraOptions(480,800)
              //指明线程优先级
              .threadPriority(100)
              //配置多少个线程在后台加载图片
              .threadPoolSize(3)
              //指明图片sdcard缓存,缓存到什么地方
              .diskCache(newUnlimitedDiskCache(cacheDir))
              //限定一下内存缓存的大小 在内存缓存当中缓存2MB的大小图片
              .memoryCacheSize(2 * 1024 *1024)
              //在sdcard缓存多少MB的图片
              .diskCacheSize(50 * 1024 *1024)
              //指明图片文件名(MD5)为了避免有重复的图片
             .diskCacheFileNameGenerator(new Md5FileNameGenerator())
              .build();
//构建加载图片配置
       ImageLoader.getInstance().init(config);

    }
}

public class MainActivity extends AppCompatActivity {

    private GridViewgv;

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

       gv = (GridView) findViewById(R.id.gv);

       gv.setAdapter(new MyBaseAdapter());
    }
}

class MyBaseAdapter extends BaseAdapter{

       private DisplayImageOptions options;

       public MyBaseAdapter(){
         options = newDisplayImageOptions.Builder()
                 //对图片进行sdcard缓存
                 .cacheOnDisk(true)
                 //是否对图片进行内存缓存
                 .cacheInMemory(true)
                 //配置下载网络图片失败的图片
             .showImageOnFail(R.mipmap.ic_error)
              //配置一个正在加载图片时候显示的一张默认图片
             .showImageOnLoading(R.mipmap.loading)
             //当图片地址为空的时候,会显示你默认配置的图片
             .showImageForEmptyUri(R.mipmap.ic_empty)
              //将图片裁剪成圆形图片
              //.displayer(newCircleBitmapDisplayer())
              //将图片裁剪成圆角矩形
              .displayer(newRoundedBitmapDisplayer(50))
                 .build();
       }


       @Override
       public int getCount() {
           returnConstants.images.length;
       }

       @Override
       public Object getItem(int position) {
           returnnull;
       }

       @Override
       public long getItemId(int position) {
           return0;
       }

       @Override
       public View getView(int position, ViewconvertView, ViewGroup parent) {

           ViewHolderviewHolder;

          if(convertView == null){
              viewHolder = newViewHolder();
              convertView =convertView.inflate(MainActivity.this,R.layout.item,null);

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

             convertView.setTag(viewHolder);

          }else{

              viewHolder = (ViewHolder)convertView.getTag();

           }

           //加载图片         ImageLoader.getInstance().displayImage(Constants.images[position],viewHolder.ivIcon,options);
           returnconvertView;
       }


       class ViewHolder{
           ImageViewivIcon;
       }
    }