【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(三)

简介: 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(三)

2. GridView中使用 UIL









GridView 中使用 UIL :


-- 核心代码 : 主要是在 GridView 中的适配器中使用 UIL;


-- 设置展示选项 :


private DisplayImageOptions options;
  options = new DisplayImageOptions.Builder()
      .showImageOnLoading(R.drawable.ic_stub)  //设置加载时显示的图片
      .showImageForEmptyUri(R.drawable.ic_empty)  //设置 Uri 为 空时显示的图片
      .showImageOnFail(R.drawable.ic_error)  //设置加载失败显示的图片
      .cacheInMemory(true)      //设置内存缓存
      .cacheOnDisk(true)        //设置磁盘缓存
      .considerExifParams(true)     //考虑相机参数
      .bitmapConfig(Bitmap.Config.RGB_565)  //设置解码参数
      .build();



-- 设置加载 处理 监听器 : 在加载图片时 可以设置加载监听器;


//加载 并 显示图片, 设置加载监听器 监听 开始加载 加载失败 加载完成 事件
    ImageLoader.getInstance()
      .displayImage(IMAGE_URLS[position], holder.imageView, options, new SimpleImageLoadingListener() {
      @Override
      public void onLoadingStarted(String imageUri, View view) {
        holder.progressBar.setProgress(0);
        holder.progressBar.setVisibility(View.VISIBLE);
      }
      @Override
      public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
        holder.progressBar.setVisibility(View.GONE);
      }
      @Override
      public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        holder.progressBar.setVisibility(View.GONE);
      }
      }, new ImageLoadingProgressListener() {
      @Override
      public void onProgressUpdate(String imageUri, View view, int current, int total) {
        holder.progressBar.setProgress(Math.round(100.0f * current / total));
      }
      });



-- 完整的 GridView 适配器代码 :


private static class ImageAdapter extends BaseAdapter {
  private static final String[] IMAGE_URLS = Constants.IMAGES_CN;
  private LayoutInflater inflater;
  private DisplayImageOptions options;
  ImageAdapter(Context context) {
    inflater = LayoutInflater.from(context);
    options = new DisplayImageOptions.Builder()
      .showImageOnLoading(R.drawable.ic_stub)  //设置加载时显示的图片
      .showImageForEmptyUri(R.drawable.ic_empty)  //设置 Uri 为 空时显示的图片
      .showImageOnFail(R.drawable.ic_error)  //设置加载失败显示的图片
      .cacheInMemory(true)      //设置内存缓存
      .cacheOnDisk(true)        //设置磁盘缓存
      .considerExifParams(true)     //考虑相机参数
      .bitmapConfig(Bitmap.Config.RGB_565)  //设置解码参数
      .build();
  }
  @Override
  public int getCount() {
    return IMAGE_URLS.length;
  }
  @Override
  public Object getItem(int position) {
    return null;
  }
  @Override
  public long getItemId(int position) {
    return position;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    View view = convertView;
    if (view == null) {
    view = inflater.inflate(R.layout.item_grid_image, parent, false);
    holder = new ViewHolder();
    assert view != null;
    holder.imageView = (ImageView) view.findViewById(R.id.image);
    holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
    view.setTag(holder);
    } else {
    holder = (ViewHolder) view.getTag();
    }
    //加载 并 显示图片, 设置加载监听器 监听 开始加载 加载失败 加载完成 事件
    ImageLoader.getInstance()
      .displayImage(IMAGE_URLS[position], holder.imageView, options, new SimpleImageLoadingListener() {
      @Override
      public void onLoadingStarted(String imageUri, View view) {
        holder.progressBar.setProgress(0);
        holder.progressBar.setVisibility(View.VISIBLE);
      }
      @Override
      public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
        holder.progressBar.setVisibility(View.GONE);
      }
      @Override
      public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        holder.progressBar.setVisibility(View.GONE);
      }
      }, new ImageLoadingProgressListener() {
      @Override
      public void onProgressUpdate(String imageUri, View view, int current, int total) {
        holder.progressBar.setProgress(Math.round(100.0f * current / total));
      }
      });
    return view;
  }
  static class ViewHolder {
    ImageView imageView;
    ProgressBar progressBar;
  }
  }







-- 显示效果 :


 image.png


目录
相关文章
|
24天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
52 1
|
4月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
184 0
|
4月前
|
Android开发
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
74 1
|
3月前
|
存储 算法 安全
AVB数据解析:Android verified boot 2.0 vbmeta 数据结构解析
AVB数据解析:Android verified boot 2.0 vbmeta 数据结构解析
143 0
|
30天前
|
监控 Linux 调度
【Linux 应用开发 】Linux 下应用层线程优先级管理解析
【Linux 应用开发 】Linux 下应用层线程优先级管理解析
48 0
|
1月前
|
编译器 开发工具 Android开发
Android 12 新特性深度解析
【2月更文挑战第15天】 随着移动操作系统的不断进化,Android 12带来了一系列创新功能与性能提升。本文将深入剖析Android 12的核心新特性,包括隐私仪表盘、通知管理、设备控制以及性能优化等方面,为开发者和用户提供全面的更新指南。
|
6月前
|
SQL 人工智能 移动开发
Android应用启动流程:从启动到可交互的过程解析
Android应用启动流程:从启动到可交互的过程解析
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0
|
4月前
|
Android开发 容器
[Android]View的事件分发机制(源码解析)
[Android]View的事件分发机制(源码解析)
37 0
|
4月前
|
SQL 数据库 数据安全/隐私保护
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
60 0

推荐镜像

更多