Glide:图片加载库
图片加载框架的对比 glide占明显优势
ImageLoader:已经停止了维护
Picasso:无法加载gif(Square公司开发)
Glide:适用于更多的内容表现形式,快,搞笑缓存策略
Fresco:适用于需要高性能加载大量图片的场景
详细教程可以根据:https://mrfu.me/2016/02/27/Glide_Getting_Started/
实例学习:
一:加载资源图片
1:下载glide依赖
com.github.bumptech.glide:glide
2:在Mainifest添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />
3:布局文件
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/iv_test" />
4:activity
ImageView iv = (ImageView)findViewById(R.id.iv_test); Glide.with(this).load(R.mipmap.ic_launcher).into(iv);
运行结果
二:加载uri图片
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.net.Uri; import android.os.Bundle; import android.widget.ImageView; import com.bumptech.glide.Glide; public class MainActivity extends AppCompatActivity { public static final String Resource = "android.resource://"; public static final String Slash = "/"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getImage(); } public void getImage() { int resId = R.mipmap.ic_launcher; Uri uri = Uri.parse(Resource + getPackageName() + Slash + resId); ImageView iv = (ImageView)findViewById(R.id.iv_test); Glide.with(this).load(uri).into(iv); } }
三:加载网络图片
关键代码:
String url = "http://dmimg.5054399.com/allimg/pkm/pk/22.jpg"; ImageView iv = (ImageView)findViewById(R.id.iv_test); Glide.with(this).load(url).into(iv);
具体:
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import com.bumptech.glide.Glide; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String url = "http://dmimg.5054399.com/allimg/pkm/pk/22.jpg"; ImageView iv = (ImageView)findViewById(R.id.iv_test); Glide.with(this).load(url).into(iv); } }
运行结果:
Glide两种裁剪方式
1:fitCenter(默认)
Glide.with(this).load(url).fitCenter().into(iv1);
自适应控件, 不剪裁 ,在不超过控件的前提下,等比 缩放 到 最大 ,居中显示
2:centerCrop
Glide.with(this).load(url).centerCrop().into(iv2);
以填满整个控件为目标,等比缩放,超过控件时将被 裁剪 ( 宽高都要填满 ,所以只要图片宽高比与控件宽高比不同时,一定会被剪裁)
都是通过调用transform方法来对图片进行处理
Glide可以添加一些预处理,如网上图片地址失效加载本地资源
Glide.with(MainActivity.this) //图片地址 .load("url") //图片显示大小 .override(150,150) //剪切方式,这理选择了centerCrop .centerCrop() //加载时预显示的图片,占位 .placeholder(R.drawable.ic_launcher_background) //加载失败后显示的图片 .error(R.drawable.ic_launcher_background) //跳过内存缓存 .skipMemoryCache(true) //磁盘缓存策略 .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imageView);