欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android框架-Glide(图片加载框架)

程序员文章站 2022-05-14 15:20:27
...

 

1.概述

1.1 定义

 

1.2 官网地址

      GitHub地址:https://square.github.io/picasso

      官网地址:https://bumptech.github.io/glide/

 

1.3 引入方式

      1)gradle方式

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

      2)maven方式

<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>glide</artifactId>
  <version>4.9.0</version>
</dependency>
<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>compiler</artifactId>
  <version>4.9.0</version>
  <optional>true</optional>
</dependency>

1.4 使用方式

 1.4.1 加载指定地址url的图片

Glide.with(fragment)
    .load(url)
    .into(imageView);

1.4.2 加载本地图片

// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

1.4.3 加载应用资源

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

1.4.4 加载二进制流

// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

1.4.5 加载URI对象

// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);

1.4.6 加载带有占位图

      加载占位符目的是在图片还未完全加载出来的时候,提前展示一张图片给用户看。

Glide.with(this).load(url).placeholder(R.drawable.loading).into(imageView);

1.4.7 加载失败,放置占位符

Glide.with(this).load(url).placeholder(R.drawable.loading).error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)//关闭Glide的硬盘缓存机制
     .into(imageView);


//DiskCacheStrategy.NONE: 表示不缓存任何内容。
//DiskCacheStrategy.SOURCE: 表示只缓存原始图片。
//DiskCacheStrategy.RESULT: 表示只缓存转换过后的图片(默认选项)。
//DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。

1.4.8 加载指定格式的图片

Glide.with(this)
     .load(url)
     .asBitmap()//只加载静态图片,如果是git图片则只加载第一帧。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

1.4.9 加载动态图片

Glide.with(this)
     .load(url)
     .asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

1.4.10 加载指定大小的图片

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)//指定图片大小
     .into(imageView);

1.4.11 关闭框架的内存缓存机制

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)  //传入参数为false时,则关闭内存缓存。
     .into(imageView);

1.4.12 关闭硬盘的缓存

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.NONE)     //关闭硬盘缓存操作
     .into(imageView);

//其他参数表示:
//DiskCacheStrategy.NONE: 表示不缓存任何内容。
//DiskCacheStrategy.SOURCE: 表示只缓存原始图片。
//DiskCacheStrategy.RESULT: 表示只缓存转换过后的图片(默认选项)。
//DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。

 

2.案例

2.1 效果图

Android框架-Glide(图片加载框架)

2.1 创建布局

       1)activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <ListView
       android:id="@+id/list_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:padding="10dp"
       android:dividerHeight="10dp"/>

</LinearLayout>

      2)ListView的子item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_gravity="center"
        android:id="@+id/item_imageview"
        android:layout_width="match_parent"
        android:layout_height="160dp" />
</LinearLayout>

2.2 创建Adapter

public class ListViewAdapter extends BaseAdapter {
    private List<String> imageUrlList;
    private Context context;

    public ListViewAdapter(List<String> imageUrlList, Context context){
        this.imageUrlList = imageUrlList;
        this.context = context;
    }

    @Override
    public int getCount() {
        return imageUrlList.size();
    }

    @Override
    public Object getItem(int i) {
        return imageUrlList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        view = LayoutInflater.from(context).inflate(R.layout.item_listview,viewGroup,false);
        ImageView imageView = view.findViewById(R.id.item_imageview);
        //Picasso.get().load(imageUrlList.get(i)).centerCrop().into(imageView);
        Glide.with(view).load(imageUrlList.get(i)).centerCrop().into(imageView);
        return view;
    }
}

2.3 在MainActivity.java中处理逻辑

public class MainActivity extends AppCompatActivity {
    private ListView listView;

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

        listView = findViewById(R.id.list_view);
        listView.setAdapter(new ListViewAdapter(getImageUrlList(),this));

    }

    public ArrayList<String> getImageUrlList(){
        ArrayList<String> imageUrlList = new ArrayList<String>();
        //imageUrlList.add("http://b227.photo.store.qq.com/psb?/V143lpee1YPewU/*hTmGmQVLy1GenQkd0CzeWe2Ieh6MPFxiUiEYek8LZ0!/b/dOMAAAAAAAAA&bo=cgSAAgAAAAAFB9A!&rf=viewer_4");
        //imageUrlList.add("http://b166.photo.store.qq.com/psb?/V143lpee1YPewU/cA5hjDPMWBjg3LcVRm5mlNU5lf8gLGa5Tt8ebHumkdI!/b/dKYAAAAAAAAA&bo=cgSAAgAAAAAFF8A!&rf=viewer_4");
        imageUrlList.add("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1555747060&di=9d2e0c8cc42a342972e27add709c2d41" +
                "&src=http://pic.qiantucdn.com/58pic/25/56/29/58396c9c1a3a4_1024.jpg");
        imageUrlList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1555757144501&di=00680c157e693852b81729d29915ca09" +
                "&imgtype=0&src=http%3A%2F%2Fpic23.nipic.com%2F20120914%2F8596621_201337844000_2.jpg");
        imageUrlList.add("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1555747060&di=9d2e0c8cc42a342972e27add709c2d41" +
                "&src=http://pic.qiantucdn.com/58pic/25/56/29/58396c9c1a3a4_1024.jpg");
        return imageUrlList;
    }

}