网络图片加载显示、保存、更新到图库、分享到微信
开发步骤
思路步骤
安卓10以上:下载图片到私有空间(沙盒),从私有空间复制到公共空间,然后通知相册更新
直接定义好下载的图片路径
通过glide框架下载图片
把下载的图片从沙盒文件中,复制到手机的Pictures公共目录中
相册才可以访问到
安卓10以下:需要文件存储权限,直接存储到相册路径中
先申明文件存储权限
然后定义好图片路径
通过glide框架下载图片
下载完毕后直接通知相册更新即可
代码说明
1、清单文件授权
<uses-permission android:name="android.permission.INTERNET" /><!--联网-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--读-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--写-->
2、Glide加载图片
submit()方法必须在子线程中使用,只会下载图片,不会展示图片
get( ),获取下载到的图片路径
asBitmap(指定为bitmap格式),asFile(指定为File格式)
bitmap = Glide.with(context).asBitmap().load(url).submit().get()
Glide.with(context).load(imageUrl).placeholder(imagePlace).into(this)
3、保存到相册
loadImage(context, imageUrl)//保存到相册
4、分享到微信
UmengShareLib.shareNetPic(context, imageUrl)
5、xml中直接引用url加载
<ImageView
android:id="@+id/iv_picture"
imageUrl="@{url}"
android:layout_width="162dp"
android:layout_height="158dp"
android:layout_gravity="center"
android:layout_marginLeft="65dp"
android:layout_marginRight="65dp"
android:scaleType="centerInside" />
补充工具类
/**
* 获取路径
*/
fun getFilePath(): File {
//版本适配
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//定义路径
File(InitApp.initApp.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)?.absolutePath + "/" + System.currentTimeMillis() + ".png")
} else {
File(
Environment.getExternalStorageDirectory()
.toString() + "/Pictures/sci99" + "/" + System.currentTimeMillis() + ".png"
)
}
}
/**
* 加载图片
*/
fun loadImage(context: Context, url: String,filePath: File?=null) {
var file= filePath ?: getFilePath()
val downloadImage = ImageDownload(
url,
context,
0,
0,
file