Android---仿QQ空间动态九宫格图片预览(一)

app:maxSize="9" 或者 nineGridImageView.setMaxSize(int maxSize)

如果最大图片数小于等于0,则没有图片数的限制。

  • 设置显示样式

app:showStyle="fill"nineGridImageView.setShowStyle(int style);

默认样式是网格样式:STYLE_GRID

另外一种样式是:STYLE_FILL

  • 当只有一张图的时候,可以设置其显示大小,不让其显示的过小:

app:singleImgSize="120dp"nineGridImageView.setSingleImgSize(int singleImgSize)

用法

  1. 首先添加依赖

implement ‘com.jaeger.ninegridimageview:library:1.0.2’

implementation ‘com.github.bumptech.glide:glide:4.12.0’

annotationProcessor ‘com.github.bumptech.glide:compiler:4.12.0’

image

  1. AndroidManifest.xml添加权限

android:requestLegacyExternalStorage=“true”

android:usesCleartextTraffic=“true”

image

  1. 在布局文件中添加 NineGridImageView, 如下所示:

<com.jaeger.ninegridimageview.NineGridImageView

xmlns:app=“http://schemas.android.com/apk/res-auto”

android:layout_height=“wrap_content”

android:layout_margin=“16dp”

android:layout_width=“match_parent”

app:imgGap=“4dp”

app:showStyle=“fill”

app:singleImgSize=“120dp”/>

  1. 为 NineGridImageView 设置 NineGridImageViewAdapter

nineGridImageView.setAdapter(nineGridViewAdapter);

下面是 NineGridImageViewAdapter.class 的源码:

public abstract class NineGridImageViewAdapter {

protected abstract void onDisplayImage(Context context, ImageView imageView, T t);

protected void onItemImageClick(Context context, int index, List list) {

}

protected ImageView generateImageView(Context context) {

GridImageView imageView = new GridImageView(context);

imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

return imageView;

}

}

  • T 是你图片的数据类型, 你可以简单的使用 String 类型也可以是你自定义的类型;

  • 你必须重写 onDisplayImage(Context context, ImageView imageView, T t) 方法去设置显示图片的方式, 你可以使用 Picasso、Glide 、ImageLoader 或者其他的图片加载库,你也可以给 ImageView 设置一个占位图;

  • 如果你需要处理图片的点击事件,你可以重写 onItemImageClick(Context context, int index, List<T> list) 方法,加上你自己的处理逻辑;

  • 如果你要使用自定义的 ImageView,你可以重写 generateImageView(Context context) 方法, 去生成自定的 ImageView

下面是一段示例代码:

private NineGridImageViewAdapter mAdapter = new NineGridImageViewAdapter() {

@Override

protected void onDisplayImage(Context context, ImageView imageView, Photo photo) {

Picasso.with(context)

.load(photo.getSmallUrl)

.placeholder(R.drawable.ic_default_image)

.into(imageView);

}

<
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值