From 4f7f99c6ea914bcd38de78bd8371be566026b905 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 26 二月 2025 15:54:14 +0800 Subject: [PATCH] -为按钮和列表项添加波纹效果,以获得更好的视觉反馈 -改进MapFragment中的底部布局动画 -在MapFragment中添加设备状态和RTU地址显示 -更新BaseListResult以支持泛型类型 -为设备数据添加IntakeListResult和IntakeResult -通过数据库支持增强标记位置更新功能 -添加电话拨号意图以分隔标记详细信息 -通过过期检查改进磁贴缓存 -添加问题报告的确认对话框 -更新登录活动以限制用户名长度 -为波纹效果和UI元素添加新颜色 -重构XML布局以使用新的波纹图 -改进MapFragment中的错误处理和用户反馈 --- app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java | 59 +++++ app/src/main/res/layout/item_inspect.xml | 3 app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java | 46 ++++ app/src/main/res/layout/item_issue.xml | 2 app/src/main/res/layout/activity_order_deal.xml | 16 + app/src/main/res/layout/item_order.xml | 2 app/src/main/res/layout/activity_order_detail.xml | 2 app/src/main/res/values/colors.xml | 1 app/src/main/res/layout/activity_add_issue.xml | 2 app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java | 3 app/src/main/res/layout/fragment_map.xml | 56 +++++ app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 5 app/src/main/res/drawable/my_item_ripple.xml | 2 app/src/main/res/layout/activity_login.xml | 1 app/src/main/res/drawable/bottom_butten_blue_ripple.xml | 16 + app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java | 118 +++++++++++ app/src/main/res/layout/fragment_my.xml | 2 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 199 +++++++++++++++---- app/src/main/res/drawable/bottom_butten_red_ripple.xml | 16 + app/src/main/res/drawable/item_ripple.xml | 20 ++ app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java | 18 app/src/main/res/layout/activity_issue_detail.xml | 2 22 files changed, 524 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java index 8e62470..70d77a8 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java @@ -112,7 +112,9 @@ } - + /** + * 鏄剧ず闅愯棌瀵嗙爜 + */ private void togglePasswordVisibility() { if (isPasswordVisible) { // 濡傛灉瀵嗙爜鍙锛岄殣钘忓瘑鐮� @@ -240,6 +242,7 @@ isShowCode = true; SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, true); binding.codeLL.setVisibility(View.VISIBLE); + getCode(); } } 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 fe15c6c..ff99220 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java @@ -152,13 +152,13 @@ case 0://鏈笂鎶� binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black, null)); binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null)); - binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color, null)); + binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_blue_ripple, null)); binding.dealButton.setVisibility(View.VISIBLE); break; case 1://宸蹭笂鎶� binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null)); binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null)); - binding.dealButton.setBackgroundColor(getResources().getColor(R.color.delete_color, null)); + binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_red_ripple, null)); binding.dealButton.setVisibility(View.VISIBLE); binding.dealButton.setText("鍒犻櫎澶勭悊缁撴灉"); break; @@ -170,7 +170,7 @@ case 3://琚┏鍥� binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null)); binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null)); - binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color)); + binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_blue_ripple, null)); binding.dealButton.setVisibility(View.VISIBLE); break; @@ -223,8 +223,8 @@ binding.orderDealLL.setVisibility(View.VISIBLE); binding.setDealData(t.getContent()); - if (!t.getContent().getImages().isEmpty()){ - for (ImageResult imageResult:t.getContent().getImages()){ + if (!t.getContent().getImages().isEmpty()) { + for (ImageResult imageResult : t.getContent().getImages()) { ImageBean imageBean = new ImageBean(); imageBean.setId(imageResult.getId()); imageBean.setWebPath(imageResult.getWebPathZip()); @@ -233,15 +233,15 @@ ImageInfo info = new ImageInfo(); info.setOriginUrl(imageResult.getWebPath()); info.setType(Type.IMAGE); - if (imageResult.getWebPathZip()!=null){ + if (imageResult.getWebPathZip() != null) { info.setThumbnailUrl(imageResult.getWebPathZip()); } imageInfoList.add(info); } } - if (!t.getContent().getVideos().isEmpty()){ - for (ImageResult imageResult:t.getContent().getVideos()){ + if (!t.getContent().getVideos().isEmpty()) { + for (ImageResult imageResult : t.getContent().getVideos()) { ImageBean imageBean = new ImageBean(); imageBean.setId(imageResult.getId()); imageBean.setWebPath(imageResult.getWebPathZip()); @@ -250,7 +250,7 @@ ImageInfo info = new ImageInfo(); info.setOriginUrl(imageResult.getWebPath()); info.setThumbnailUrl(imageResult.getWebPath()); - if (imageResult.getWebPathZip()!=null){ + if (imageResult.getWebPathZip() != null) { info.setThumbnailUrl(imageResult.getWebPathZip()); } info.setType(Type.VIDEO); diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java index b82e4e5..945a34b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java @@ -1,5 +1,7 @@ package com.dayu.pipirrapp.bean.net; +import java.util.List; + /** * BaseListResult - * @@ -7,9 +9,51 @@ * @version 1.0 * @since 2024-11-26 */ -public class BaseListResult { +public class BaseListResult<T> { + public int getItemTotal() { + return itemTotal; + } + public void setItemTotal(int itemTotal) { + this.itemTotal = itemTotal; + } + public int getPageCurr() { + return pageCurr; + } + public void setPageCurr(int pageCurr) { + this.pageCurr = pageCurr; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getPageTotal() { + return pageTotal; + } + + public void setPageTotal(int pageTotal) { + this.pageTotal = pageTotal; + } + + public List<T> getObj() { + return obj; + } + + public void setObj(List<T> obj) { + this.obj = obj; + } + + private int itemTotal; + private int pageCurr; + private int pageSize; + private int pageTotal; + private List<T> obj; } diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java new file mode 100644 index 0000000..2f26765 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java @@ -0,0 +1,59 @@ +package com.dayu.pipirrapp.bean.net; + +import java.util.List; + +/** + * IntakeListResult - 璁惧鐩稿叧淇℃伅 + * + * @author zuoxiao + * @version 1.0 + * @since 2025-02-25 + */ +public class IntakeListResult { + private int itemTotal; + private int pageCurr; + private int pageSize; + private int pageTotal; + private List<IntakeResult> obj; + + public int getItemTotal() { + return itemTotal; + } + + public void setItemTotal(int itemTotal) { + this.itemTotal = itemTotal; + } + + public int getPageCurr() { + return pageCurr; + } + + public void setPageCurr(int pageCurr) { + this.pageCurr = pageCurr; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getPageTotal() { + return pageTotal; + } + + public void setPageTotal(int pageTotal) { + this.pageTotal = pageTotal; + } + + + public List<IntakeResult> getObj() { + return obj; + } + + public void setObj(List<IntakeResult> obj) { + this.obj = obj; + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java new file mode 100644 index 0000000..25aad5f --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java @@ -0,0 +1,118 @@ +package com.dayu.pipirrapp.bean.net; + +/** + * IntakeData -璁惧璇︽儏 + * + * @author zuoxiao + * @version 1.0 + * @since 2025-02-25 + */ +public class IntakeResult { + private String intakeId; + private String rtuAddr; + private String intakeNum; + private boolean isOnLine; + private boolean isBinded; + private String alarm; + private double instantAmount; + private double totalAmount; + private double lat; + private double lng; + + // Getters and Setters + public String getIntakeId() { + return intakeId; + } + + public void setIntakeId(String intakeId) { + this.intakeId = intakeId; + } + + public String getRtuAddr() { + return rtuAddr; + } + + public void setRtuAddr(String rtuAddr) { + this.rtuAddr = rtuAddr; + } + + public String getIntakeNum() { + return intakeNum; + } + + public void setIntakeNum(String intakeNum) { + this.intakeNum = intakeNum; + } + + public boolean isOnLine() { + return isOnLine; + } + + public void setOnLine(boolean onLine) { + isOnLine = onLine; + } + + public boolean isBinded() { + return isBinded; + } + + public void setBinded(boolean binded) { + isBinded = binded; + } + + public String getAlarm() { + return alarm; + } + + public void setAlarm(String alarm) { + this.alarm = alarm; + } + + public double getInstantAmount() { + return instantAmount; + } + + public void setInstantAmount(double instantAmount) { + this.instantAmount = instantAmount; + } + + public double getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(double totalAmount) { + this.totalAmount = totalAmount; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLng() { + return lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + @Override + public String toString() { + return "IntakeData{" + + "intakeId='" + intakeId + '\'' + + ", rtuAddr='" + rtuAddr + '\'' + + ", intakeNum='" + intakeNum + '\'' + + ", isOnLine=" + isOnLine + + ", isBinded=" + isBinded + + ", alarm='" + alarm + '\'' + + ", instantAmount=" + instantAmount + + ", totalAmount=" + totalAmount + + ", lat=" + lat + + ", lng=" + lng + + '}'; + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java index c34cb55..33dd4f5 100644 --- a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java +++ b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java @@ -55,4 +55,7 @@ @Query("SELECT * FROM MarkerBean WHERE name LIKE '%' || :name || '%'") Single<List<MarkerBean>> findByNameLike(String name); + + @Query("UPDATE MarkerBean SET lng = :lng, lat = :lat WHERE id = :id") + Completable updateMarkerLocation(String id, String lng, String lat); } diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java index 31e8b08..5591ce1 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -35,11 +36,14 @@ import com.dayu.pipirrapp.bean.db.PipeNetWorkDataBean; import com.dayu.pipirrapp.bean.db.PipeNetworkBean; import com.dayu.pipirrapp.bean.db.PipeNetworkDataCoordinateBean; +import com.dayu.pipirrapp.bean.net.BaseListResult; import com.dayu.pipirrapp.bean.net.CenterPointResult; import com.dayu.pipirrapp.bean.net.DivideListResult; import com.dayu.pipirrapp.bean.net.DivideResult; import com.dayu.pipirrapp.bean.net.InsectionResult; import com.dayu.pipirrapp.bean.net.InspectionRequest; +import com.dayu.pipirrapp.bean.net.IntakeListResult; +import com.dayu.pipirrapp.bean.net.IntakeResult; import com.dayu.pipirrapp.bean.net.MarkerListResult; import com.dayu.pipirrapp.bean.net.MarkerResult; import com.dayu.pipirrapp.bean.net.PipeNetworkResult; @@ -149,7 +153,7 @@ LiveEventBus.get(CommonKeyName.refreshData).observe(this, o -> { // 鏄剧ず鍔犺浇鍔ㄧ敾 TipUtil.showLoading(MapFragment.this.getActivity(), "姝e湪鏇存柊鏁版嵁..."); - + // 鍒涘缓澶氫釜Single瀵硅薄鏉ヨ〃绀烘瘡涓綉缁滆姹� Single<Boolean> centerPointSingle = Single.create(emitter -> { getCenterPoint(); @@ -173,28 +177,28 @@ // 缁勫悎鎵�鏈塖ingle compositeDisposable.add( - Single.zip( - centerPointSingle, - markerDataSingle, - divideListSingle, - pipeNetworkListSingle, - (centerPoint, marker, divide, pipe) -> true - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .doFinally(() -> { - // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘闇�瑕侀殣钘忓姞杞藉姩鐢� - TipUtil.dismissLoading(); - }) - .subscribe( - result -> { - ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊瀹屾垚"); - }, - throwable -> { - Log.e(TAG, "鏁版嵁鏇存柊澶辫触: " + throwable.getMessage()); - ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊澶辫触"); - } - ) + Single.zip( + centerPointSingle, + markerDataSingle, + divideListSingle, + pipeNetworkListSingle, + (centerPoint, marker, divide, pipe) -> true + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .doFinally(() -> { + // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘闇�瑕侀殣钘忓姞杞藉姩鐢� + TipUtil.dismissLoading(); + }) + .subscribe( + result -> { + ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊瀹屾垚"); + }, + throwable -> { + Log.e(TAG, "鏁版嵁鏇存柊澶辫触: " + throwable.getMessage()); + ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊澶辫触"); + } + ) ); }); } @@ -336,24 +340,31 @@ // 妫�鏌ユ湰鍦扮紦瀛� File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl); if (cachedTile != null && cachedTile.exists()) { -// Log.d(TAG, "鏈湴缂撳瓨>>>" + androidUrl); -// if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.)) - // 鍒ゆ柇缂撳瓨鏄惁杩囨湡 -// if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) { - try { - // 浠庣紦瀛樺姞杞界摝鐗� - return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile)); - } catch (FileNotFoundException e) { - e.printStackTrace(); + // 妫�鏌ユ枃浠舵槸鍚﹁秴杩�6涓湀 + long sixMonthsInMillis = 6L * 30 * 24 * 60 * 60 * 1000; // 6涓湀鐨勬绉掓暟 + long fileAge = System.currentTimeMillis() - cachedTile.lastModified(); + + if (fileAge > sixMonthsInMillis) { + // 濡傛灉鏂囦欢瓒呰繃6涓湀锛屽垹闄ゆ棫鏂囦欢骞堕噸鏂颁笅杞� + if (cachedTile.delete()) { + Log.d(TAG, "宸插垹闄よ繃鏈熺摝鐗�: " + androidUrl); + } else { + Log.e(TAG, "鍒犻櫎杩囨湡鐡︾墖澶辫触: " + androidUrl); + } + ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); + } else { + try { + // 浠庣紦瀛樺姞杞界摝鐗� + return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } } -// } } else { //涓嬭浇鐡︾墖 ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); } - } - return super.shouldInterceptRequest(view, request); } @@ -516,8 +527,13 @@ }); //涓婃姤闂 binding.putButton.setOnClickListener(v -> { - Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class); - MapFragment.this.getActivity().startActivity(issue); + new ConfirmDialog(MapFragment.this.getActivity(), "纭涓婃姤闂鍚楋紵", (confirmDialog, v1) -> { + Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class); + MapFragment.this.getActivity().startActivity(issue); + confirmDialog.dismiss(); + }).show(); + + }); binding.expandButton.setLegendsArray(new ExpandButton.Quadruple( ContextCompat.getDrawable(requireContext(), R.drawable.marker_blue), @@ -656,8 +672,23 @@ }); } + /** + * 闅愯棌搴曢儴甯冨眬鐨勫姩鐢绘晥鏋� + */ + private void hideBottomLayoutWithAnimation() { + binding.bottomLL.animate() + .translationY(binding.bottomLL.getHeight()) + .setDuration(300) + .setInterpolator(new android.view.animation.AccelerateInterpolator()) + .withEndAction(() -> { + binding.bottomLL.setVisibility(View.GONE); + binding.bottomLL.setTranslationY(0); + }) + .start(); + } + public void closeWaterIntakeDetail() { - binding.bottomLL.setVisibility(View.GONE); + hideBottomLayoutWithAnimation(); } /** @@ -1005,7 +1036,30 @@ binding.lat.setText(lat); mWebView.evaluateJavascript("javascript:cancelPin()", value -> { }); - ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�"); + + // 鏇存柊鏈湴鏁版嵁搴� + compositeDisposable.add( + DaoSingleton.getAsynchInstance(MapFragment.this.getContext()) + .markerDao() + .updateMarkerLocation(markerBean.getId(), lng, lat) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + () -> { + // 鏇存柊鏈湴缂撳瓨Map涓殑鏁版嵁 + MarkerBean cachedMarker = markerBeanSet.get(markerBean.getId()); + if (cachedMarker != null) { + cachedMarker.setLng(lng); + cachedMarker.setLat(lat); + } + ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�"); + }, + throwable -> { + Log.e(TAG, "鏇存柊鏈湴鏁版嵁搴撳け璐�: "); + ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛屼絾鏈湴鏁版嵁搴撴洿鏂板け璐�"); + } + ) + ); } else { ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg()); @@ -1045,6 +1099,7 @@ mMarkerBean.setAddress(result.getAddress()); mMarkerBean.setBlockName(result.getBlockName()); mMarkerBean.setDivideId(result.getDivideId()); + getDeviceData(result.getName()); showMarker(mMarkerBean); } else { ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg()); @@ -1055,7 +1110,7 @@ } /** - * 鏄剧ず鍙栨按鍙h鎯� + * 鏄剧ず鍒嗘按鎴胯鎯� */ private void getDivideDetail(DivideBean divideBean) { ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/project/divide/getone/" + divideBean.getDivideId(), DivideResult.class, null, new SubscriberListener<BaseResponse<DivideResult>>() { @@ -1063,6 +1118,7 @@ public void onNext(BaseResponse<DivideResult> t) { if (t.isSuccess()) { DivideBean divideBean = getDivideBean(t.getContent()); + getDeviceData(divideBean.getDivideName()); showDivideMarker(divideBean); } else { ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg()); @@ -1073,10 +1129,23 @@ } /** + * 鏄剧ず搴曢儴甯冨眬鐨勫姩鐢绘晥鏋� + */ + private void showBottomLayoutWithAnimation() { + binding.bottomLL.setVisibility(View.VISIBLE); + binding.bottomLL.setTranslationY(binding.bottomLL.getHeight()); + binding.bottomLL.animate() + .translationY(0) + .setDuration(300) + .setInterpolator(new android.view.animation.DecelerateInterpolator()) + .start(); + } + + /** * 鏄剧ず鍙栨按鍙h鎯� */ private void showMarker(MarkerBean markerBean) { - binding.bottomLL.setVisibility(View.VISIBLE); + showBottomLayoutWithAnimation(); binding.phoneLL.setVisibility(View.GONE); binding.headerLL.setVisibility(View.GONE); binding.editePoint.setVisibility(View.VISIBLE); @@ -1120,7 +1189,7 @@ * @param divideBean */ private void showDivideMarker(DivideBean divideBean) { - binding.bottomLL.setVisibility(View.VISIBLE); + showBottomLayoutWithAnimation(); binding.phoneLL.setVisibility(View.VISIBLE); binding.headerLL.setVisibility(View.VISIBLE); binding.editePoint.setVisibility(View.GONE); @@ -1128,6 +1197,11 @@ binding.markerName.setText(divideBean.getDivideName()); binding.markerBlockName.setText(divideBean.getBlockName()); binding.phone.setText(divideBean.getPhone()); + binding.phone.setOnClickListener(v -> { + Intent intent = new Intent(Intent.ACTION_DIAL); + intent.setData(Uri.parse("tel:" + divideBean.getPhone())); + startActivity(intent); + }); binding.header.setText(divideBean.getHeader()); binding.lat.setText(divideBean.getLat()); binding.lng.setText(divideBean.getLng()); @@ -1384,4 +1458,45 @@ } } + /** + * 鑾峰彇璁惧鐩稿叧鐘舵�佷俊鎭� + * + * @param intakeNum + */ + private void getDeviceData(String intakeNum) { + Map<String, Object> params = new HashMap<>(); + params.put("intakeNum", intakeNum); + ApiManager.getInstance().requestGetHideLoading(MapFragment.this.getContext(), BASE_URL + "/remote/monitor/all_intakes", IntakeListResult.class, params, new SubscriberListener<BaseResponse<IntakeListResult>>() { + @Override + public void onNext(BaseResponse<IntakeListResult> t) { + try { + if (t.isSuccess()) { + if (t.getContent() != null && t.getContent().getObj().size() > 0) { + binding.deviceStateLL.setVisibility(View.VISIBLE); + binding.rtuAddressLL.setVisibility(View.VISIBLE); + IntakeResult intakeResult = t.getContent().getObj().get(0); + if (intakeResult.isOnLine()) { + binding.deviceState.setText("鍦ㄧ嚎"); + binding.deviceState.setTextColor(getResources().getColor(R.color.down_green_up, null)); + } else { + binding.deviceState.setText("绂荤嚎"); + binding.deviceState.setTextColor(getResources().getColor(R.color.delete_color, null)); + } + binding.rtuAddress.setText(intakeResult.getRtuAddr()); + } else { + binding.deviceStateLL.setVisibility(View.GONE); + binding.rtuAddressLL.setVisibility(View.GONE); + } + } else { + ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg()); + } + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + } + + }); + } + } diff --git a/app/src/main/res/drawable/bottom_butten_blue_ripple.xml b/app/src/main/res/drawable/bottom_butten_blue_ripple.xml new file mode 100644 index 0000000..9f1abdb --- /dev/null +++ b/app/src/main/res/drawable/bottom_butten_blue_ripple.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <!-- 鑳屾櫙褰㈢姸鍙婇鑹� --> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/base_blue" /> <!-- 鑳屾櫙鑹� --> + </shape> + </item> + <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 --> + <item android:id="@android:id/mask"> + <shape android:shape="rectangle"> + <solid android:color="@color/down_blue" /> <!-- 鎺╃爜棰滆壊 --> + </shape> + </item> +</ripple> \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_butten_red_ripple.xml b/app/src/main/res/drawable/bottom_butten_red_ripple.xml new file mode 100644 index 0000000..b7521af --- /dev/null +++ b/app/src/main/res/drawable/bottom_butten_red_ripple.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <!-- 鑳屾櫙褰㈢姸鍙婇鑹� --> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/delete_color" /> <!-- 鑳屾櫙鑹� --> + </shape> + </item> + <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 --> + <item android:id="@android:id/mask"> + <shape android:shape="rectangle"> + <solid android:color="@color/delete_color_down" /> <!-- 鎺╃爜棰滆壊 --> + </shape> + </item> +</ripple> \ No newline at end of file diff --git a/app/src/main/res/drawable/item_ripple.xml b/app/src/main/res/drawable/item_ripple.xml new file mode 100644 index 0000000..36dbfff --- /dev/null +++ b/app/src/main/res/drawable/item_ripple.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <!-- 鑳屾櫙褰㈢姸鍙婇鑹� --> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/white" /> <!-- 鑳屾櫙鑹� --> + <corners android:radius="7dp" /> + <stroke + android:width="1dp" + android:color="#ededed" /> + </shape> + </item> + <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 --> + <item android:id="@android:id/mask"> + <shape android:shape="rectangle"> + <solid android:color="@color/text_color" /> <!-- 鎺╃爜棰滆壊 --> + </shape> + </item> +</ripple> \ No newline at end of file diff --git a/app/src/main/res/drawable/my_item_ripple.xml b/app/src/main/res/drawable/my_item_ripple.xml index dd91631..1b412d9 100644 --- a/app/src/main/res/drawable/my_item_ripple.xml +++ b/app/src/main/res/drawable/my_item_ripple.xml @@ -5,7 +5,7 @@ <item> <shape android:shape="rectangle"> <solid android:color="@color/white" /> <!-- 鑳屾櫙鑹� --> - <corners android:radius="10dp" /> <!-- 鍦嗚鍗婂緞 --> +<!-- <corners android:radius="10dp" /> <!– 鍦嗚鍗婂緞 –>--> </shape> </item> <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 --> diff --git a/app/src/main/res/layout/activity_add_issue.xml b/app/src/main/res/layout/activity_add_issue.xml index 7709285..fecaaa2 100644 --- a/app/src/main/res/layout/activity_add_issue.xml +++ b/app/src/main/res/layout/activity_add_issue.xml @@ -81,7 +81,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/order_detail_button_height" android:layout_alignParentBottom="true" - android:background="@color/title_color" + android:background="@drawable/bottom_butten_blue_ripple" android:gravity="center" android:text="涓婃姤闂" android:textColor="@color/white" diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml index 6c4996e..2ef32f8 100644 --- a/app/src/main/res/layout/activity_issue_detail.xml +++ b/app/src/main/res/layout/activity_issue_detail.xml @@ -300,8 +300,8 @@ android:layout_width="match_parent" android:layout_height="@dimen/order_detail_button_height" android:layout_alignParentBottom="true" - android:background="@color/title_color" android:gravity="center" + android:background="@drawable/bottom_butten_blue_ripple" android:onClick="@{()->itemclidk.deleteIssue()}" android:text="鍒犻櫎闂" android:textColor="@color/white" diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index f67c259..7128ae0 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -27,6 +27,7 @@ android:hint="璇疯緭鍏ヨ处鍙�" android:maxLines="1" android:paddingLeft="15dp" + android:maxLength="11" android:singleLine="true" android:text="15802220723" /> diff --git a/app/src/main/res/layout/activity_order_deal.xml b/app/src/main/res/layout/activity_order_deal.xml index 8481bf9..a254f14 100644 --- a/app/src/main/res/layout/activity_order_deal.xml +++ b/app/src/main/res/layout/activity_order_deal.xml @@ -31,7 +31,7 @@ android:layout_above="@+id/deal_button" android:layout_below="@+id/title" android:orientation="vertical" - android:padding="20dp"> + > <RelativeLayout @@ -39,6 +39,10 @@ android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp" + android:layout_marginTop="20dp" + android:background="@drawable/my_item_ripple" android:orientation="horizontal"> <TextView @@ -85,6 +89,8 @@ android:layout_width="match_parent" android:layout_marginTop="10dp" android:layout_height="wrap_content" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp" android:orientation="horizontal"> <TextView @@ -112,12 +118,16 @@ android:gravity="start" android:maxHeight="200dp" android:minHeight="100dp" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp" android:text="" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp" android:orientation="horizontal"> <TextView @@ -140,6 +150,8 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginRight="20dp" + android:layout_marginLeft="20dp" android:layout_marginTop="10dp" android:background="@color/white" android:overScrollMode="never" @@ -151,8 +163,8 @@ android:id="@+id/deal_button" android:layout_width="match_parent" android:layout_height="@dimen/order_detail_button_height" + android:background="@drawable/bottom_butten_blue_ripple" android:layout_alignParentBottom="true" - android:background="@color/title_color" android:gravity="center" android:text="鎻� 浜�" android:textColor="@color/white" diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml index 6a2ac80..7e2fe15 100644 --- a/app/src/main/res/layout/activity_order_detail.xml +++ b/app/src/main/res/layout/activity_order_detail.xml @@ -420,7 +420,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/order_detail_button_height" android:layout_alignParentBottom="true" - android:background="@color/title_color" + android:background="@drawable/bottom_butten_blue_ripple" android:gravity="center" android:onClick="@{()->itemclidk.startDealActivity()}" android:text="澶勭悊宸ュ崟" diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index dc6e3a4..b64df88 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -232,7 +232,54 @@ android:textColor="@color/black" android:textSize="@dimen/common_text_size_little" /> </LinearLayout> + <LinearLayout + android:id="@+id/deviceStateLL" + android:layout_width="match_parent" + android:layout_height="25dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璁惧锛�" + android:textColor="@color/black" + android:textSize="@dimen/common_text_size_little" /> + + <TextView + android:id="@+id/deviceState" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:text="鏈煡" + android:textColor="@color/black" + android:textSize="@dimen/common_text_size_little" /> + </LinearLayout> + <LinearLayout + android:id="@+id/rtuAddressLL" + android:layout_width="match_parent" + android:layout_height="25dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="RTU鍦板潃锛�" + android:textColor="@color/black" + android:textSize="@dimen/common_text_size_little" /> + + <TextView + android:id="@+id/rtuAddress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:text="鏈煡" + android:textColor="@color/black" + android:textSize="@dimen/common_text_size_little" /> + </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="25dp" @@ -275,8 +322,9 @@ android:id="@+id/lng" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_weight="4" android:ellipsize="end" + android:text="" android:maxLines="1" android:textColor="@color/manage_item_text" android:textSize="@dimen/common_text_size_little" /> @@ -292,15 +340,17 @@ android:id="@+id/lat" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_weight="4" android:ellipsize="end" android:maxLines="1" + android:text="" android:textColor="@color/manage_item_text" android:textSize="@dimen/common_text_size_little" /> <ImageView android:id="@+id/editePoint" - android:layout_width="wrap_content" + android:layout_width="0dp" + android:layout_weight="1" android:layout_height="wrap_content" android:padding="2dp" android:src="@drawable/ic_edit_btn" /> diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml index 7b15501..828294f 100644 --- a/app/src/main/res/layout/fragment_my.xml +++ b/app/src/main/res/layout/fragment_my.xml @@ -142,8 +142,6 @@ android:id="@+id/changePS" android:layout_width="match_parent" android:layout_height="@dimen/item_height" - - android:background="@color/white" android:gravity="center_vertical" android:paddingLeft="30dp" android:text="淇敼瀵嗙爜" diff --git a/app/src/main/res/layout/item_inspect.xml b/app/src/main/res/layout/item_inspect.xml index bdbaecf..2f58e1f 100644 --- a/app/src/main/res/layout/item_inspect.xml +++ b/app/src/main/res/layout/item_inspect.xml @@ -6,7 +6,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" - android:background="@drawable/ic_choose_gray_edge" + android:background="@drawable/item_ripple" + android:orientation="vertical" android:padding="16dp"> diff --git a/app/src/main/res/layout/item_issue.xml b/app/src/main/res/layout/item_issue.xml index 9fa0bce..6e8b27d 100644 --- a/app/src/main/res/layout/item_issue.xml +++ b/app/src/main/res/layout/item_issue.xml @@ -15,7 +15,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" - android:background="@drawable/ic_choose_gray_edge" + android:background="@drawable/item_ripple" android:onClick="@{()->itemclidk.startDetail(data.issueReportId)}" android:orientation="vertical" android:padding="10dp"> diff --git a/app/src/main/res/layout/item_order.xml b/app/src/main/res/layout/item_order.xml index 8a62a37..8fea820 100644 --- a/app/src/main/res/layout/item_order.xml +++ b/app/src/main/res/layout/item_order.xml @@ -15,7 +15,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" - android:background="@drawable/ic_choose_gray_edge" + android:background="@drawable/item_ripple" android:onClick="@{()->itemclidk.startDetail(data.workOrderId,data.proResultId)}" android:orientation="vertical" android:padding="10dp"> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 740b969..a5203cf 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -28,6 +28,7 @@ <color name="inspect_text_color_pause">#7fff00</color> <color name="inspect_rl_bg_color">#ff6347</color> <color name="delete_color">#ff0000</color> + <color name="delete_color_down">#7E0202</color> <color name="item_bg_color">#F9F9F9</color> <color name="item_name_text_color">#828282</color> <color name="mask_layer_bg">#BF828282</color> -- Gitblit v1.8.0