Android Glide图片框架的使用

Posted 森然献凉i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Glide图片框架的使用相关的知识,希望对你有一定的参考价值。

介绍:Glide是Google推荐的一套快速高效的图片加载框架,功能强大且使用方便

基本使用

添加Glide依赖

    //Glide
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

注册权限(网络权限和访问SD卡的权限)

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

在手机上展示一张网络图片

        iv=findViewById(R.id.iv);

        Glide.with(this)
                //加载网络图片
          .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcdn.duitang.com%2Fuploads%2Fitem%2F201303%2F29%2F20130329205806_kTTnv.thumb.700_0.jpeg&refer=http%3A%2F%2Fcdn.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1628905531&t=817e2ab0825790a0f4772bc2f22f0998")
                //展示到imageview
                .into(iv);

效果图:

占位符的使用

placeholder 正在请求图片的时候展示的图片

error 如果请求失败的时候展示的图片

fallback 请求为空的时候展示的图片

请求配置

  RequestOptions requestOptions=new RequestOptions()
                .placeholder(R.drawable.zhengzai)//正在请求图片的时候展示的图片
                .error(R.drawable.shibai)//如果请求失败的时候展示的图片
                .fallback(R.drawable.kongde)//请求为空的时候展示的图片
                .override(100,100);//指定加载图片的大小

在.Glide方法中使用.apply方法使用配置

  Glide.with(this)
                //加载网络图片
                .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcdn.duitang.com%2Fuploads%2Fitem%2F201303%2F29%2F20130329205806_kTTnv.thumb.700_0.jpeg&refer=http%3A%2F%2Fcdn.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1628905531&t=817e2ab0825790a0f4772bc2f22f0998")
                //展示到imageview
                .apply(requestOptions)
                .into(iv);

进阶使用

图片的过渡动画效果

创建DrawableCrossFadeFactory对象设置.setCrossFadeEnabled(true),使动画结束后占位符消失

        //占位符完成动画时消失  setCrossFadeEnabled(true),不设置的话占位符仍然保留
        DrawableCrossFadeFactory factory=new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();

在.Glide方法中使用.transition方法设置交叉淡入的动画效果

        Glide.with(this)
                //加载网络图片
                .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcdn.duitang.com%2Fuploads%2Fitem%2F201303%2F29%2F20130329205806_kTTnv.thumb.700_0.jpeg&refer=http%3A%2F%2Fcdn.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1628905531&t=817e2ab0825790a0f4772bc2f22f0998")
                //展示到imageview
                .apply(requestOptions)
                //交叉淡入的动画效果
                .transition(DrawableTransitionOptions.withCrossFade(factory))
                .into(iv);

变换,改变图片的样式

圆角 CircleCrop

四个角度统一指定 RoundedCorners (需要给弧度参数)

四个角度单独指定 GranularRoundedCorners(需要给四个角的弧度参数)

旋转 Rotate(需要给旋转角度参数)

只演示圆角效果

        Glide.with(this)
                //加载网络图片
                .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201603%2F22%2F20160322214908_wSYsj.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1628909386&t=57e3118aa2ac64789ba72e2b53e7677b")
                //展示到imageview
                .apply(requestOptions)
                //交叉淡入的动画效果
                .transition(DrawableTransitionOptions.withCrossFade(factory))
                //图片的变换效果CircleCrop圆角,RoundedCorners四个角度统一指定,GranularRoundedCorners四个角度单独指定,Rotate旋转
                .transform(new CircleCrop())
                .into(iv);

整个MainActivity.java代码

package com.cdw.studyglide;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.bumptech.glide.load.resource.bitmap.Rotate;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;

public class MainActivity extends AppCompatActivity {
    private ImageView iv;

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

        RequestOptions requestOptions=new RequestOptions()
                .placeholder(R.drawable.zhengzai)//正在请求图片的时候展示的图片
                .error(R.drawable.shibai)//如果请求失败的时候展示的图片
                .fallback(R.drawable.kongde)//请求为空的时候展示的图片
                .override(100,100);//指定加载图片的大小

        //占位符完成动画时消失  setCrossFadeEnabled(true),不设置的话占位符仍然保留
        DrawableCrossFadeFactory factory=new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();

        Glide.with(this)
                //加载网络图片
                .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201603%2F22%2F20160322214908_wSYsj.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1628909386&t=57e3118aa2ac64789ba72e2b53e7677b")
                //展示到imageview
                .apply(requestOptions)
                //交叉淡入的动画效果
                .transition(DrawableTransitionOptions.withCrossFade(factory))
                //图片的变换效果CircleCrop圆角,RoundedCorners四个角度统一指定,GranularRoundedCorners四个角度单独指定,Rotate旋转
                .transform(new CircleCrop())
                .into(iv);

    }
}

效果图:

结束,感谢观看

以上是关于Android Glide图片框架的使用的主要内容,如果未能解决你的问题,请参考以下文章

android glide的框架使用

android Glide图片加载框架的初探

聊聊Android优秀的图片加载缓存的开源框架?UILGlidePicasso

Android 进阶图片载入框架之Glide

Android 进阶图片加载框架之Glide

Android中图片加载框架Glide解析2----从源码的角度理解Glide的执行流程