1.xml文件中添加:
<com.google.android.flexbox.FlexboxLayout android:id="@+id/flexbox" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginBottom="10dp" android:layout_weight="1" app:flexDirection="row" app:flexWrap="wrap" /> </com.railway.common.widgets.XngLinearLayout>
2.在activity或者Adapter中编写:
private final int cellMargin; private final int cellSize;
cellMargin = CommonUtils.dp2px(6); cellSize = ((CommonUtils.getScreenWidth() - CommonUtils.dp2px(40) - cellMargin * 2)) / 3;
FlexboxLayout flexboxLayout = helper.getView(R.id.flexbox); if (flexboxLayout.getChildCount() > 0) { flexboxLayout.removeAllViews(); }
List<String> picList = covertPicPathList(item.getWorkRecordFiles()); if (picList != null && picList.size() > 0) { int index = 0; for (String picPath : picList) { ImageView imageView = new ImageView(mContext); int finalIndex = index; imageView.setOnClickListener(v -> { ImagePicUtils.previewImgs(ActivityLifecycleManager.getInstance().getCurrentActivity(), finalIndex, picList); }); CommonUtils.loadImage(mContext, picPath, imageView); FlexboxLayout.LayoutParams params = new FlexboxLayout.LayoutParams(cellSize, cellSize); params.rightMargin = cellMargin; params.topMargin = cellMargin; flexboxLayout.addView(imageView, params); index++; } }
public static void previewImgs(Activity activity, int position, List<String> imgList) { if (imgList == null || imgList.size() == 0) { return; } List<LocalMedia> newList = new ArrayList<>(); int i = 0; for (String item : imgList) { LocalMedia obj = new LocalMedia(); obj.setPosition(i); obj.setPath(item); newList.add(obj); i++; } PictureSelector.create(activity).themeStyle(R.style.picture_default_style) // xml设置主题 .isNotPreviewDownload(false)// 预览图片长按是否可以下载 .imageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎,必传项 .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT).openExternalPreview(position, newList); }
public static void loadImage(Context context, String url, ImageView imageView) { loadRoundImage(context, url, 0, 0, imageView); } public static void loadRoundImage(Context context, String url, int radius, @DrawableRes int icon, ImageView imageView) { if (TextUtils.isEmpty(url)) { if (icon != 0) { imageView.setImageResource(icon); } return; } Object http = url.startsWith("http") ? url : new File(url); if (radius > 0) { Glide.with(context) .load(http) .transform(new CenterCrop(), new RoundedCorners(dp2px(radius))) .placeholder(icon) .into(imageView); } else { Glide.with(context) .load(http) .transform(new CenterCrop()) .placeholder(icon) .into(imageView); } }