From c2c902a3bf998632ffffa9c1508aceba7b5a7b45 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 10 一月 2025 11:14:09 +0800
Subject: [PATCH] 1.添加网络视频的显示功能相关
---
app/src/main/res/drawable/play.xml | 18 +++
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 7 +
app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java | 16 ++
app/src/main/java/com/dayu/pipirrapp/bean/net/IssueResult.java | 10 ++
app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java | 2
app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java | 39 +++++--
app/src/main/java/com/dayu/pipirrapp/bean/ImageBean.java | 38 +++++++
app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java | 39 ++++++-
app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java | 8 +
app/src/main/res/layout/item_image.xml | 10 ++
app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java | 10 +
app/build.gradle | 8 +
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java | 39 ++++++-
13 files changed, 210 insertions(+), 34 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 7cd0c47..054a484 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,7 +12,7 @@
}
}
namespace 'com.dayu.pipirrapp'
- compileSdk 33
+ compileSdk 34
defaultConfig {
applicationId "com.dayu.pipirrapp"
@@ -189,12 +189,14 @@
implementation 'io.github.lucksiege:compress:v3.11.2'
// 鍥剧墖鏌ョ湅
- implementation('com.github.SherlockGougou:BigImageViewPager:androidx-7.2.3') {
+ implementation('com.github.SherlockGougou:BigImageViewPager:androidx-8.0.0') {
exclude group: 'androidx.appcompat';
exclude group: 'com.google.android.material';
exclude group: 'androidx.core';
}
-
+ implementation "androidx.media3:media3-exoplayer:1.4.1"
+ implementation "androidx.media3:media3-exoplayer-dash:1.4.1"
+ implementation "androidx.media3:media3-ui:1.4.1"
//杩涘害鍔犺浇
implementation 'com.github.jenly1314:circleprogressview:1.1.3'
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java
index ce34a36..bc529df 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java
@@ -13,8 +13,10 @@
import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.adapter.ImageAdapter;
+import com.dayu.pipirrapp.bean.ImageBean;
import com.dayu.pipirrapp.bean.net.ImageResult;
import com.dayu.pipirrapp.bean.net.IssueResult;
+import com.dayu.pipirrapp.bean.net.UplodFileState;
import com.dayu.pipirrapp.databinding.ActivityIssueDetailBinding;
import com.dayu.pipirrapp.fragment.OrderFragment;
import com.dayu.pipirrapp.net.ApiManager;
@@ -34,6 +36,8 @@
import java.util.Map;
import cc.shinichi.library.ImagePreview;
+import cc.shinichi.library.bean.ImageInfo;
+import cc.shinichi.library.bean.Type;
/**
* IssueDetailActivity - 闂涓婃姤璇︽儏鐣岄潰
@@ -47,8 +51,8 @@
RecyclerView mRecyclerView;
ActivityIssueDetailBinding binding;
ImageAdapter mAdapter;
- List<String> imageInfoList = new ArrayList<>();
- List<ImageResult> images = new ArrayList<>();
+ List<ImageInfo> imageInfoList = new ArrayList<>();
+ List<ImageBean> images = new ArrayList<>();
int state;
String issueReportId;
@@ -75,8 +79,7 @@
// 娣诲姞闂磋窛瑁呴グ锛岀‘淇濆浘鐗囨湁鍚堥�傜殑闂撮殧
mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
mAdapter = new ImageAdapter(this, images, (v, position) -> {
- ImagePreview.getInstance().setContext(IssueDetailActivity.this).setImageList(imageInfoList).start();
-
+ ImagePreview.getInstance().with(IssueDetailActivity.this).setIndex(position).setMediaInfoList(imageInfoList).start();
});
mRecyclerView.setAdapter(mAdapter);
}
@@ -94,9 +97,31 @@
binding.setData(orderDetailResult);
binding.setItemclidk(IssueDetailActivity.this);
state = orderDetailResult.getStateId();
- images.addAll(t.getContent().getImages());
- for (ImageResult imageResult : images) {
- imageInfoList.add(imageResult.getWebPath());
+ if (!t.getContent().getImages().isEmpty()){
+ for (ImageResult imageResult:t.getContent().getImages()){
+ ImageBean imageBean=new ImageBean();
+ imageBean.setId(imageResult.getId());
+ imageBean.setWebPath(imageResult.getWebPath());
+ imageBean.setType(UplodFileState.IMG_TYPE);
+ images.add(imageBean);
+ ImageInfo info=new ImageInfo();
+ info.setOriginUrl(imageResult.getWebPath());
+ info.setType(Type.IMAGE);
+ imageInfoList.add(info);
+ }
+ }
+ if (!t.getContent().getVideos().isEmpty()){
+ for (ImageResult imageResult:t.getContent().getVideos()){
+ ImageBean imageBean=new ImageBean();
+ imageBean.setId(imageResult.getId());
+ imageBean.setWebPath(imageResult.getWebPath());
+ imageBean.setType(UplodFileState.VIDEO_TYPE);
+ images.add(imageBean);
+ ImageInfo info=new ImageInfo();
+ info.setOriginUrl(imageResult.getWebPath());
+ info.setType(Type.VIDEO);
+ imageInfoList.add(info);
+ }
}
mAdapter.notifyDataSetChanged();
switch (state) {
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 091139a..acf9e3a 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -19,9 +19,11 @@
import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.adapter.ImageAdapter;
+import com.dayu.pipirrapp.bean.ImageBean;
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.bean.net.UplodFileState;
import com.dayu.pipirrapp.databinding.ActivityOrderDetailBinding;
import com.dayu.pipirrapp.fragment.OrderFragment;
import com.dayu.pipirrapp.net.ApiManager;
@@ -43,6 +45,8 @@
import java.util.Map;
import cc.shinichi.library.ImagePreview;
+import cc.shinichi.library.bean.ImageInfo;
+import cc.shinichi.library.bean.Type;
/**
* OrderDetailActivity -
@@ -57,9 +61,9 @@
String workOrderId;
String proResultId;
ImageAdapter mAdapter;
- List<ImageResult> images = new ArrayList<>();
+ List<ImageBean> images = new ArrayList<>();
RecyclerView mRecyclerView;
- final List<String> imageInfoList = new ArrayList<>();
+ List<ImageInfo> imageInfoList = new ArrayList<>();
int ProResultStateId;
private ActivityResultLauncher<Intent> activityResultLauncher =
registerForActivityResult(
@@ -120,7 +124,7 @@
// 娣诲姞闂磋窛瑁呴グ锛岀‘淇濆浘鐗囨湁鍚堥�傜殑闂撮殧
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();
+ ImagePreview.getInstance().with(OrderDetailActivity.this).setIndex(position).setMediaInfoList(imageInfoList).start();
});
mRecyclerView.setAdapter(mAdapter);
@@ -218,9 +222,32 @@
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());
+
+ if (!t.getContent().getImages().isEmpty()){
+ for (ImageResult imageResult:t.getContent().getImages()){
+ ImageBean imageBean=new ImageBean();
+ imageBean.setId(imageResult.getId());
+ imageBean.setWebPath(imageResult.getWebPath());
+ imageBean.setType(UplodFileState.IMG_TYPE);
+ images.add(imageBean);
+ ImageInfo info=new ImageInfo();
+ info.setOriginUrl(imageResult.getWebPath());
+ info.setType(Type.IMAGE);
+ imageInfoList.add(info);
+ }
+ }
+ if (!t.getContent().getVideos().isEmpty()){
+ for (ImageResult imageResult:t.getContent().getVideos()){
+ ImageBean imageBean=new ImageBean();
+ imageBean.setId(imageResult.getId());
+ imageBean.setWebPath(imageResult.getWebPath());
+ imageBean.setType(UplodFileState.VIDEO_TYPE);
+ images.add(imageBean);
+ ImageInfo info=new ImageInfo();
+ info.setOriginUrl(imageResult.getWebPath());
+ info.setType(Type.VIDEO);
+ imageInfoList.add(info);
+ }
}
mAdapter.notifyDataSetChanged();
} else {
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 956b92b..b4ad6cd 100644
--- a/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
+++ b/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
@@ -12,7 +12,9 @@
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.ImageBean;
import com.dayu.pipirrapp.bean.net.ImageResult;
+import com.dayu.pipirrapp.bean.net.UplodFileState;
import com.dayu.pipirrapp.tool.GlideEngine;
import java.util.List;
@@ -25,12 +27,12 @@
* @since 2024-11-27
*/
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
- private List<ImageResult> imageUrls; // 鍥剧墖鐨� URL 鎴栨湰鍦拌矾寰�
+ private List<ImageBean> imageUrls; // 鍥剧墖鐨� URL 鎴栨湰鍦拌矾寰�
private Context mContext;
private OnItemClickListener onItemClickListener;
// 鏋勯�犳柟娉�
- public ImageAdapter(Context context, List<ImageResult> imageUrls, OnItemClickListener onItemClickListener) {
+ public ImageAdapter(Context context, List<ImageBean> imageUrls, OnItemClickListener onItemClickListener) {
this.imageUrls = imageUrls;
this.mContext = context;
this.onItemClickListener = onItemClickListener;
@@ -46,9 +48,15 @@
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {
+ ImageBean imageBean=imageUrls.get(position);
+ if (imageBean.getType()== UplodFileState.VIDEO_TYPE){
+ holder.play.setVisibility(View.VISIBLE);
+ }else {
+ holder.play.setVisibility(View.GONE);
+ }
// 浣跨敤 Glide 鍔犺浇鍥剧墖鍒� ImageView 涓�
Glide.with(holder.itemView.getContext())
- .load(imageUrls.get(position).getWebPath()) // 鍔犺浇鍥剧墖鐨� URL 鎴栬矾寰�
+ .load(imageBean.getWebPath()) // 鍔犺浇鍥剧墖鐨� URL 鎴栬矾寰�
.thumbnail(0.1f) // 璁剧疆缂╃暐鍥炬瘮渚�'
.transform(new CenterCrop(), new RoundedCorners(8))
.placeholder(R.drawable.ps_image_placeholder)
@@ -70,10 +78,12 @@
public static class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
+ ImageView play;
public ImageViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.thumbnailImageView);
+ play=itemView.findViewById(R.id.item_play);
}
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/ImageBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/ImageBean.java
new file mode 100644
index 0000000..0b88082
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/ImageBean.java
@@ -0,0 +1,38 @@
+package com.dayu.pipirrapp.bean;
+
+/**
+ * ImageBean -鍥剧墖鏄剧ずadapter
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-01-09
+ */
+public class ImageBean {
+ String id;
+ String webPath;
+ int type;
+
+ 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;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java
index 0f353e3..7fd7638 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java
@@ -5,7 +5,7 @@
import java.util.Map;
/**
- * AddIssueRequest -
+ * AddIssueRequest - 娣诲姞闂涓婃姤
*
* @author zuoxiao
* @version 1.0
@@ -16,6 +16,7 @@
String inspectorId;//宸℃鍛業D
String content;//缁撴灉鍐呭
List<ImageRequest> images = new ArrayList<>();
+ List<ImageRequest> videos = new ArrayList<>();
String completeTime;//浠诲姟瀹屾垚鏃堕棿
String lng;
String lat;
@@ -54,7 +55,12 @@
ImageRequest image = new ImageRequest();
image.setWebPath(data.getWebPath());
image.setId(data.getPostId());
- images.add(image);
+ if (data.getUploadType()==UplodFileState.IMG_TYPE){
+ images.add(image);
+ }else {
+ videos.add(image);
+ }
+
}
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java
index 1e2f91e..b72a0b5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java
@@ -16,6 +16,7 @@
String inspectorId;//宸℃鍛業D
String content;//缁撴灉鍐呭
List<ImageRequest> images = new ArrayList<>();
+ List<ImageRequest> videos = new ArrayList<>();
String completeTime;//浠诲姟瀹屾垚鏃堕棿
String lng;
String lat;
@@ -79,7 +80,12 @@
ImageRequest image = new ImageRequest();
image.setWebPath(data.getWebPath());
image.setId(data.getPostId());
- images.add(image);
+ if (data.getUploadType()==UplodFileState.IMG_TYPE){
+ images.add(image);
+ }else {
+ videos.add(image);
+ }
+
}
}
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 e8800b8..0b07a9d 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
@@ -10,18 +10,37 @@
* @since 2024-12-06
*/
public class DealDetailResult {
- String proResultId;//澶勭悊缁撴灉ID
- String workOrderId;//
- String inspector;// 宸℃鍛�
- String content;//缁撴灉鍐呭
- double lng;// 缁忓害
- double lat;// 绾害
- String completeTime;// 浠诲姟瀹屾垚鏃堕棿 绮剧‘鍒板垎
- String reportTime;//涓婃姤鏃堕棿
- int state;//鐘舵�� 1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥�
- String stateName;// 鐘舵�佸悕绉�
+ //澶勭悊缁撴灉ID
+ String proResultId;
+ String workOrderId;
+ // 宸℃鍛�
+ String inspector;
+ //缁撴灉鍐呭
+ String content;
+ // 缁忓害
+ double lng;
+ // 绾害
+ double lat;
+ // 浠诲姟瀹屾垚鏃堕棿 绮剧‘鍒板垎
+ String completeTime;
+ //涓婃姤鏃堕棿
+ String reportTime;
+ //鐘舵�� 1-宸蹭笂鎶ワ紝2-宸查�氳繃锛�3-宸查┏鍥�
+ int state;
+ // 鐘舵�佸悕绉�
+ String stateName;
List<ImageResult> images;
+ List<ImageResult> videos;
+
+
+ public List<ImageResult> getVideos() {
+ return videos;
+ }
+
+ public void setVideos(List<ImageResult> videos) {
+ this.videos = videos;
+ }
public List<ImageResult> getImages() {
return images;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/IssueResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/IssueResult.java
index b5e2419..7d0703f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/IssueResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/IssueResult.java
@@ -20,11 +20,21 @@
//String audios: [],
//String videos: [],
public List<ImageResult> images;
+ public List<ImageResult> videos;
public String replyTime;//涓婃姤鍥炲鏃堕棿 null,
public String replyContent;//鍥炲鍐呭
public int stateId;//
public String state;//鏈彈鐞�
+
+ public List<ImageResult> getVideos() {
+ return videos;
+ }
+
+ public void setVideos(List<ImageResult> videos) {
+ this.videos = videos;
+ }
+
public String getIssueReportId() {
return issueReportId;
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
index 742f9d3..d80da85 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -313,13 +313,18 @@
int progress = (int) (100 * bytesWritten / contentLength);
// 渚嬪锛氭洿鏂� ProgressBar 鎴栨樉绀鸿繘搴�
runOnUiThread(() -> {
+ if (progress <5) {
+ uplodData.setProgress(0);
+ }
// 杩涘害鏉℃洿鏂颁唬鐮�
if (adapter != null && uplodData.getAdapterPosition() != -1) {
//浼樺寲涓嶉绻佹洿鏂拌繘搴�
- if (progress - uplodData.getProgress() > 5 || progress == 100){
+ if (progress - uplodData.getProgress() > 5 || progress == 100) {
uplodData.setProgress(progress);
adapter.updateProgress(uplodData);
+
}
+
}
MyLog.d("progressRequestBodyHolder>>>path" + "adapterPosition:" + uplodData.getAdapterPosition() + ">>>涓婁紶杩涘害: " + progress + "%");
});
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
index c0cdaee..114316c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
@@ -36,7 +36,7 @@
//娣诲姞鏃ュ織鎷︽埅鍣�
//娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
// if (BuildConfig.DEBUG) {
-// builder.addInterceptor(loggingInterceptor);
+ builder.addInterceptor(loggingInterceptor);
// }
OkHttpClient client = builder.build();
diff --git a/app/src/main/res/drawable/play.xml b/app/src/main/res/drawable/play.xml
new file mode 100644
index 0000000..df62a19
--- /dev/null
+++ b/app/src/main/res/drawable/play.xml
@@ -0,0 +1,18 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+ <path
+ android:pathData="M24,44C35.046,44 44,35.046 44,24C44,12.954 35.046,4 24,4C12.954,4 4,12.954 4,24C4,35.046 12.954,44 24,44Z"
+ android:strokeLineJoin="round"
+ android:strokeWidth="4"
+ android:fillColor="#00000000"
+ android:strokeColor="#FFFFFF"/>
+ <path
+ android:pathData="M20,24V17.072L26,20.536L32,24L26,27.464L20,30.928V24Z"
+ android:strokeLineJoin="round"
+ android:strokeWidth="4"
+ android:fillColor="#00000000"
+ android:strokeColor="#FFFFFF"/>
+</vector>
diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml
index 67a51d5..f0fd6b5 100644
--- a/app/src/main/res/layout/item_image.xml
+++ b/app/src/main/res/layout/item_image.xml
@@ -3,6 +3,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
+ android:layout_gravity="center"
android:elevation="4dp">
<ImageView
@@ -11,4 +12,13 @@
android:layout_height="match_parent"
android:scaleType="centerCrop" />
+ <ImageView
+ android:id="@+id/item_play"
+ android:layout_width="30dp"
+ android:layout_height="30dp"
+ android:layout_gravity="center"
+ android:src="@drawable/play"/>
+
+
+
</androidx.cardview.widget.CardView>
\ No newline at end of file
--
Gitblit v1.8.0