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

 

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 效果图

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;
    }

}

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值