使用库
- Android 动态占位库
- 网路图片加载框架库
- Google推荐 下拉刷新库
- photoImage 支持手势放大缩小的图片预览库【1】
- subsampling-scale-image-view 支持手势放大缩小的图片预览库【2】
- Volley Google推荐网络请求库
- Gson Json序列化处理库
- Android 权限请求库
Api 接口
使用 pixabay-api 作为数据接口
遇到的问题
解决 imageivew 自适应
在 image 中设置adjustViewBounds属性,使得图像自适应
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop" />
解决Fragment 中无法创建 menu 的方法
在 fragment 中 onCreateOptionsMenu 方法创建了menu 但是 menu 并没有显示出来,必须先调用setHasOptionsMenu方法,它才会创建
在 onCreateView 中设置方法
setHasOptionsMenu(true)
瀑布流布局如何在 Adapter 中设置独占一行
ViewHolderS(bind).also {
(it.binding.root.layoutParams as StaggeredGridLayoutManager.LayoutParams).isFullSpan = true
}
Glide 监听加载进度
在此项目中需要获得到 Glide 的加载进度用于停止 shimmerLayout 占位动画
Glide.with(binding.root)
.asBitmap()
.load(getItem(position).largeImageURL)
.placeholder(R.drawable.photo_preview_background)
.listener(object : RequestListener<Bitmap> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Bitmap>,
isFirstResource: Boolean
): Boolean {
//加载失败
return false
}
override fun onResourceReady(
resource: Bitmap,
model: Any,
target: Target<Bitmap>?,
dataSource: DataSource,
isFirstResource: Boolean
): Boolean {
//加载成功
return false.also { binding.shimmerLayout?.stopShimmerAnimation() }
}
})
.into(binding.subsamplingScaleImageView)
未解决的问题
API有限制要求,只能获取多少张图片,当我们获取到定量的图片后,软件并不会给予相关的提示
源码
github: gallery