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