android glide 如何添加头部
Glide如何添加头部在公司的一些项目中,为了资料的安全性需要在所有的请求中加入头部,那么图片加载也算请求Glide工具类在添加头部的时候会到缓存失效,APP每次都会重新加载图片,图片就会出现闪烁视差package com.tripbay.utilityimport com.bumptech.glide.load.model.GlideUrlimport com.bumptech.glide.lo
·
Glide如何添加头部
在公司的一些项目中,为了资料的安全性需要在所有的请求中加入头部,那么图片加载也算请求
Glide工具类
在添加头部的时候会到缓存失效,APP每次都会重新加载图片,图片就会出现闪烁视差
package com.tripbay.utility
import com.bumptech.glide.load.model.GlideUrl
import com.bumptech.glide.load.model.Headers
import java.net.URL
class GlideUrlUtil : GlideUrl {
private var mHashCode = 0
constructor(url: URL?) : super(url) {}
constructor(url: String?) : super(url) {}
constructor(url: URL?, headers: Headers?) : super(url, headers) {}
constructor(url: String?, headers: Headers?) : super(url, headers) {}
override fun equals(o: Any?): Boolean {
if (o is GlideUrl) {
val other = o
return cacheKey == other.cacheKey && !mapCompare(headers, other.headers)
}
return false
}
override fun hashCode(): Int {
if (mHashCode == 0) {
mHashCode = cacheKey.hashCode()
if (headers != null) {
for (s in headers.keys) {
if (headers[s] != null) {
mHashCode = 31 * mHashCode + headers[s].hashCode()
}
}
}
}
return mHashCode
}
companion object {
private fun mapCompare(map1: Map<String, String?>?, map2: Map<String, String?>?): Boolean {
var differ = false
if (map1 != null && map2 != null) {
if (map1.size == map2.size) {
for ((key, value) in map1) {
val value1 = if (value == null) "" else value
val value2 = if (map2[key] == null) "" else map2[key]!!
if (value1 != value2) {
differ = true
break
}
}
}
} else differ = map1 != null || map2 != null
return differ
}
}
}
Glide 工具类封装
package com.tripbay.utility
import android.content.Context
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.net.Uri
import android.text.TextUtils
import android.webkit.URLUtil
import android.widget.ImageView
import com.bumptech.glide.load.model.GlideUrl
import com.bumptech.glide.load.model.Headers
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import com.tripbay.BuildConfig
import com.tripbay.GlideApp
import com.tripbay.R
import com.tripbay.api.ApiDataManager
/**
* 圖片價值框架
* icez
* 2020-11-12
*/
class LoadImageUtil {
companion object {
fun loadImg(context: Context, url: String?, img: ImageView) {
if (URLUtil.isHttpUrl(url) || URLUtil.isHttpsUrl(url)) {
if (TextUtils.isEmpty(url)) {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.centerCropTransform())
.into(img)
} else {
val header = MyHeader()
val glideUrl: GlideUrl = GlideUrlUtil(url, header)
GlideApp.with(context)
.load(glideUrl)
.apply(RequestOptions.centerCropTransform())
.into(img)
}
} else {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.centerCropTransform())
.into(img)
}
}
fun loadImgBySrcType(context: Context, url: String?, img: ImageView) {
if (URLUtil.isHttpUrl(url) || URLUtil.isHttpsUrl(url)) {
if (TextUtils.isEmpty(url)) {
GlideApp.with(context)
.load(url)
.into(img)
} else {
val header = MyHeader()
val glideUrl: GlideUrl = GlideUrlUtil(url, header)
GlideApp.with(context)
.load(glideUrl)
.into(img)
}
} else {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.centerCropTransform())
.into(img)
}
}
fun loadImg(context: Context, url: Uri?, img: ImageView) {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.centerCropTransform())
.into(img)
}
fun loadImg(context: Context, url: Int, img: ImageView) {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.centerCropTransform())
.into(img)
}
fun loadImgByCircle(context: Context, url: String?, img: ImageView) {
if (TextUtils.isEmpty(url)) {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.circleCropTransform())
.into(img)
} else {
if (URLUtil.isHttpsUrl(url) || URLUtil.isHttpUrl(url)) {
val header = MyHeader()
val glideUrl: GlideUrl = GlideUrlUtil(url, header)
GlideApp.with(context)
.load(glideUrl)
.apply(RequestOptions.circleCropTransform())
.into(img)
} else {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.circleCropTransform())
.into(img)
}
}
}
fun loadImgByCircle(context: Context, url: Uri?, img: ImageView) {
GlideApp.with(context)
.load(url)
.apply(RequestOptions.circleCropTransform())
.into(img)
}
fun loadImgDefaultImg(
context: Context,
url: String?,
img: ImageView,
placeholder: Int = R.drawable.default_userpic,
fallback: Int = R.drawable.default_userpic,
error: Int = R.drawable.default_userpic
) {
if (TextUtils.isEmpty(url)) {
val option = RequestOptions.circleCropTransform()
.placeholder(placeholder)//图片加载出来前,显示的图片
.fallback(fallback) //url为空的时候,显示的图片
.error(error)//图片加载失败后,显示的图片
GlideApp.with(context)
.load(url)
.apply(option)
.into(img)
} else {
val option = RequestOptions.circleCropTransform()
.placeholder(placeholder)//图片加载出来前,显示的图片
.fallback(fallback) //url为空的时候,显示的图片
.error(error)//图片加载失败后,显示的图片
if (URLUtil.isHttpUrl(url) || URLUtil.isHttpsUrl(url)) {
val header = MyHeader()
val glideUrl: GlideUrl = GlideUrlUtil(url, header)
GlideApp.with(context)
.load(glideUrl)
.apply(option)
.into(img)
} else {
GlideApp.with(context)
.load(url)
.apply(option)
.into(img)
}
}
}
}
class MyHeader:Headers{
override fun getHeaders(): MutableMap<String, String> {
var mutableMap = HashMap<String,String>()
mutableMap["X-Version"] = BuildConfig.VERSION_NAME
mutableMap["os"] = "ANDROID"
if (ApiDataManager.get().openTestMode || BuildConfig.DEBUG){
// mutableMap["X-Grayscale-Version"] = "test"
}
return mutableMap
}
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)