PictureSelector
PictureSelector copied to clipboard
Coil 已完美支持
之前在一个已关闭的issue里面回答解决了coil支持的问题,由于里面聊天内容过多,不方便新来搜索coil的查找解决方案,现新开一个issue,用来说明一下: 我这边写了一个CoilEngine,经过测试已经支持大部分的Android版本(API 26~API 30),库地址:https://github.com/ijero/CoilPictureSelector
接入非常方便,根据首页说明,把app下的CoilEngine.kt源码拷贝到自己项目使用即可!
非常感谢作者提供PictureSelector这么好用的图片选择库!
我写的,借楼分享一波,相互借鉴
class CoilEngine private constructor() : ImageEngine {
override fun loadImage(context: Context, url: String, imageView: ImageView) {
imageView.load(url)
}
override fun loadImage(context: Context, url: String, imageView: ImageView, longImageView: SubsamplingScaleImageView?, callback: OnImageCompleteCallback?) {
imageView.load(url) {
target(
onStart = {
callback?.onShowLoading()
},
onSuccess = {
callback?.onHideLoading()
it.run {
val eqLongImage = MediaUtils.isLongImg(it.intrinsicWidth, it.intrinsicHeight)
longImageView?.visibility = if (eqLongImage) View.VISIBLE else View.GONE
imageView.visibility = if (eqLongImage) View.GONE else View.VISIBLE
if (eqLongImage) {
// 加载长图
longImageView?.apply {
isQuickScaleEnabled = true
isZoomEnabled = true
setDoubleTapZoomDuration(100)
setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER)
setImage(ImageSource.bitmap(it.toBitmap()), ImageViewState(0F, PointF(0F, 0F), 0))
}
} else {
imageView.load(it)
}
}
},
onError = {
callback?.onHideLoading()
}
)
}
}
override fun loadImage(context: Context, url: String, imageView: ImageView, longImageView: SubsamplingScaleImageView?) {
imageView.load(url) {
target(
onStart = { },
onSuccess = {
it.run {
val eqLongImage = MediaUtils.isLongImg(it.intrinsicWidth, it.intrinsicHeight)
longImageView?.visibility = if (eqLongImage) View.VISIBLE else View.GONE
imageView.visibility = if (eqLongImage) View.GONE else View.VISIBLE
if (eqLongImage) {
// 加载长图
longImageView?.apply {
isQuickScaleEnabled = true
isZoomEnabled = true
setDoubleTapZoomDuration(100)
setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER)
setImage(ImageSource.bitmap(it.toBitmap()), ImageViewState(0F, PointF(0F, 0F), 0))
}
} else {
imageView.load(it)
}
}
},
onError = { }
)
}
}
override fun loadFolderImage(context: Context, url: String, imageView: ImageView) {
imageView.load(url) {
size(180, 180)
placeholder(R.drawable.picture_image_placeholder)
RoundedCornersTransformation(8F.dp)
}
}
override fun loadAsGifImage(context: Context, url: String, imageView: ImageView) {
val imageLoader = ImageLoader.Builder(context).componentRegistry {
if (SDK_INT >= 28) {
add(ImageDecoderDecoder(context))
} else {
add(GifDecoder())
}
}.build()
imageView.load(url, imageLoader)
}
override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
imageView.load(url) {
size(200, 200)
placeholder(R.drawable.picture_image_placeholder)
RoundedCornersTransformation(8F.dp)
}
}
companion object {
val instance: CoilEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { CoilEngine() }
}
}
之前在一个已关闭的issue里面回答解决了coil支持的问题,由于里面聊天内容过多,不方便新来搜索coil的查找解决方案,现新开一个issue,用来说明一下: 我这边写了一个CoilEngine,经过测试已经支持大部分的Android版本(API 26~API 30),库地址:https://github.com/ijero/CoilPictureSelector
接入非常方便,根据首页说明,把app下的CoilEngine.kt源码拷贝到自己项目使用即可!
非常感谢作者提供PictureSelector这么好用的图片选择库!
视频地址无法加载封面是什么原因呢?
之前在一个已关闭的issue里面回答解决了coil支持的问题,由于里面聊天内容过多,不方便新来搜索coil的查找解决方案,现新开一个issue,用来说明一下: 我这边写了一个CoilEngine,经过测试已经支持大部分的Android版本(API 26~API 30),库地址:https://github.com/ijero/CoilPictureSelector 接入非常方便,根据首页说明,把app下的CoilEngine.kt源码拷贝到自己项目使用即可! 非常感谢作者提供PictureSelector这么好用的图片选择库!
视频地址无法加载封面是什么原因呢?
https://github.com/ijero/CoilPictureSelector 已经更新,支持视频缩略图
@ijero 大佬,PictureSelector v3.0.3 新版的能否适配一下呢?
所以 请问选择图片后怎么用coil显示 我显示不了