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