From 65a6bde49652558ada5daa15eca03d5061465a00 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 27 十二月 2024 18:00:46 +0800 Subject: [PATCH] 1.图片上传进度相关代码。 2.修复地图定位图标不居中问题。 --- app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 51 ++++-- app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java | 2 app/src/main/assets/js/map.js | 20 + app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java | 57 +++++- app/src/main/res/drawable/ic_error_picture.xml | 37 ++++ app/src/main/java/com/dayu/pipirrapp/net/Constants.java | 4 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 34 ++-- app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java | 2 app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressListener.java | 2 app/src/main/java/com/dayu/pipirrapp/net/upload/IMGProgressLisener.java | 12 + app/src/main/res/values/colors.xml | 1 app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java | 137 ++++++++++++---- app/src/main/res/layout/activity_intake_detail.xml | 2 app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java | 7 app/src/main/res/layout/item_add_filter_image.xml | 27 +++ app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java | 32 +-- app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java | 9 app/build.gradle | 4 18 files changed, 322 insertions(+), 118 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7d4ff46..39ae300 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,6 @@ JPUSH_APPKEY : "375adbd599ceb9977566b929", //鏆傛椂濉啓榛樿鍊煎嵆鍙�. JPUSH_CHANNEL : "developer-default", - //鑻ヤ笉闆嗘垚鍘傚晢閫氶亾锛屽彲鐩存帴璺宠繃浠ヤ笅閰嶇疆 MEIZU_APPKEY : "MZ-榄呮棌鐨凙PPKEY", MEIZU_APPID : "MZ-榄呮棌鐨凙PPID", @@ -189,4 +188,7 @@ exclude group: 'androidx.core'; } + //杩涘害鍔犺浇 + implementation 'com.github.jenly1314:circleprogressview:1.1.3' + } \ No newline at end of file diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js index cbd35c7..a13de46 100644 --- a/app/src/main/assets/js/map.js +++ b/app/src/main/assets/js/map.js @@ -123,10 +123,14 @@ function locationOverLay(lng, lag) { console.log("function銆嬨�嬨�嬨�嬨�媗ocationOverLay"); map.centerAndZoom(new T.LngLat(lng, lag), map.getZoom()); - + let icon = new T.Icon({ + iconUrl: CONFIG.IMAGES.LOCATION, + iconSize: new T.Point(20, 20), + iconAnchor: new T.Point(10, 10) + }); let marker = new T.Marker( new T.LngLat(lng, lag), - { icon: createIcon(CONFIG.IMAGES.LOCATION, 27) } + { icon: icon } ); map.addOverLay(marker); } @@ -241,16 +245,22 @@ map.removeOverLay(locationMarker); } var newPoint = new T.LngLat(log, lat); + let icon = new T.Icon({ + iconUrl: CONFIG.IMAGES.LOCATION, + iconSize: new T.Point(20, 20), + iconAnchor: new T.Point(10, 10) + }); + locationMarker = new T.Marker( newPoint, - { icon: createIcon(CONFIG.IMAGES.LOCATION, 20) } + { icon: icon } ); map.addOverLay(locationMarker); map.panTo(newPoint); } //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗 var path = []; - var lineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 }); + var lineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 }); let locationMarker; function updateInspectionLocation(log, lat) { var lastLat = lat; @@ -266,7 +276,7 @@ } var aginPath = []; - var oldLineLayer = new T.Polyline([], { color: '#ff4500', weight: 3, opacity: 0.8 }); + var oldLineLayer = new T.Polyline([], { color: '#E9900A', weight: 3, opacity: 0.8 }); //鏄剧ず鍥犲紓甯稿叧闂殑宸℃璁板綍 function aginShowLocation(lng, lat) { // 璋冪敤 Android 鎻愪緵鐨勬帴鍙o紝鑾峰彇鏁版嵁 diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java index d1e451e..8c3fa36 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java @@ -53,8 +53,10 @@ import com.tencent.bugly.crashreport.CrashReport; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import retrofit2.Call; @@ -77,7 +79,8 @@ private final List<LocalMedia> mData = new ArrayList<>(); private ActivityResultLauncher<Intent> launcherResult; private ImageEngine imageEngine; - List<UplodFileState> uplodFileStates = new ArrayList<>(); + Map<String, UplodFileState> uplodFileStates = new HashMap<>(); + // List<UplodFileState> uplodFileStates = new ArrayList<>(); LatLonBean latLonBean; /** @@ -112,7 +115,7 @@ } mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false)); - mAdapter = new AddPictureAdapter(this, mData); + mAdapter = new AddPictureAdapter(this, mData, uplodFileStates); mAdapter.setSelectMax(maxSelectNum + maxSelectVideoNum); mRecyclerView.setAdapter(mAdapter); imageEngine = GlideEngine.createGlideEngine(); @@ -140,7 +143,7 @@ }); binding.dealButton.setOnClickListener(v -> { boolean isAllPost = true; - for (UplodFileState imgData : uplodFileStates) { + for (UplodFileState imgData : uplodFileStates.values()) { if (imgData.getState() == 0) { isAllPost = false; } @@ -223,7 +226,7 @@ private void analyticalSelectResults(ArrayList<LocalMedia> result) { //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃 Set<String> existingPaths = new HashSet<>(); - for (UplodFileState uplodData : uplodFileStates) { + for (UplodFileState uplodData : uplodFileStates.values()) { existingPaths.add(uplodData.getFilePath()); } //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗� @@ -262,7 +265,7 @@ if (!existingPaths.contains(compressPath)) { UplodFileState uplodFileState = new UplodFileState(); uplodFileState.setFilePath(compressPath); - uplodFileStates.add(uplodFileState); + uplodFileStates.put(compressPath, uplodFileState); // 鎵ц涓婁紶鍥剧墖鐨勬搷浣� uplodeImg(uplodFileState); } @@ -273,14 +276,16 @@ if (!existingPaths.isEmpty()) { List<UplodFileState> toRemove = new ArrayList<>(); for (String path : existingPaths) { - for (UplodFileState uplodFileState : uplodFileStates) { + for (UplodFileState uplodFileState : uplodFileStates.values()) { if (path.equals(uplodFileState.getFilePath())) { uplodFileState.getThisCall().cancel(); toRemove.add(uplodFileState); } } } - uplodFileStates.removeAll(toRemove); + for (UplodFileState removeFile : toRemove) { + uplodFileStates.remove(removeFile.getFilePath()); + } } runOnUiThread(new Runnable() { @Override @@ -303,17 +308,10 @@ ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() { @Override public void onBack(UplodFileState state) { - for (UplodFileState uplodFile : uplodFileStates) { - if (uplodFile.getFilePath().equals(state.getFilePath())) { - int index = uplodFileStates.indexOf(uplodFile); - if (index != -1) { - uplodFileStates.set(index, uplodFile); // 鏇存柊瀵瑰簲鐨勯」 - } - } - - } + uplodFileStates.replace(state.getFilePath(), state); + mAdapter.updateProgress(uplodFileState); } - }); + }, mAdapter); } /** diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java index ffc7a1c..aa18d33 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java @@ -53,8 +53,10 @@ import com.tencent.bugly.crashreport.CrashReport; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import retrofit2.Call; @@ -77,7 +79,8 @@ private final List<LocalMedia> mData = new ArrayList<>(); private ActivityResultLauncher<Intent> launcherResult; private ImageEngine imageEngine; - List<UplodFileState> uplodFileStates = new ArrayList<>(); +// List<UplodFileState> uplodFileStates = new ArrayList<>(); +Map<String, UplodFileState> uplodFileStates = new HashMap<>(); String workOrderId; LatLonBean latLonBean; @@ -116,7 +119,7 @@ } mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false)); - mAdapter = new AddPictureAdapter(this, mData); + mAdapter = new AddPictureAdapter(this, mData, uplodFileStates); mAdapter.setSelectMax(maxSelectNum + maxSelectVideoNum); mRecyclerView.setAdapter(mAdapter); imageEngine = GlideEngine.createGlideEngine(); @@ -144,7 +147,7 @@ }); binding.dealButton.setOnClickListener(v -> { boolean isAllPost = true; - for (UplodFileState imgData : uplodFileStates) { + for (UplodFileState imgData : uplodFileStates.values()) { if (imgData.getState() == 0) { isAllPost = false; } @@ -227,7 +230,7 @@ private void analyticalSelectResults(ArrayList<LocalMedia> result) { //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃 Set<String> existingPaths = new HashSet<>(); - for (UplodFileState uplodData : uplodFileStates) { + for (UplodFileState uplodData : uplodFileStates.values()) { existingPaths.add(uplodData.getFilePath()); } //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗� @@ -265,7 +268,7 @@ if (!existingPaths.contains(compressPath)) { UplodFileState uplodFileState = new UplodFileState(); uplodFileState.setFilePath(compressPath); - uplodFileStates.add(uplodFileState); + uplodFileStates.put(compressPath, uplodFileState); // 鎵ц涓婁紶鍥剧墖鐨勬搷浣� uplodeImg(uplodFileState); } @@ -277,14 +280,16 @@ if (!existingPaths.isEmpty()) { List<UplodFileState> toRemove = new ArrayList<>(); for (String path : existingPaths) { - for (UplodFileState uplodFileState : uplodFileStates) { + for (UplodFileState uplodFileState : uplodFileStates.values()) { if (path.equals(uplodFileState.getFilePath())) { uplodFileState.getThisCall().cancel(); toRemove.add(uplodFileState); } } } - uplodFileStates.removeAll(toRemove); + for (UplodFileState removeFile : toRemove) { + uplodFileStates.remove(removeFile.getFilePath()); + } } runOnUiThread(() -> { boolean isMaxSize = result.size() == mAdapter.getSelectMax(); @@ -304,17 +309,10 @@ ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() { @Override public void onBack(UplodFileState state) { - for (UplodFileState uplodFile : uplodFileStates) { - if (uplodFile.getFilePath().equals(state.getFilePath())) { - int index = uplodFileStates.indexOf(uplodFile); - if (index != -1) { - uplodFileStates.set(index, uplodFile); // 鏇存柊瀵瑰簲鐨勯」 - } - } - - } + uplodFileStates.replace(state.getFilePath(), state); + mAdapter.updateProgress(uplodFileState); } - }); + }, mAdapter); } /** @@ -355,7 +353,7 @@ * 寮�濮嬪畾浣嶇浉鍏抽�昏緫 */ private void startLocation() { - ServiceUtils.startLocationService(this,true); + ServiceUtils.startLocationService(this, true); //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver); } 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 f2f00db..b30b0fa 100644 --- a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java @@ -6,6 +6,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -14,7 +15,10 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.bean.net.UplodFileState; import com.dayu.pipirrapp.listener.OnItemLongClickListener; +import com.dayu.pipirrapp.utils.MyLog; +import com.king.view.circleprogressview.CircleProgressView; import com.luck.picture.lib.config.PictureMimeType; import com.luck.picture.lib.config.SelectMimeType; import com.luck.picture.lib.entity.LocalMedia; @@ -22,6 +26,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * AddPictureAdapter - @@ -37,26 +42,16 @@ public static final int TYPE_PICTURE = 2; private final LayoutInflater mInflater; private final ArrayList<LocalMedia> list = new ArrayList<>(); + Map<String, UplodFileState> fileStates; private int selectMax = 9; + private Context mContext; - /** - * 鍒犻櫎 - */ - public void delete(int position) { - try { - if (position != RecyclerView.NO_POSITION && list.size() > position) { - list.remove(position); - notifyItemRemoved(position); - notifyItemRangeChanged(position, list.size()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - public AddPictureAdapter(Context context, List<LocalMedia> result) { + public AddPictureAdapter(Context context, List<LocalMedia> result, Map<String, UplodFileState> fileStates) { this.mInflater = LayoutInflater.from(context); this.list.addAll(result); + this.mContext = context; + this.fileStates = fileStates; } public void setSelectMax(int selectMax) { @@ -77,19 +72,6 @@ } } - public static class ViewHolder extends RecyclerView.ViewHolder { - - ImageView mImg; - ImageView mIvDel; - TextView tvDuration; - - public ViewHolder(View view) { - super(view); - mImg = view.findViewById(R.id.fiv); - mIvDel = view.findViewById(R.id.iv_del); - tvDuration = view.findViewById(R.id.tv_duration); - } - } @Override public int getItemCount() { @@ -132,16 +114,15 @@ //灏戜簬MaxSize寮狅紝鏄剧ず缁х画娣诲姞鐨勫浘鏍� if (getItemViewType(position) == TYPE_CAMERA) { viewHolder.mImg.setImageResource(R.mipmap.ic_add_image); - viewHolder.mImg.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mItemClickListener != null) { - mItemClickListener.openPicture(); - } + viewHolder.mImg.setOnClickListener(view -> { + if (mItemClickListener != null) { + mItemClickListener.openPicture(); } }); viewHolder.mIvDel.setVisibility(View.INVISIBLE); + viewHolder.circleProgressView.setVisibility(View.GONE); } else { + //鍒犻櫎鍥剧墖 viewHolder.mIvDel.setVisibility(View.VISIBLE); viewHolder.mIvDel.setOnClickListener(view -> { int index = viewHolder.getAbsoluteAdapterPosition(); @@ -179,6 +160,29 @@ .diskCacheStrategy(DiskCacheStrategy.ALL) .into(viewHolder.mImg); } + + // 鏇存柊杩涘害 + UplodFileState uplodFileState = fileStates.get(media.getCompressPath()); + uplodFileState.setAdapterPosition(position); + MyLog.d("progressRequestBodyHolder>>>" + "State:" + uplodFileState.getState() + ">>>position:" + position + ">>>Progress: " + uplodFileState.getProgress()); + + if (uplodFileState.getState() == UplodFileState.STATE_UPDING) { + if (uplodFileState.getProgress() < 100) { + viewHolder.maskLayerBg.setVisibility(View.VISIBLE); + viewHolder.circleProgressView.setVisibility(View.VISIBLE); + viewHolder.circleProgressView.setProgress(uplodFileState.getProgress()); + + } else { + viewHolder.circleProgressView.setVisibility(View.GONE); + viewHolder.maskLayerBg.setVisibility(View.GONE); + } + } else if (fileStates.get(media.getCompressPath()).getState() == UplodFileState.STATE_DONE) { + viewHolder.maskLayerBg.setVisibility(View.GONE); + viewHolder.circleProgressView.setVisibility(View.GONE); + } else { + viewHolder.maskLayerBg.setVisibility(View.VISIBLE); + } + //itemView 鐨勭偣鍑讳簨浠� if (mItemClickListener != null) { viewHolder.itemView.setOnClickListener(v -> { @@ -194,6 +198,33 @@ return true; }); } + } + } + + /** + * 鏇存柊杩涘害 + * + * @param uplodFileState + */ + public void updateProgress(UplodFileState uplodFileState) { + MyLog.d("updateProgress>>>" + "State:" + uplodFileState.getState() + ">>>position:" + uplodFileState.getAdapterPosition() + ">>>Progress: " + uplodFileState.getProgress()); + + // 鏇存柊杩涘害鍙傛暟 + if (fileStates.containsKey(uplodFileState.getFilePath())) { + if (uplodFileState.getState()==0){ + // 鑾峰彇宸叉湁鐨� UplodFileState 瀵硅薄骞舵洿鏂拌繘搴� + UplodFileState existingState = fileStates.get(uplodFileState.getFilePath()); + existingState.setProgress(uplodFileState.getProgress()); // 鏇存柊杩涘害 + // 鑾峰彇杩涘害鏇存柊椤圭殑浣嶇疆 + int position = existingState.getAdapterPosition(); + if (position != RecyclerView.NO_POSITION) { + // 閫氱煡閫傞厤鍣ㄥ埛鏂版寚瀹氫綅缃殑椤� + notifyItemChanged(position); + } + }else if (uplodFileState.getState()==2){ + + } + } } @@ -230,4 +261,42 @@ public void setItemLongClickListener(OnItemLongClickListener l) { this.mItemLongClickListener = l; } + + + /** + * 鍒犻櫎 + */ + public void delete(int position) { + try { + if (position != RecyclerView.NO_POSITION && list.size() > position) { + list.remove(position); + notifyItemRemoved(position); + notifyItemRangeChanged(position, list.size()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + + ImageView mImg; + ImageView mIvDel; + ImageView postError; + TextView tvDuration; + RelativeLayout maskLayerBg; + CircleProgressView circleProgressView; + + + public ViewHolder(View view) { + super(view); + mImg = view.findViewById(R.id.fiv); + mIvDel = view.findViewById(R.id.iv_del); + tvDuration = view.findViewById(R.id.tv_duration); + circleProgressView = view.findViewById(R.id.cpv); + maskLayerBg=view.findViewById(R.id.mask_layer_bg); + postError=view.findViewById(R.id.postError); + } + } + } \ No newline at end of file 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 de7c782..0f353e3 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 @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * AddIssueRequest - @@ -10,7 +11,7 @@ * @version 1.0 * @since 2024-12-09 */ -public class AddIssueRequest extends BaseRequest{ +public class AddIssueRequest extends BaseRequest { String workOrderId;//宸ュ崟ID String inspectorId;//宸℃鍛業D String content;//缁撴灉鍐呭 @@ -47,12 +48,12 @@ return images; } - public void setImages(List<UplodFileState> states) { + public void setImages(Map<String, UplodFileState> states) { images.clear(); - for (UplodFileState data : states) { + for (UplodFileState data : states.values()) { ImageRequest image = new ImageRequest(); image.setWebPath(data.getWebPath()); - image.setId(data.getId()); + image.setId(data.getPostId()); images.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 16c65f9..1e2f91e 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 @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * AddProcessingResult -涓婃姤澶勭悊缁撴灉 @@ -72,12 +73,12 @@ return images; } - public void setImages(List<UplodFileState> states) { + public void setImages(Map<String, UplodFileState> states) { images.clear(); - for (UplodFileState data : states) { + for (UplodFileState data : states.values()) { ImageRequest image = new ImageRequest(); image.setWebPath(data.getWebPath()); - image.setId(data.getId()); + image.setId(data.getPostId()); images.add(image); } } diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java index 2980e4b..9b8f46d 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java @@ -1,6 +1,7 @@ package com.dayu.pipirrapp.bean.net; import com.dayu.pipirrapp.net.BaseResponse; +import com.luck.picture.lib.entity.LocalMedia; import retrofit2.Call; @@ -10,13 +11,47 @@ * Date: 2023-04-15 8:15 * Description: */ -public class UplodFileState { - int state = 0;//0姝e湪涓婁紶 1涓婁紶瀹屾垚 2涓婁紶澶辫触 - String filePath;//涓婁紶鐨勬枃浠� - int number;//澶辫触鍚庨噸璇曠殑娆℃暟 - String id;//涓婁紶鍚庣殑id - String webPath;//涓婁紶鍚庣殑鍦板潃 - Call<BaseResponse> thisCall;//褰撳墠璇锋眰 +public class UplodFileState extends LocalMedia { + //姝e湪涓婁紶 + public final static int STATE_UPDING = 0; + //涓婁紶瀹屾垚 + public final static int STATE_DONE = 1; + //涓婁紶澶辫触 + public final static int STATE_ERROR = 2; + + //0姝e湪涓婁紶 1涓婁紶瀹屾垚 2涓婁紶澶辫触 + int state = 0; + //涓婁紶鐨勬枃浠� + String filePath; + //澶辫触鍚庨噸璇曠殑娆℃暟 + int number; + //涓婁紶鍚庣殑id + String postId; + //涓婁紶鍚庣殑鍦板潃 + String webPath; + //褰撳墠璇锋眰 + Call<BaseResponse> thisCall; + //鍥剧墖涓婁紶杩涘害 + int progress; + //adapter涓殑position + int adapterPosition = -1; + + public int getAdapterPosition() { + return adapterPosition; + } + + public void setAdapterPosition(int adapterPosition) { + this.adapterPosition = adapterPosition; + } + + public int getProgress() { + return progress; + } + + public void setProgress(int progress) { + this.progress = progress; + } + public Call<BaseResponse> getThisCall() { return thisCall; @@ -54,12 +89,12 @@ this.filePath = filePath; } - public String getId() { - return id; + public String getPostId() { + return postId; } - public void setId(String id) { - this.id = id; + public void setPostId(String postId) { + this.postId = postId; } public String getWebPath() { 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 12f0033..d0d399a 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java @@ -5,10 +5,12 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; +import android.text.TextUtils; import android.util.Log; import com.dayu.pipirrapp.MyApplication; import com.dayu.pipirrapp.activity.LoginActivity; +import com.dayu.pipirrapp.adapter.AddPictureAdapter; import com.dayu.pipirrapp.bean.net.CodeResult; import com.dayu.pipirrapp.bean.net.UplodFileState; import com.dayu.pipirrapp.bean.net.WeatherResponse; @@ -16,6 +18,7 @@ import com.dayu.pipirrapp.net.subscribers.CodeListener; import com.dayu.pipirrapp.net.subscribers.ProgressSubscriber; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; +import com.dayu.pipirrapp.net.upload.IMGProgressLisener; import com.dayu.pipirrapp.net.upload.ProgressListener; import com.dayu.pipirrapp.net.upload.ProgressRequestBody; import com.dayu.pipirrapp.net.upload.UploadFileListener; @@ -145,7 +148,12 @@ } BaseResponse<T> response = new BaseResponse<>(); response.setCode(tem.getCode()); - response.setMsg(tem.getMsg()); + if (!TextUtils.isEmpty(tem.getMsg())){ + response.setMsg(tem.getMsg()); + }else { + response.setMsg(""); + } + if (tClass != null) { if (tem.getContent() instanceof Map) { @@ -280,6 +288,10 @@ } +// public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener) { +// uploadFile(context, uplodData, listener, null); +// } + /** * 涓婁紶鏂囦欢 * @@ -287,22 +299,24 @@ * @param uplodData * @param listener */ - public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener) { - + public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener, final AddPictureAdapter adapter) { + MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath() ); File file = new File(uplodData.getFilePath()); RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); - ProgressRequestBody progressRequestBody = new ProgressRequestBody(requestBody, new ProgressListener() { - @Override - public void onProgress(long bytesWritten, long contentLength, boolean done) { - // 鏇存柊杩涘害鏉℃垨杩涜鍏朵粬鎿嶄綔 - int progress = (int) (100 * bytesWritten / contentLength); - // 渚嬪锛氭洿鏂� ProgressBar 鎴栨樉绀鸿繘搴� - runOnUiThread(() -> { - // 杩涘害鏉℃洿鏂颁唬鐮� - // progressBar.setProgress(progress); - MyLog.d("progressRequestBody>>>" + "涓婁紶杩涘害: " + progress + "%"); - }); - } + ProgressRequestBody progressRequestBody = new ProgressRequestBody(requestBody, (bytesWritten, contentLength, done) -> { +// MyLog.d("progressRequestBody>>>" + "bytesWritten:" + bytesWritten + ">>>contentLength: " + contentLength ); + // 鏇存柊杩涘害鏉℃垨杩涜鍏朵粬鎿嶄綔 + int progress = (int) (100 * bytesWritten / contentLength); + // 渚嬪锛氭洿鏂� ProgressBar 鎴栨樉绀鸿繘搴� + runOnUiThread(() -> { + uplodData.setProgress(progress); + // 杩涘害鏉℃洿鏂颁唬鐮� + if (adapter != null && uplodData.getAdapterPosition() != -1) { + adapter.updateProgress(uplodData); + } + MyLog.d("progressRequestBody>>>" + "adapterPosition:" + uplodData.getAdapterPosition() + ">>>涓婁紶杩涘害: " + progress + "%"); + }); + }); MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), progressRequestBody); RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "file description"); @@ -314,14 +328,14 @@ if (response.body() != null) { if (response.body().isSuccess()) { uplodData.setState(1); - uplodData.setId(((LinkedTreeMap) response.body().getContent()).get("id").toString()); + uplodData.setPostId(((LinkedTreeMap) response.body().getContent()).get("id").toString()); uplodData.setWebPath(((LinkedTreeMap) response.body().getContent()).get("webPath").toString()); listener.onBack(uplodData); } else { if (uplodData.getNumber() <= uplodFilerepeatSize) { uplodData.setNumber(uplodData.getNumber() + 1); uplodData.setState(2); - uploadFile(context, uplodData, listener); + uploadFile(context, uplodData, listener, adapter); } else { listener.onBack(uplodData); } @@ -334,7 +348,7 @@ if (uplodData.getNumber() <= uplodFilerepeatSize) { uplodData.setNumber(uplodData.getNumber() + 1); uplodData.setState(2); - uploadFile(context, uplodData, listener); + uploadFile(context, uplodData, listener, adapter); } else { listener.onBack(uplodData); } @@ -342,7 +356,6 @@ }); } - /** diff --git a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java index 5954697..1bb800f 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java @@ -7,8 +7,8 @@ */ public class Constants { // public static final String BASE_URL = "http://192.168.10.52:8088"; -//public static final String BASE_URL = "https://no253541tf71.vicp.fun"; -public static final String BASE_URL = "http://fve2iz.natappfree.cc"; +public static final String BASE_URL = "https://no253541tf71.vicp.fun"; +//public static final String BASE_URL = "http://fve2iz.natappfree.cc"; /** * 浠h〃璇锋眰鎴愬姛 */ 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 ec2db90..3d4cdc6 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/java/com/dayu/pipirrapp/net/upload/IMGProgressLisener.java b/app/src/main/java/com/dayu/pipirrapp/net/upload/IMGProgressLisener.java new file mode 100644 index 0000000..5537b14 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/net/upload/IMGProgressLisener.java @@ -0,0 +1,12 @@ +package com.dayu.pipirrapp.net.upload; + +/** + * IMGProgressLisener - + * + * @author zuoxiao + * @version 1.0 + * @since 2024-12-24 + */ +public interface IMGProgressLisener { + void onProgress(int progress); +} diff --git a/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressListener.java b/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressListener.java index 6a34b04..3dc13f6 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressListener.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/upload/ProgressListener.java @@ -1,5 +1,5 @@ package com.dayu.pipirrapp.net.upload; public interface ProgressListener { - void onProgress(long bytesWritten, long totalBytes, boolean done); + void onProgress(long progress, long totalBytes, boolean done); } diff --git a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java index 7e8a6bd..cc6113b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java +++ b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java @@ -162,7 +162,7 @@ MyLog.i("鍘熺敓瀹氫綅娌℃湁鏉冮檺>>>>"); return; } - locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, listener); + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, listener); } catch (Exception e) { CrashReport.postCatchedException(e); } diff --git a/app/src/main/res/drawable/ic_error_picture.xml b/app/src/main/res/drawable/ic_error_picture.xml new file mode 100644 index 0000000..eb88036 --- /dev/null +++ b/app/src/main/res/drawable/ic_error_picture.xml @@ -0,0 +1,37 @@ +<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="M44,23.994C44,22.89 43.105,21.994 42,21.994C40.895,21.994 40,22.89 40,23.994H44ZM24,7.994C25.105,7.994 26,7.099 26,5.994C26,4.89 25.105,3.994 24,3.994V7.994ZM39,39.994H9V43.994H39V39.994ZM8,38.994V8.994H4V38.994H8ZM40,23.994V38.994H44V23.994H40ZM9,7.994H24V3.994H9V7.994ZM9,39.994C8.448,39.994 8,39.546 8,38.994H4C4,41.756 6.239,43.994 9,43.994V39.994ZM39,43.994C41.761,43.994 44,41.756 44,38.994H40C40,39.546 39.552,39.994 39,39.994V43.994ZM8,8.994C8,8.442 8.448,7.994 9,7.994V3.994C6.239,3.994 4,6.233 4,8.994H8Z" + android:fillColor="#ff0000"/> + <path + android:pathData="M6,35L16.693,25.198C17.439,24.514 18.578,24.495 19.346,25.154L32,36" + android:strokeLineJoin="round" + android:strokeWidth="4" + android:fillColor="#00000000" + android:strokeColor="#ff0000" + android:strokeLineCap="round"/> + <path + android:pathData="M28,31L32.773,26.226C33.477,25.523 34.591,25.444 35.388,26.041L42,31" + android:strokeLineJoin="round" + android:strokeWidth="4" + android:fillColor="#00000000" + android:strokeColor="#ff0000" + android:strokeLineCap="round"/> + <path + android:pathData="M33,7L41,15" + android:strokeLineJoin="round" + android:strokeWidth="4" + android:fillColor="#00000000" + android:strokeColor="#ff0000" + android:strokeLineCap="round"/> + <path + android:pathData="M41,7L33,15" + android:strokeLineJoin="round" + android:strokeWidth="4" + android:fillColor="#00000000" + android:strokeColor="#ff0000" + android:strokeLineCap="round"/> +</vector> diff --git a/app/src/main/res/layout/activity_intake_detail.xml b/app/src/main/res/layout/activity_intake_detail.xml index cf66891..f98de27 100644 --- a/app/src/main/res/layout/activity_intake_detail.xml +++ b/app/src/main/res/layout/activity_intake_detail.xml @@ -29,7 +29,7 @@ android:id="@+id/ScrollView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_above="@+id/delete_button" + android:layout_below="@+id/title" android:layout_marginTop="5dp" android:layout_marginBottom="5dp"> diff --git a/app/src/main/res/layout/item_add_filter_image.xml b/app/src/main/res/layout/item_add_filter_image.xml index 074b184..929c680 100644 --- a/app/src/main/res/layout/item_add_filter_image.xml +++ b/app/src/main/res/layout/item_add_filter_image.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <com.luck.picture.lib.widget.SquareRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content"> @@ -41,4 +42,30 @@ android:textSize="11sp" android:visibility="gone" tools:visibility="visible" /> + + + <RelativeLayout + android:id="@+id/mask_layer_bg" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/mask_layer_bg"> + + <com.king.view.circleprogressview.CircleProgressView + android:id="@+id/cpv" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true" + android:layout_centerVertical="true" + app:cpvShowTick="false" + app:cpvStrokeWidth="2dp" /> + + <ImageView + android:id="@+id/postError" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="40dp" + android:src="@drawable/ic_error_picture" /> + </RelativeLayout> + + </com.luck.picture.lib.widget.SquareRelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6aaba63..740b969 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -30,4 +30,5 @@ <color name="delete_color">#ff0000</color> <color name="item_bg_color">#F9F9F9</color> <color name="item_name_text_color">#828282</color> + <color name="mask_layer_bg">#BF828282</color> </resources> \ No newline at end of file -- Gitblit v1.8.0