From a2a1bd40089d81286f8257ca4c61ce49155b6af3 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 09 十二月 2024 09:14:21 +0800
Subject: [PATCH] 1.详情界面显示已上传的图片并可放大查看
---
app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java | 1
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java | 29 +++++++++
app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java | 33 +++++++++--
app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java | 12 ++++
app/src/main/res/layout/activity_order_detail.xml | 12 +++-
app/build.gradle | 8 ++
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java | 40 +++++++++++++
7 files changed, 125 insertions(+), 10 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 023987e..7d4ff46 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -181,4 +181,12 @@
implementation 'io.github.lucksiege:pictureselector:v3.11.2'
// 鍥剧墖鍘嬬缉 (鎸夐渶寮曞叆)
implementation 'io.github.lucksiege:compress:v3.11.2'
+
+ // 鍥剧墖鏌ョ湅
+ implementation('com.github.SherlockGougou:BigImageViewPager:androidx-7.2.3') {
+ exclude group: 'androidx.appcompat';
+ exclude group: 'com.google.android.material';
+ exclude group: 'androidx.core';
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
index 2c6dad0..8f1d943 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -7,20 +7,36 @@
import android.view.View;
import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.SimpleItemAnimator;
import com.dayu.pipirrapp.R;
+import com.dayu.pipirrapp.adapter.ImageAdapter;
import com.dayu.pipirrapp.bean.net.DealDetailResult;
+import com.dayu.pipirrapp.bean.net.ImageResult;
import com.dayu.pipirrapp.bean.net.OrderDetailResult;
import com.dayu.pipirrapp.databinding.ActivityOrderDetailBinding;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
+import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
+import com.dayu.pipirrapp.tool.GlideEngine;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.dayu.pipirrapp.view.TitleBar;
+import com.luck.picture.lib.basic.PictureSelector;
+import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
+import com.luck.picture.lib.engine.ImageEngine;
+import com.luck.picture.lib.utils.DensityUtil;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+
+import cc.shinichi.library.ImagePreview;
+import cc.shinichi.library.bean.ImageInfo;
/**
* OrderDetailActivity -
@@ -34,6 +50,10 @@
ActivityOrderDetailBinding binding;
String workOrderId;
String proResultId;
+ ImageAdapter mAdapter;
+ List<ImageResult> images = new ArrayList<>();
+ RecyclerView mRecyclerView;
+ final List<String> imageInfoList = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -61,6 +81,20 @@
binding.setItemclidk(OrderDetailActivity.this);
+ mRecyclerView = binding.recyclerView;
+ FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false);
+ mRecyclerView.setLayoutManager(manager);
+ RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
+ if (itemAnimator != null) {
+ ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false);
+ }
+ // 娣诲姞闂磋窛瑁呴グ锛岀‘淇濆浘鐗囨湁鍚堥�傜殑闂撮殧
+ mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
+ mAdapter = new ImageAdapter(this, images, (v, position) -> {
+ ImagePreview.getInstance().setContext(OrderDetailActivity.this).setImageList(imageInfoList).start();
+
+ });
+ mRecyclerView.setAdapter(mAdapter);
}
/**
@@ -132,7 +166,13 @@
if (t.isSuccess()) {
if (t.isSuccess()) {
if (t.getContent() != null) {
+ binding.orderDealLL.setVisibility(View.VISIBLE);
binding.setDealData(t.getContent());
+ images.addAll(t.getContent().getImages());
+ for (ImageResult imageResult : images) {
+ imageInfoList.add(imageResult.getWebPath());
+ }
+ mAdapter.notifyDataSetChanged();
} else {
ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
index b5bd809..fc6c8e1 100644
--- a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
+++ b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
@@ -14,7 +14,6 @@
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.listener.OnItemLongClickListener;
-import com.luck.picture.lib.adapter.holder.PreviewGalleryAdapter;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
index fdb7df4..956b92b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
+++ b/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
@@ -1,5 +1,6 @@
package com.dayu.pipirrapp.adapter;
+import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -8,7 +9,13 @@
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.dayu.pipirrapp.R;
+import com.dayu.pipirrapp.bean.net.ImageResult;
+import com.dayu.pipirrapp.tool.GlideEngine;
+
+import java.util.List;
/**
* ImageAdapter -
@@ -17,12 +24,16 @@
* @version 1.0
* @since 2024-11-27
*/
-public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder>{
- private String[] imageUrls; // 鍥剧墖鐨� URL 鎴栨湰鍦拌矾寰�
+public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
+ private List<ImageResult> imageUrls; // 鍥剧墖鐨� URL 鎴栨湰鍦拌矾寰�
+ private Context mContext;
+ private OnItemClickListener onItemClickListener;
// 鏋勯�犳柟娉�
- public ImageAdapter(String[] imageUrls) {
+ public ImageAdapter(Context context, List<ImageResult> imageUrls, OnItemClickListener onItemClickListener) {
this.imageUrls = imageUrls;
+ this.mContext = context;
+ this.onItemClickListener = onItemClickListener;
}
@Override
@@ -34,16 +45,26 @@
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {
+
// 浣跨敤 Glide 鍔犺浇鍥剧墖鍒� ImageView 涓�
Glide.with(holder.itemView.getContext())
- .load(imageUrls[position]) // 鍔犺浇鍥剧墖鐨� URL 鎴栬矾寰�
- .thumbnail(0.1f) // 璁剧疆缂╃暐鍥炬瘮渚�
+ .load(imageUrls.get(position).getWebPath()) // 鍔犺浇鍥剧墖鐨� URL 鎴栬矾寰�
+ .thumbnail(0.1f) // 璁剧疆缂╃暐鍥炬瘮渚�'
+ .transform(new CenterCrop(), new RoundedCorners(8))
+ .placeholder(R.drawable.ps_image_placeholder)
.into(holder.imageView);
+ holder.imageView.setOnClickListener(v -> {
+ onItemClickListener.onItemClick(v, position);
+ });
+
}
@Override
public int getItemCount() {
- return imageUrls.length;
+ if (imageUrls == null) {
+ return 0;
+ }
+ return imageUrls.size();
}
public static class ImageViewHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java
index e453602..e8800b8 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java
@@ -1,5 +1,7 @@
package com.dayu.pipirrapp.bean.net;
+import java.util.List;
+
/**
* DealDetailResult -澶勭悊缁撴灉璇︽儏鎺ュ彛
*
@@ -19,6 +21,16 @@
int state;//鐘舵�� 1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥�
String stateName;// 鐘舵�佸悕绉�
+ List<ImageResult> images;
+
+ public List<ImageResult> getImages() {
+ return images;
+ }
+
+ public void setImages(List<ImageResult> images) {
+ this.images = images;
+ }
+
public String getProResultId() {
return proResultId;
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java
new file mode 100644
index 0000000..32ba700
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java
@@ -0,0 +1,29 @@
+package com.dayu.pipirrapp.bean.net;
+
+/**
+ * ImageResult -杩斿洖鐨勫浘鐗囩浉鍏�
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2024-12-06
+ */
+public class ImageResult {
+ String id;
+ String webPath;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getWebPath() {
+ return webPath;
+ }
+
+ public void setWebPath(String webPath) {
+ this.webPath = webPath;
+ }
+}
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index e42682f..2650288 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -271,7 +271,6 @@
android:id="@+id/xiangMuType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
-
android:text="@{data.taskContent}"
android:textColor="@color/manage_item_text"
android:textSize="@dimen/order_detail_text_size" />
@@ -284,13 +283,19 @@
android:id="@+id/orderDealLL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
android:orientation="vertical"
android:visibility="visible">
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="2dp"
+ android:background="@color/base_blue" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="5dp"
android:gravity="center"
android:text="澶勭悊缁撴灉"
android:textColor="@color/base_blue"
@@ -368,7 +373,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
- android:layout_marginTop="10dp" />
+ android:layout_marginTop="10dp"
+ android:minHeight="100dp" />
</LinearLayout>
--
Gitblit v1.8.0