From fbfa859ff0fe312cbb49a3345b6e3d67d574a946 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 28 十一月 2024 16:33:37 +0800 Subject: [PATCH] 1.工单列表界面 2.工单详情界面 3.处理工单界面选择图片相关 --- app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java | 2 app/src/main/java/com/dayu/pipirrapp/tool/GlideEngine.java | 119 ++ app/src/main/java/com/dayu/pipirrapp/net/Constants.java | 4 app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java | 302 ++++- app/src/main/res/layout/activity_order_deal.xml | 80 + app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java | 202 ++++ app/src/main/res/drawable/ps_image_placeholder.xml | 16 app/src/main/res/layout/fragment_order.xml | 232 ++++ app/src/main/res/drawable/ic_choose_gray_edge.xml | 8 app/src/main/res/mipmap-xhdpi/ps_ic_video.png | 0 app/build.gradle | 11 app/src/main/res/values/dimens.xml | 15 app/src/main/java/com/dayu/pipirrapp/adapter/BaseRecyclerAdapter.java | 64 + app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java | 58 + app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java | 20 app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java | 15 app/src/main/res/mipmap-xhdpi/ic_no_more.png | 0 app/src/main/res/layout/fragment_map.xml | 8 app/src/main/java/com/dayu/pipirrapp/listener/OnItemLongClickListener.java | 14 app/src/main/res/drawable/ic_choose_bg_whit.xml | 8 app/src/main/res/layout/activity_login.xml | 2 app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java | 11 app/src/main/res/mipmap-xhdpi/icon_project.png | 0 app/proguard-rules.pro | 9 app/src/main/res/layout/item_no_more.xml | 29 app/src/main/java/com/dayu/pipirrapp/adapter/OrderAdapter.java | 110 ++ app/src/main/assets/js/map.js | 27 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 101 ++ app/src/main/java/com/dayu/pipirrapp/MyApplication.java | 1 app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java | 9 app/src/main/res/values/colors.xml | 6 app/src/main/res/drawable/edittext_backgroud.xml | 20 app/src/main/java/com/dayu/pipirrapp/bean/net/OrderListResult.java | 82 + app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java | 93 + app/src/main/res/mipmap-xhdpi/ic_item_delete.png | 0 app/src/main/res/mipmap-xhdpi/ps_ic_audio.png | 0 app/src/main/res/mipmap-xhdpi/ic_add_image.png | 0 app/src/main/res/drawable/ps_audio_placeholder.xml | 16 app/src/main/AndroidManifest.xml | 41 app/src/main/res/layout/item_order.xml | 282 +++++ app/src/main/java/com/dayu/pipirrapp/fragment/BaseFragment.java | 12 app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java | 4 app/src/main/res/layout/activity_order_detail.xml | 363 +++++++ app/src/main/res/drawable/top_state_bg.xml | 8 app/src/main/java/com/dayu/pipirrapp/tool/FullyGridLayoutManager.java | 104 ++ app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java | 225 ++++ /dev/null | 84 - app/src/main/res/mipmap-xhdpi/icon_bottom.png | 0 app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 8 app/src/main/res/layout/item_add_filter_image.xml | 44 app/src/main/java/com/dayu/pipirrapp/bean/net/OrderDetailResult.java | 30 app/src/main/res/layout/fragment_my.xml | 11 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 20 app/src/main/res/layout/item_image.xml | 14 54 files changed, 2,730 insertions(+), 214 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e0a9d76..d407df2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -164,11 +164,20 @@ implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0' //闃块噷鐨凴ocketMQ - implementation 'org.apache.rocketmq:rocketmq-client:4.9.4' +// implementation 'org.apache.rocketmq:rocketmq-client:4.9.4' + + implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' //room鏁版嵁搴� implementation "androidx.room:room-runtime:2.3.0" implementation "androidx.room:room-ktx:2.3.0" runtimeOnly("androidx.room:room-common:2.3.0") annotationProcessor "androidx.room:room-compiler:2.3.0" + + //鍥剧墖 + implementation 'com.github.bumptech.glide:glide:4.11.0' + // PictureSelector 鍩虹 (蹇呴』鍥剧墖閫夋嫨) + implementation 'io.github.lucksiege:pictureselector:v3.11.2' + // 鍥剧墖鍘嬬缉 (鎸夐渶寮曞叆) + implementation 'io.github.lucksiege:compress:v3.11.2' } \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index bb1430f..2c6288f 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -145,4 +145,11 @@ # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } --keep class com.hjq.permissions.** {*;} \ No newline at end of file +-keep class com.hjq.permissions.** {*;} + +#閫夋嫨鍥剧墖鐨勬鏋� +-keep class com.luck.picture.lib.** { *; } +-keep class com.luck.lib.camerax.** { *; } +-dontwarn com.yalantis.ucrop** +-keep class com.yalantis.ucrop** { *; } +-keep interface com.yalantis.ucrop** { *; } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c02d4b9..fde78da 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,9 @@ xmlns:tools="http://schemas.android.com/tools" package="com.dayu.pipirrapp"> <!--鐢ㄤ簬杩涜缃戠粶瀹氫綅--> + <uses-feature + android:name="android.hardware.camera" + android:required="false" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--鐢ㄤ簬璁块棶GPS瀹氫綅--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> @@ -22,10 +25,44 @@ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!--濡傛灉鎮ㄧ殑搴旂敤闇�瑕佸悗鍙板畾浣嶆潈闄愶紝涓旀湁鍙兘杩愯鍦ˋndroid Q璁惧涓�,骞朵笖璁剧疆浜唗arget>28锛屽繀椤诲鍔犺繖涓潈闄愬0鏄�--> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> + + + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission + android:name="android.permission.WRITE_MEDIA_STORAGE" + tools:ignore="ProtectedPermissions" /> + <uses-permission + android:name="android.permission.WRITE_SETTINGS" + tools:ignore="ProtectedPermissions" /> + <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> + <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.RECORD_AUDIO" /> + <uses-permission android:name="android.permission.CAMERA" /> + <uses-permission android:name="android.permission.VIBRATE" /> + + <!-- Android 13鐗堟湰閫傞厤锛岀粏鍖栧瓨鍌ㄦ潈闄�--> + <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> + <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> + <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> + + <!-- 妯℃嫙浣嶇疆--> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" tools:ignore="MockLocation,ProtectedPermissions" /> + + <queries package="${applicationId}"> + <intent> + <action android:name="android.media.action.IMAGE_CAPTURE"> + + </action> + </intent> + <intent> + <action android:name="android.media.action.ACTION_VIDEO_CAPTURE"> + + </action> + </intent> + </queries> <application android:name=".MyApplication" @@ -66,6 +103,10 @@ android:launchMode="singleTop"> </activity> + <activity android:name=".activity.OrderDetailActivity" /> + <activity android:name=".activity.OrderDealActivity" /> + + <!-- <activity android:name=".activity.MainActivity" />--> <!-- Required since 5.2.0 --> <!-- 鏂扮殑 tag/alias 鎺ュ彛缁撴灉杩斿洖闇�瑕佸紑鍙戣�呴厤缃竴涓嚜瀹氫箟鐨凷ervice --> diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js index 760cee6..a574c9c 100644 --- a/app/src/main/assets/js/map.js +++ b/app/src/main/assets/js/map.js @@ -271,19 +271,22 @@ } //淇濆瓨瀹氫綅鍧愭爣鐢熸垚杞ㄨ抗 var path=[]; - function updateLocation(lat,log){ - var newPoint = new T.LatLng(latitude, longitude); - path.push(newPoint); - var polyline = new T.Polyline({ - path: path, // 杞ㄨ抗鍧愭爣 - strokeColor: "#FF0000", // 杞ㄨ抗棰滆壊 - strokeWeight: 6, // 杞ㄨ抗绾垮 - strokeOpacity: 0.7 // 杞ㄨ抗閫忔槑搴� - }); - map.addOverlay(polyline); - // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃� - map.panTo(newPoint); + var lineLayer = new T.Polyline([], { color: 'red', weight: 3, opacity: 0.8 }); + + function updateLocation(log,lat){ + var lastLat=lat; + const intervalId = setInterval(() => { + lastLat=lastLat+0.0001; + var newPoint = new T.LngLat(log,lastLat); + path.push(newPoint); + lineLayer.setLngLats(path); + map.addOverLay(lineLayer); + // 绉诲姩鍦板浘瑙嗚鍒版渶鍚庝竴涓綅缃� + map.panTo(newPoint); + }, 500); + } })(); + \ No newline at end of file diff --git a/app/src/main/java/com/dayu/pipirrapp/MyApplication.java b/app/src/main/java/com/dayu/pipirrapp/MyApplication.java index f2625e6..d51ea9d 100644 --- a/app/src/main/java/com/dayu/pipirrapp/MyApplication.java +++ b/app/src/main/java/com/dayu/pipirrapp/MyApplication.java @@ -18,6 +18,7 @@ public static MyApplication myApplication; public String myTag = "-1"; public String token; + public String userId; @Override public void onCreate() { 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 bafc2bc..4201472 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java @@ -139,7 +139,7 @@ data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮� - ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + ":8088/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() { + ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + "/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() { @Override public void onNext(BaseResponse<CodeResult> t) { try { @@ -214,22 +214,26 @@ data.put("token", token); data.put("code", code); } - ApiManager.getInstance().requestPostLoading(LoginActivity.this, BASE_URL + ":8079/sso/sso/loginJson", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() { + ApiManager.getInstance().requestPostLoading(LoginActivity.this, BASE_URL + "/sso/sso/loginJson", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() { @Override public void onNext(BaseResponse<LoginResult> t) { try { if (t.isSuccess()) { SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.Token, t.getContent().getToken()); MyApplication.myApplication.token = t.getContent().getToken(); + MyApplication.myApplication.userId = t.getContent().getId(); LoginBean loginBean = DaoSingleton.getInstance(LoginActivity.this).loginDao().findFirst(); if (loginBean == null) { loginBean = new LoginBean(); } loginBean.setName(t.getContent().getName()); loginBean.setPhone(t.getContent().getPhone()); + loginBean.setUserID(t.getContent().getId()); DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean); SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, false); + ToastUtil.showToastLong(LoginActivity.this, "鐧诲綍鎴愬姛!"); startMainActivity(); + } else { ToastUtil.showToast(LoginActivity.this, t.getMsg()); loginError++; diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java index c768fc6..4d3180b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java @@ -15,6 +15,7 @@ import com.dayu.pipirrapp.fragment.OrderFragment; import com.dayu.pipirrapp.fragment.MapFragment; import com.dayu.pipirrapp.fragment.MyFragment; +import com.dayu.pipirrapp.net.MqttManager; import java.util.ArrayList; import java.util.List; @@ -26,6 +27,7 @@ private ActivityMainBinding binding; private List<Fragment> fragments = new ArrayList<>(); private long mExitTime; + MqttManager mqttManager; private enum Tab { ORDER, MAP, MY @@ -40,6 +42,8 @@ setupFragments(); initView(); initTab(); + mqttManager = new MqttManager(this); + mqttManager.connect(); } private void setupFragments() { @@ -76,6 +80,13 @@ return super.onKeyDown(keyCode, event); } + @Override + protected void onDestroy() { + super.onDestroy(); + //鍏抽棴MQ + mqttManager.disconnect(); + } + /** * 淇敼搴曢儴鐘舵�� */ diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java new file mode 100644 index 0000000..fb91e02 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java @@ -0,0 +1,101 @@ +package com.dayu.pipirrapp.activity; + +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.os.Bundle; +import android.provider.MediaStore; +import android.view.LayoutInflater; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; + +import com.dayu.pipirrapp.adapter.AddPictureAdapter; +import com.dayu.pipirrapp.databinding.ActivityOrderDealBinding; +import com.dayu.pipirrapp.tool.FullyGridLayoutManager; +import com.dayu.pipirrapp.tool.GlideEngine; +import com.luck.picture.lib.basic.PictureSelectionModel; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.SelectMimeType; +import com.luck.picture.lib.config.SelectModeConfig; +import com.luck.picture.lib.decoration.GridSpacingItemDecoration; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.interfaces.OnGridItemSelectAnimListener; +import com.luck.picture.lib.interfaces.OnQueryFilterListener; +import com.luck.picture.lib.interfaces.OnSelectAnimListener; +import com.luck.picture.lib.utils.DensityUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * OrderDealDetailActivity - + * 宸ュ崟澶勭悊鐣岄潰 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-27 + */ +public class OrderDealActivity extends BaseActivity { + + ActivityOrderDealBinding binding; + RecyclerView mRecyclerView; + AddPictureAdapter mAdapter; + int maxSelectNum = 10;//鏈�澶х収鐗� + int maxSelectVideoNum = 0;//鏈�澶ц棰� + private final List<LocalMedia> mData = new ArrayList<>(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityOrderDealBinding.inflate(LayoutInflater.from(this)); + setContentView(binding.getRoot()); + initView(); + } + + + void initView() { + mRecyclerView = binding.recycler; + 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 AddPictureAdapter(this, mData); + mAdapter.setSelectMax(maxSelectNum + maxSelectVideoNum); + mRecyclerView.setAdapter(mAdapter); + mAdapter.setOnItemClickListener(new AddPictureAdapter.OnItemClickListener() { + @Override + public void onItemClick(View v, int position) { + + } + + @Override + public void openPicture() { + mOpenPicture(); + } + }); + } + + private void mOpenPicture() { + // 杩涘叆鐩稿唽 + PictureSelectionModel selectionModel = PictureSelector.create(this) + .openGallery(SelectMimeType.ofImage()) + .setMaxSelectNum(maxSelectNum) + .setMaxVideoSelectNum(maxSelectVideoNum) + .setImageEngine(GlideEngine.createGlideEngine()) + .setSelectedData(mAdapter.getData()); + + selectionModel.forResult(PictureConfig.CHOOSE_REQUEST); + } + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java new file mode 100644 index 0000000..dc59338 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java @@ -0,0 +1,93 @@ +package com.dayu.pipirrapp.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.LayoutInflater; + +import androidx.annotation.Nullable; + +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.utils.ToastUtil; +import com.dayu.pipirrapp.view.TitleBar; + +import java.util.HashMap; +import java.util.Map; + +/** + * OrderDetailActivity - + * 宸ュ崟璇︽儏鐣岄潰 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-27 + */ +public class OrderDetailActivity extends BaseActivity { + ActivityOrderDetailBinding binding; + String workOrderId; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityOrderDetailBinding.inflate(LayoutInflater.from(this)); + setContentView(binding.getRoot()); + + new TitleBar(this).setTitleText("宸ュ崟璇︽儏"); + initView(); + } + + void initView() { + workOrderId = this.getIntent().getStringExtra("workOrderId"); + if (!TextUtils.isEmpty(workOrderId)) { + getMarkerData(workOrderId); + } else { + this.finish(); + ToastUtil.showToastLong(this, "褰撳墠workOrderId涓虹┖"); + } + binding.setItemclidk(OrderDetailActivity.this); + + } + + /** + * 鑾峰彇宸ュ崟璇︽儏 + */ + private void getMarkerData(String workOrderId) { + Map<String, Object> params = new HashMap<>(); + params.put("workOrderId", workOrderId); + ApiManager.getInstance().requestGetHideLoading(this, Constants.BASE_URL + "/app/workOrder/getOneWorkOrder", OrderDetailResult.class, params, new SubscriberListener<BaseResponse<OrderDetailResult>>() { + @Override + public void onNext(BaseResponse<OrderDetailResult> t) { + if (t.isSuccess()) { + if (t.isSuccess()) { + if (t.getContent() != null) { + binding.setData(t.getContent()); + } else { + ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); + } + } + } else { + ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); + } + } + + @Override + public void onCloose() { + super.onCloose(); + } + + }); + } + + + public void startDealActivity() { + Intent intent = new Intent(this, OrderDealActivity.class); + intent.putExtra("workOrderId", workOrderId); + startActivity(intent); + } + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java index f8bcd6b..c9602bd 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java @@ -12,7 +12,6 @@ import com.dayu.pipirrapp.bean.db.LoginBean; import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.ActivitySplashScreenBinding; -import com.dayu.pipirrapp.utils.CommonData; import com.dayu.pipirrapp.utils.CommonKeyName; import com.dayu.pipirrapp.utils.SharedPreferencesHelper; @@ -31,14 +30,17 @@ binding = ActivitySplashScreenBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); new Handler().postDelayed(() -> { - LoginBean loginBean = DaoSingleton.getInstance(SplashScreenActivity.this).loginDao().findFirst(); - String token = SharedPreferencesHelper.getInstance(SplashScreenActivity.this).get(CommonKeyName.Token, ""); - if (loginBean != null && !TextUtils.isEmpty(token)) { - startMainActivity(); - MyApplication.myApplication.token = token; - } else { - startLoginActivity(); - } +// LoginBean loginBean = DaoSingleton.getInstance(SplashScreenActivity.this).loginDao().findFirst(); +// String token = SharedPreferencesHelper.getInstance(SplashScreenActivity.this).get(CommonKeyName.Token, ""); +// if (loginBean != null && !TextUtils.isEmpty(token)) { +// startMainActivity(); +// MyApplication.myApplication.token = token; +// MyApplication.myApplication.userId = loginBean.getUserID(); +// } else { +// startLoginActivity(); +// } + Intent intent = new Intent(this, OrderDealActivity.class); + startActivity(intent); SplashScreenActivity.this.finish(); }, 1000); } diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java new file mode 100644 index 0000000..b5bd809 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java @@ -0,0 +1,225 @@ +package com.dayu.pipirrapp.adapter; + +import android.content.Context; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +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; +import com.luck.picture.lib.utils.DateUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * AddPictureAdapter - + * 娣诲姞鍥剧墖 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-28 + */ +public class AddPictureAdapter extends RecyclerView.Adapter<AddPictureAdapter.ViewHolder> { + public static final String TAG = "PictureSelector"; + public static final int TYPE_CAMERA = 1; + public static final int TYPE_PICTURE = 2; + private final LayoutInflater mInflater; + private final ArrayList<LocalMedia> list = new ArrayList<>(); + private int selectMax = 9; + + /** + * 鍒犻櫎 + */ + 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) { + this.mInflater = LayoutInflater.from(context); + this.list.addAll(result); + } + + public void setSelectMax(int selectMax) { + this.selectMax = selectMax; + } + + public int getSelectMax() { + return selectMax; + } + + public ArrayList<LocalMedia> getData() { + return list; + } + + public void remove(int position) { + if (position < list.size()) { + list.remove(position); + } + } + + 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() { + if (list.size() < selectMax) { + return list.size() + 1; + } else { + return list.size(); + } + } + + @Override + public int getItemViewType(int position) { + if (isShowAddItem(position)) { + return TYPE_CAMERA; + } else { + return TYPE_PICTURE; + } + } + + /** + * 鍒涘缓ViewHolder + */ + @Override + public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + View view = mInflater.inflate(R.layout.item_add_filter_image, viewGroup, false); + return new ViewHolder(view); + } + + private boolean isShowAddItem(int position) { + int size = list.size(); + return position == size; + } + + /** + * 璁剧疆鍊� + */ + @Override + public void onBindViewHolder(final ViewHolder viewHolder, final int position) { + //灏戜簬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.mIvDel.setVisibility(View.INVISIBLE); + } else { + viewHolder.mIvDel.setVisibility(View.VISIBLE); + viewHolder.mIvDel.setOnClickListener(view -> { + int index = viewHolder.getAbsoluteAdapterPosition(); + if (index != RecyclerView.NO_POSITION && list.size() > index) { + list.remove(index); + notifyItemRemoved(index); + notifyItemRangeChanged(index, list.size()); + } + }); + LocalMedia media = list.get(position); + int chooseModel = media.getChooseModel(); + String path = media.getAvailablePath(); + long duration = media.getDuration(); + viewHolder.tvDuration.setVisibility(PictureMimeType.isHasVideo(media.getMimeType()) + ? View.VISIBLE : View.GONE); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.tvDuration.setVisibility(View.VISIBLE); + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.mipmap.ps_ic_audio, 0, 0, 0); + + } else { + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds + (R.mipmap.ps_ic_video, 0, 0, 0); + } + viewHolder.tvDuration.setText(DateUtils.formatDurationTime(duration)); + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder); + } else { + Glide.with(viewHolder.itemView.getContext()) + .load(PictureMimeType.isContent(path) && !media.isCut() && !media.isCompressed() ? Uri.parse(path) + : path) + .centerCrop() + .placeholder(R.color.app_color_f6) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(viewHolder.mImg); + } + //itemView 鐨勭偣鍑讳簨浠� + if (mItemClickListener != null) { + viewHolder.itemView.setOnClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemClickListener.onItemClick(v, adapterPosition); + }); + } + + if (mItemLongClickListener != null) { + viewHolder.itemView.setOnLongClickListener(v -> { + int adapterPosition = viewHolder.getAbsoluteAdapterPosition(); + mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v); + return true; + }); + } + } + } + + private OnItemClickListener mItemClickListener; + + public void setOnItemClickListener(OnItemClickListener l) { + this.mItemClickListener = l; + } + + public interface OnItemClickListener { + /** + * Item click event + * + * @param v + * @param position + */ + void onItemClick(View v, int position); + + /** + * Open PictureSelector + */ + void openPicture(); + } + + private OnItemLongClickListener mItemLongClickListener; + + public void setItemLongClickListener(OnItemLongClickListener l) { + this.mItemLongClickListener = l; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/BaseRecyclerAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/BaseRecyclerAdapter.java new file mode 100644 index 0000000..3ad4c3e --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/BaseRecyclerAdapter.java @@ -0,0 +1,64 @@ +package com.dayu.pipirrapp.adapter; + +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.dayu.pipirrapp.databinding.ItemNoMoreBinding; + +/** + * Copyright (C), 2023, + * Author: zuo + * Date: 2023-04-20 8:48 + * Description: + */ +public class BaseRecyclerAdapter<T extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<T> { + + /** + * viewType--鍒嗗埆涓篿tem浠ュ強绌簐iew + */ + public static final int VIEW_TYPE_ITEM = 1; + public static final int VIEW_TYPE_EMPTY = 0; + + public int myiewType; + + + @NonNull + @Override + public T onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(@NonNull T holder, int position) { + + } + + @Override + public int getItemCount() { + return 0; + } + + + static class ViewHolderEmpty extends RecyclerView.ViewHolder { + ItemNoMoreBinding mBinding; + + + public ItemNoMoreBinding getBinding() { + return mBinding; + } + + public void setBinding(ItemNoMoreBinding binding) { + this.mBinding = binding; + } + + public ViewHolderEmpty(ItemNoMoreBinding itemView) { + super(itemView.getRoot()); + this.mBinding = itemView; + + } + } + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java new file mode 100644 index 0000000..d41fc68 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java @@ -0,0 +1,58 @@ +package com.dayu.pipirrapp.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.dayu.pipirrapp.R; + +/** + * ImageAdapter - + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-27 + */ +public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder>{ + private String[] imageUrls; // 鍥剧墖鐨� URL 鎴栨湰鍦拌矾寰� + + // 鏋勯�犳柟娉� + public ImageAdapter(String[] imageUrls) { + this.imageUrls = imageUrls; + } + + @Override + public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // 鑾峰彇甯冨眬鏂囦欢 + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false); + return new ImageViewHolder(view); + } + + @Override + public void onBindViewHolder(ImageViewHolder holder, int position) { + // 浣跨敤 Glide 鍔犺浇鍥剧墖鍒� ImageView 涓� + Glide.with(holder.itemView.getContext()) + .load(imageUrls[position]) // 鍔犺浇鍥剧墖鐨� URL 鎴栬矾寰� + .thumbnail(0.1f) // 璁剧疆缂╃暐鍥炬瘮渚� + .into(holder.imageView); + } + + @Override + public int getItemCount() { + return imageUrls.length; + } + + public static class ImageViewHolder extends RecyclerView.ViewHolder { + + ImageView imageView; + + public ImageViewHolder(View itemView) { + super(itemView); +// imageView = itemView.findViewById(R.id.thumbnailImageView); + } + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/OrderAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/OrderAdapter.java new file mode 100644 index 0000000..a7bdd38 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/adapter/OrderAdapter.java @@ -0,0 +1,110 @@ +package com.dayu.pipirrapp.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.bean.net.OrderListResult; +import com.dayu.pipirrapp.databinding.ItemNoMoreBinding; +import com.dayu.pipirrapp.databinding.ItemOrderBinding; +import com.dayu.pipirrapp.fragment.OrderFragment; + +import java.util.List; + +/** + * OrderAdapter - + * 宸ュ崟鍒楄〃 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-27 + */ +public class OrderAdapter extends BaseRecyclerAdapter<RecyclerView.ViewHolder> { + + + List<OrderListResult.Data> recordsList; + Context context; + OrderFragment orderFragment; + + public OrderAdapter(Context context, List<OrderListResult.Data> recordsList, OrderFragment orderFragment) { + this.context = context; + this.recordsList = recordsList; + this.orderFragment = orderFragment; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + + if (viewType == VIEW_TYPE_EMPTY) { + ItemNoMoreBinding emptyView = DataBindingUtil.inflate((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.item_no_more, parent, false); + return new BaseRecyclerAdapter.ViewHolderEmpty(emptyView); + } else { + ItemOrderBinding binding = DataBindingUtil.inflate((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.item_order, parent, false); + return new OrderAdapter.ViewHolder(binding, orderFragment); + } + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof OrderAdapter.ViewHolder) { + if (recordsList.size() > 0) { + OrderListResult.Data record = recordsList.get(position); + ((OrderAdapter.ViewHolder) holder).getBinding().setData(record); + } + } + } + + @Override + public int getItemCount() { + //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView + // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1 + if (recordsList != null) { + if (recordsList.size() == 0) { + return 1; + } + return recordsList.size(); + } else { + return 1; + } + + } + + @Override + public int getItemViewType(int position) { + if (recordsList != null) { + if (recordsList.size() == 0) { + return VIEW_TYPE_EMPTY; + } else { + return VIEW_TYPE_ITEM; + } + } else { + return VIEW_TYPE_EMPTY; + } + } + + static class ViewHolder extends RecyclerView.ViewHolder { + ItemOrderBinding mBinding; + + public ItemOrderBinding getBinding() { + return mBinding; + } + + public void setBinding(ItemOrderBinding binding) { + this.mBinding = binding; + } + + public ViewHolder(ItemOrderBinding itemView, OrderFragment orderFragment) { + super(itemView.getRoot()); + this.mBinding = itemView; + mBinding.setItemclidk(orderFragment); + } + } + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java index 3eb21c3..fa17536 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java @@ -19,6 +19,15 @@ public String phone; + public String userID; + + public String getUserID() { + return userID; + } + + public void setUserID(String userID) { + this.userID = userID; + } public String getName() { return name; 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 new file mode 100644 index 0000000..b82e4e5 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java @@ -0,0 +1,15 @@ +package com.dayu.pipirrapp.bean.net; + +/** + * BaseListResult - + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-26 + */ +public class BaseListResult { + + + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderDetailResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderDetailResult.java new file mode 100644 index 0000000..8dc1c15 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderDetailResult.java @@ -0,0 +1,30 @@ +package com.dayu.pipirrapp.bean.net; + +/** + * OrderDetailResult - + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-28 + */ +public class OrderDetailResult { + + public String workOrderId;//宸ュ崟ID + public String dispatcherId;//娲惧崟浜篒D + public String dispatcher;//娲惧崟浜哄鍚� + public String inspectorId;//宸℃鍛業D + public String inspector;//宸℃鍛樺鍚� + public String taskType;//浠诲姟绫诲瀷 + public String taskContent;//浠诲姟鍐呭 + public String completeCriteria;//瀹屾垚鏍囧噯 + public String deadLine;//瑕佹眰瀹屾垚鏃堕棿 + public String clientReportId;//鍐滄埛闂涓婃姤ID + public String inspectorReportId;//宸℃鍛橀棶棰樹笂鎶D + public String completeTime;//浠诲姟瀹屾垚鏃堕棿 + public String dispatchTime;//娲惧崟鏃堕棿 + public int rejectTimes;//椹冲洖娆℃暟 + public String state;//宸ュ崟鐘舵�� + public String processingState;//澶勭悊鐘舵�� + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderListResult.java new file mode 100644 index 0000000..8051f39 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/OrderListResult.java @@ -0,0 +1,82 @@ +package com.dayu.pipirrapp.bean.net; + +import java.util.List; + +/** + * OrderListResult - + * 鏈垹闄ゅ伐鍗曞垪琛� + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-26 + */ +public class OrderListResult { + + + int itemTotal; + int pageCurr; + int pageSize; + int pageTotal; + List<Data> 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<Data> getObj() { + return obj; + } + + public void setObj(List<Data> obj) { + this.obj = obj; + } + + public class Data { + public String workOrderId;//宸ュ崟ID + public String dispatcherId;//娲惧崟浜篒D + public String dispatcher;//娲惧崟浜哄鍚� + public String inspectorId;//宸℃鍛業D + public String inspector;//宸℃鍛樺鍚� + public String taskType;//浠诲姟绫诲瀷 + public String taskContent;//浠诲姟鍐呭 + public String completeCriteria;//瀹屾垚鏍囧噯 + public String deadLine;//瑕佹眰瀹屾垚鏃堕棿 + public String clientReportId;//鍐滄埛闂涓婃姤ID + public String inspectorReportId;//宸℃鍛橀棶棰樹笂鎶D + public String completeTime;//浠诲姟瀹屾垚鏃堕棿 + public String dispatchTime;//娲惧崟鏃堕棿 + public int rejectTimes;//椹冲洖娆℃暟 + public String state;//宸ュ崟鐘舵�� + public String processingState;//澶勭悊鐘舵�� + } + + +} diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/BaseFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/BaseFragment.java index a205694..f8a19d7 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/BaseFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/BaseFragment.java @@ -2,6 +2,8 @@ import androidx.fragment.app.Fragment; +import com.scwang.smart.refresh.layout.api.RefreshLayout; + /** * author: zuo * Date: 2023/12/20 @@ -9,4 +11,14 @@ * 澶囨敞锛� */ public class BaseFragment extends Fragment { + public void layoutFinish(RefreshLayout refreshLayout, boolean isRefresh) { + if (refreshLayout != null) { + if (isRefresh) { + refreshLayout.finishRefresh(); + } else { + refreshLayout.finishLoadMore(); + } + } + } + } 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 ebc3cd1..e8e1f24 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -106,8 +106,10 @@ LiveEventBus.get(CommonKeyName.locationData).observeForever(new Observer<Object>() { @Override public void onChanged(Object o) { + LatLonBean latLonBean = (LatLonBean) o; - mWebView.evaluateJavascript("javascript:updateLocation(\"" + latLonBean.getLatitude()+ "\",\"" + latLonBean.getLongitude()+ "\")", value -> { + Log.i("chageInspecState", "lat:" + latLonBean.getLatitude() + ",log:" + latLonBean.getLongitude()); + mWebView.evaluateJavascript("javascript:updateLocation(\"" + latLonBean.getLatitude() + "\",\"" + latLonBean.getLongitude() + "\")", value -> { }); } }); @@ -200,7 +202,7 @@ * 鑾峰彇鍙栨按鍙e垪琛� */ private void getMarkerData() { - ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + ":8085/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() { + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() { @Override public void onNext(BaseResponse<MarkerResult> t) { if (t.isSuccess()) { @@ -284,11 +286,7 @@ void initView() { - //璺宠浆鍒版寚瀹氫綅缃� - binding.flyBtn.setOnClickListener(v -> { - mWebView.evaluateJavascript("javascript:locationOverLay(116.399565,39.89432)", value -> { - }); - }); + mWebView.setWebViewClient(new WebViewClient() { @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { @@ -346,15 +344,15 @@ }); //宸℃鎸夐挳 binding.inspectButton.setOnClickListener(v -> { - if (isStartInspec){ - ConfirmDialog confirmDialog=new ConfirmDialog(MapFragment.this.getActivity(), "鎻愮ず", "纭鍏抽棴宸℃鍚楋紵", new View.OnClickListener() { + if (isStartInspec) { + ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "鎻愮ず", "纭鍏抽棴宸℃鍚楋紵", new View.OnClickListener() { @Override public void onClick(View v) { isStartInspec = !isStartInspec; chageInspecState(); } }); - }else { + } else { isStartInspec = !isStartInspec; chageInspecState(); } @@ -374,7 +372,7 @@ */ private void getCenterPoint() { - ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + ":8080/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() { + ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() { @Override public void onNext(BaseResponse<CenterPointResult> t) { if (t.isSuccess()) { diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java index 02e248e..3eabb79 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java @@ -98,6 +98,6 @@ @Override public void onStart() { super.onStart(); - new TitleBar(MyFragment.this.getActivity()).setTitleText("鎴戠殑"); + } } diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java index 9f0d1b5..4ca4016 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java @@ -1,5 +1,7 @@ package com.dayu.pipirrapp.fragment; +import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -8,23 +10,31 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import androidx.recyclerview.widget.LinearLayoutManager; -import com.dayu.pipirrapp.bean.db.LatLonBean; +import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.activity.OrderDetailActivity; +import com.dayu.pipirrapp.adapter.OrderAdapter; +import com.dayu.pipirrapp.bean.net.OrderListResult; import com.dayu.pipirrapp.bean.net.WeatherResponse; -import com.dayu.pipirrapp.databinding.FragmentMainBinding; +import com.dayu.pipirrapp.databinding.FragmentOrderBinding; import com.dayu.pipirrapp.net.ApiManager; -import com.dayu.pipirrapp.utils.ImageUtils; -import com.dayu.pipirrapp.utils.MyJsonParser; -import com.dayu.pipirrapp.utils.SharedPreferencesHelper; -import com.dayu.pipirrapp.view.TitleBar; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.Constants; +import com.dayu.pipirrapp.net.subscribers.SubscriberListener; +import com.dayu.pipirrapp.utils.CommonKeyName; +import com.dayu.pipirrapp.utils.ToastUtil; import com.jeremyliao.liveeventbus.LiveEventBus; -import com.tencent.bugly.crashreport.CrashReport; +import com.scwang.smart.refresh.footer.ClassicsFooter; +import com.scwang.smart.refresh.header.ClassicsHeader; +import com.scwang.smart.refresh.layout.api.RefreshLayout; +import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener; +import com.scwang.smart.refresh.layout.listener.OnRefreshListener; -import java.util.Calendar; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * author: zuo @@ -34,89 +44,221 @@ */ public class OrderFragment extends BaseFragment { - FragmentMainBinding binding; - WeatherResponse weatherResponse; - //鏀跺埌瀹氫綅骞挎挱鍚庤幏鍙栧ぉ姘斾俊鎭� - Observer<LatLonBean> myObserver = new Observer<LatLonBean>() { - @Override - public void onChanged(LatLonBean latLonBean) { - String jsonStr = SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).get("WeatherResponse", ""); - weatherResponse = MyJsonParser.getBeanFromJson(jsonStr, WeatherResponse.class); - if (weatherResponse == null) { - weatherResponse = new WeatherResponse(); - } - // 鑾峰彇褰撳墠鏃堕棿 - Calendar calendar = Calendar.getInstance(); - // 鑾峰彇褰撳墠骞存湀鏃� - int year = calendar.get(Calendar.YEAR); - int month = calendar.get(Calendar.MONTH) + 1; // 娉ㄦ剰鏈堜唤鏄粠0寮�濮嬭鏁扮殑锛屾墍浠ヨ鍔�1 - int day = calendar.get(Calendar.DAY_OF_MONTH); - String date = year + "骞�" + month + "鏈�" + day + "鏃�"; - if (weatherResponse == null || !date.equals(weatherResponse.getDate())) { - weatherResponse.setDate(date); - ApiManager.getInstance().requestWeather(latLonBean.getLatitude() + ":" + latLonBean.getLongitude(), new Callback<WeatherResponse>() { - @Override - public void onResponse(Call<WeatherResponse> call, Response<WeatherResponse> response) { + private final int STATE_DONE = 2; + private final int STATE_UNDONE = 1; - if (response.isSuccessful()) { - weatherResponse.setResults(response.body().getResults()); - SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).put("WeatherResponse", weatherResponse); - setWeatherData(weatherResponse); - } - } - - @Override - public void onFailure(Call<WeatherResponse> call, Throwable t) { - - } - }); - } else { - setWeatherData(weatherResponse); - } - LiveEventBus.get("location", LatLonBean.class).removeObserver(myObserver); - } - }; - + FragmentOrderBinding binding; + OrderAdapter mAdapter; + int page = 1; + int pageSize = 10; + int state = 1; + List<OrderListResult.Data> recordsListDone = new ArrayList<>(); + List<OrderListResult.Data> recordsList = new ArrayList<>(); /** * 璁剧疆澶╂皵鐩稿叧淇℃伅 * - * @param data + * @param */ - private void setWeatherData(WeatherResponse data) { - try { - if (data.getResults() != null) { - binding.cityName.setText(data.getResults()[0].getLocation().getName()); - binding.time.setText(data.getDate()); - int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day()); - if (weatherImg != 0) { - binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg)); - } - binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day()); - binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C"); - } - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); - } - } - - +// private void setWeatherData(WeatherResponse data) { +// try { +// if (data.getResults() != null) { +// binding.cityName.setText(data.getResults()[0].getLocation().getName()); +// binding.time.setText(data.getDate()); +// int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day()); +// if (weatherImg != 0) { +// binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg)); +// } +// binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day()); +// binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// CrashReport.postCatchedException(e); +// } +// } @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - binding = FragmentMainBinding.inflate(inflater, container, false); - //鑾峰彇鍒扮粡绾害鍚庤幏鍙栧ぉ姘斾俊鎭� - LiveEventBus - .get("location", LatLonBean.class) - .observeForever(myObserver); + binding = FragmentOrderBinding.inflate(inflater, container, false); + initView(); + //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� + LiveEventBus.get(CommonKeyName.MQTTData).observeForever(new Observer<Object>() { + @Override + public void onChanged(Object o) { + + } + }); + return binding.getRoot(); } + + void initView() { + //鏈畬鎴� + binding.manageStateProgress.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + chooseStateView(true); + state = STATE_UNDONE;//1 鏈紑濮� 2 宸插畬鎴� + + } + }); + //宸插畬鎴� + binding.manageStateFinish.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + chooseStateView(false); + state = STATE_DONE;//1 鏈紑濮� 2 宸插畬鎴� + } + }); + //鏈畬鎴� + RefreshLayout myRefreshLayout = (RefreshLayout) binding.refreshLayout; + myRefreshLayout.setRefreshHeader(new ClassicsHeader(this.getContext())); + myRefreshLayout.setRefreshFooter(new ClassicsFooter(this.getContext())); + + myRefreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(RefreshLayout refreshlayout) { +// refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触 + recordsList.clear(); + page = 0; + getMarkerData(refreshlayout, true, STATE_UNDONE); + } + }); + myRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshlayout) { + page = page + 1; + getMarkerData(refreshlayout, false, STATE_UNDONE); + } + }); + + mAdapter = new OrderAdapter(this.getContext(), recordsList, this); + LinearLayoutManager layoutManager = new LinearLayoutManager(this.getContext()); + binding.recyclerView.setLayoutManager(layoutManager); + binding.recyclerView.setAdapter(mAdapter); + getMarkerData(myRefreshLayout, true, STATE_UNDONE); + //宸插畬鎴� + RefreshLayout myRefreshLayoutDone = (RefreshLayout) binding.refreshLayoutDone; + myRefreshLayoutDone.setRefreshHeader(new ClassicsHeader(this.getContext())); + myRefreshLayoutDone.setRefreshFooter(new ClassicsFooter(this.getContext())); + myRefreshLayoutDone.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(RefreshLayout refreshlayout) { +// refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触 + recordsList.clear(); + page = 0; + getMarkerData(refreshlayout, true, STATE_DONE); + } + }); + myRefreshLayoutDone.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshlayout) { + page = page + 1; + getMarkerData(refreshlayout, false, STATE_DONE); + } + }); + mAdapter = new OrderAdapter(this.getContext(), recordsListDone, this); + LinearLayoutManager layoutManagerDone = new LinearLayoutManager(this.getContext()); + binding.recyclerViewDone.setLayoutManager(layoutManagerDone); + binding.recyclerViewDone.setAdapter(mAdapter); + getMarkerData(myRefreshLayoutDone, true, 2); + } + + @Override public void onStart() { super.onStart(); - new TitleBar(OrderFragment.this.getActivity()).setTitleText("宸ュ崟"); } + + /** + * 鑾峰彇鏈垹闄ゅ伐鍗� + */ + private void getMarkerData(RefreshLayout refreshlayout, boolean isRefresh, int state) { + + Map<String, Object> params = new HashMap<>(); + if (isRefresh) { + page = 1; + if (state == STATE_UNDONE) { + recordsList.clear(); + } else { + recordsListDone.clear(); + } + } + params.put("pageSize", pageSize); + params.put("pageCurr", page); + params.put("state", state); +// params.put("inspectorId", MyApplication.myApplication.userId); + + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getWorkOrders", OrderListResult.class, params, new SubscriberListener<BaseResponse<OrderListResult>>() { + @Override + public void onNext(BaseResponse<OrderListResult> t) { + if (t.isSuccess()) { + if (t.isSuccess()) { + if (t.getContent().getObj() != null && t.getContent().getObj().size() > 0) { + if (state == STATE_UNDONE) { + recordsList.addAll(t.getContent().getObj()); + } else { + recordsListDone.addAll(t.getContent().getObj()); + } + if (t.getContent().getObj().size() < pageSize) { + refreshlayout.finishLoadMoreWithNoMoreData(); + } + } else { + refreshlayout.finishLoadMoreWithNoMoreData(); + } + } + } else { + ToastUtil.showToast(OrderFragment.this.getContext(), t.getMsg()); + } + } + + @Override + public void onCloose() { + super.onCloose(); + layoutFinish(refreshlayout, isRefresh); + mAdapter.notifyDataSetChanged(); + } + + }); + } + + public void startDetail(String id) { + Intent intent = new Intent(this.getContext(), OrderDetailActivity.class); + intent.putExtra("workOrderId", id); + startActivity(intent); + } + + + /** + * 淇敼杩涘害鐘舵�� + * + * @param state true涓烘湭瀹屾垚 false涓哄凡瀹屾垚 + */ + + void chooseStateView(boolean state) { + if (state) { + binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color)); + binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit)); + binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + binding.manageStateFinish.setTextColor(getResources().getColor(R.color.black)); + binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg)); + binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayoutDone.setVisibility(View.GONE); + } else { + binding.manageStateFinish.setTextColor(getResources().getColor(R.color.title_color)); + binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit)); + binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + binding.manageStateProgress.setTextColor(getResources().getColor(R.color.black)); + binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg)); + binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + binding.refreshLayout.setVisibility(View.GONE); + binding.refreshLayoutDone.setVisibility(View.VISIBLE); + } + } + + } diff --git a/app/src/main/java/com/dayu/pipirrapp/listener/OnItemLongClickListener.java b/app/src/main/java/com/dayu/pipirrapp/listener/OnItemLongClickListener.java new file mode 100644 index 0000000..fc64f86 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/listener/OnItemLongClickListener.java @@ -0,0 +1,14 @@ +package com.dayu.pipirrapp.listener; + +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +/** + * @author锛歭uck + * @date锛�2020-01-13 17:58 + * @describe锛氶暱鎸変簨浠� + */ +public interface OnItemLongClickListener { + void onItemLongClick(RecyclerView.ViewHolder holder, int position, View v); +} 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 07eeb65..2b7b794 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java @@ -6,8 +6,8 @@ * Description: */ public class Constants { -// public static final String BASE_URL = "http://192.168.10.52"; -public static final String BASE_URL = "http://192.168.40.166"; +// public static final String BASE_URL = "http://192.168.10.52:8088"; +public static final String BASE_URL = "https://no253541tf71.vicp.fun"; /** * 浠h〃璇锋眰鎴愬姛 */ diff --git a/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java b/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java new file mode 100644 index 0000000..7a85cc5 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java @@ -0,0 +1,202 @@ +package com.dayu.pipirrapp.net; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkRequest; +import android.util.Log; + +import com.dayu.pipirrapp.utils.CommonKeyName; +import com.jeremyliao.liveeventbus.LiveEventBus; + +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * MQTT鐩稿叧璁剧疆 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-26 + */ +public class MqttManager { + + private static final String MQTT_BROKER_URL = "tcp://115.236.153.170:30764"; // 淇敼涓轰綘鐨� broker 鍦板潃 + private static final String CLIENT_ID = "mqttx_54052fa0"; + private static final String TOPIC = "workOrder"; // 璁㈤槄鐨勪富棰� + private ConnectivityManager connectivityManager; + + private MqttClient mqttClient; + private MqttConnectOptions connectOptions; + boolean isHasNet = false; + + public MqttManager(Context context) { + try { + mqttClient = new MqttClient(MQTT_BROKER_URL, CLIENT_ID, new MemoryPersistence()); + connectOptions = new MqttConnectOptions(); + connectOptions.setUserName("mqtt_yjy"); + connectOptions.setPassword("yjy".toCharArray()); + connectOptions.setCleanSession(false); + connectOptions.setKeepAliveInterval(60); // 璁剧疆淇濇寔杩炴帴鐨勬椂闂� + connectOptions.setAutomaticReconnect(true); // 鍚敤鑷姩閲嶈繛 + connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + checkNetwork(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + // 杩炴帴鍒� MQTT broker + public void connect() { + ExecutorService executorService = Executors.newSingleThreadExecutor(); + executorService.execute(new Runnable() { + @Override + public void run() { + try { + if (isHasNet) { + mqttClient.connect(connectOptions); + if (mqttClient.isConnected()) { + Log.d("MqttManager", "Connected to MQTT broker"); + subscribeToTopic(); + } + } else { + reconnect(); + } + + } catch (MqttException e) { + reconnect(); + Log.e("MqttManager", "Error connecting to MQTT broker", e); + } + } + }); + } + + // 璁㈤槄涓婚 + private void subscribeToTopic() { + try { + mqttClient.subscribe(TOPIC, (topic, message) -> { + // 鏀跺埌娑堟伅鏃剁殑澶勭悊閫昏緫 + Log.d("MqttManager", "Received message:" + new String(message.getPayload())); + //浼犻�扢Q鏀跺埌鐨勪俊鎭� + LiveEventBus.get(CommonKeyName.locationData).post(message.getPayload()); + }); + mqttClient.setCallback(new MqttCallback() { + @Override + public void connectionLost(Throwable cause) { + Log.d("MqttManager", "connectionLost" + cause.getMessage()); + reconnect(); + // 澶勭悊杩炴帴涓㈠け锛屽彲浠ュ皾璇曢噸鏂拌繛鎺� + } + + @Override + public void messageArrived(String topic, MqttMessage message) throws Exception { + Log.d("MqttManager", "Received messageArrived:" + new String(message.getPayload())); + // 澶勭悊鏀跺埌鐨勬秷鎭� + } + + @Override + public void deliveryComplete(IMqttDeliveryToken token) { + // 澶勭悊娑堟伅鍙戦�佸畬鎴� + try { + Log.d("MqttManager", "deliveryComplete锛�" + new String(token.getMessage().toString())); + } catch (MqttException e) { + e.printStackTrace(); + } + } + }); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + // 鍙戝竷娑堟伅 + public void publishMessage(String message) { + try { + MqttMessage mqttMessage = new MqttMessage(message.getBytes()); + mqttClient.publish(TOPIC, mqttMessage); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + // 鏂紑杩炴帴 + public void disconnect() { + try { + if (mqttClient != null && mqttClient.isConnected()) { + mqttClient.disconnect(); + System.out.println("Disconnected from MQTT broker"); + } + } catch (MqttException e) { + e.printStackTrace(); + } + } + + // 鑷姩閲嶈繛鏂规硶 + private void reconnect() { + try { + if (isHasNet) { + while (!mqttClient.isConnected() && isHasNet) { + Log.d("MqttManager", "Attempting to reconnect..."); + mqttClient.connect(connectOptions); // 閲嶈瘯杩炴帴 + if (mqttClient.isConnected()) { + Log.d("MqttManager", "Connected to MQTT broker"); + subscribeToTopic(); + } + Thread.sleep(5000); // 姣� 5 绉掗噸璇曚竴娆� + } + Log.d("MqttManager", "Reconnected to MQTT broker! isHasNet=true"); + } else { + Log.d("MqttManager", "isHasNet is false"); + Thread.sleep(5000); + reconnect(); + } + + } catch (MqttException | InterruptedException e) { + try { + Thread.sleep(5000); + } catch (InterruptedException ex) { + e.printStackTrace(); + }// 姣� 5 绉掗噸璇曚竴娆� + reconnect(); + + } + } + + public void checkNetwork() { + NetworkRequest request = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) // 蹇呴』鍏峰浜掕仈缃戣兘鍔� + .build(); + + connectivityManager.registerNetworkCallback(request, new ConnectivityManager.NetworkCallback() { + @Override + public void onAvailable(Network network) { + super.onAvailable(network); + // 缃戠粶鍙敤鏃剁殑澶勭悊閫昏緫 + Log.d("MqttManager", "Network is available."); + isHasNet = true; + reconnect(); + } + + @Override + public void onLost(Network network) { + super.onLost(network); + // 缃戠粶涓㈠け鏃剁殑澶勭悊閫昏緫 + Log.d("MqttManager", "Network is lost."); + isHasNet = false; + try { + mqttClient.disconnect(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + }); + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/FullyGridLayoutManager.java b/app/src/main/java/com/dayu/pipirrapp/tool/FullyGridLayoutManager.java new file mode 100644 index 0000000..7ad0a08 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/tool/FullyGridLayoutManager.java @@ -0,0 +1,104 @@ +package com.dayu.pipirrapp.tool; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +/** + * FullyGridLayoutManager - + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-28 + */ +public class FullyGridLayoutManager extends GridLayoutManager { + private final int[] mMeasuredDimension = new int[2]; + + public FullyGridLayoutManager(Context context, int spanCount) { + super(context, spanCount); + } + + public FullyGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) { + super(context, spanCount, orientation, reverseLayout); + } + + @Override + public void onMeasure(@NonNull RecyclerView.Recycler recycler, @NonNull RecyclerView.State state, int widthSpec, int heightSpec) { + final int widthMode = View.MeasureSpec.getMode(widthSpec); + final int heightMode = View.MeasureSpec.getMode(heightSpec); + final int widthSize = View.MeasureSpec.getSize(widthSpec); + final int heightSize = View.MeasureSpec.getSize(heightSpec); + + int width = 0; + int height = 0; + int count = getItemCount(); + int span = getSpanCount(); + for (int i = 0; i < count; i++) { + measureScrapChild(recycler, i, + View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), + mMeasuredDimension); + + if (getOrientation() == HORIZONTAL) { + if (i % span == 0) { + width = width + mMeasuredDimension[0]; + } + if (i == 0) { + height = mMeasuredDimension[1]; + } + } else { + if (i % span == 0) { + height = height + mMeasuredDimension[1]; + } + if (i == 0) { + width = mMeasuredDimension[0]; + } + } + } + + switch (widthMode) { + case View.MeasureSpec.EXACTLY: + width = widthSize; + case View.MeasureSpec.AT_MOST: + case View.MeasureSpec.UNSPECIFIED: + } + + switch (heightMode) { + case View.MeasureSpec.EXACTLY: + height = heightSize; + case View.MeasureSpec.AT_MOST: + case View.MeasureSpec.UNSPECIFIED: + } + + setMeasuredDimension(width, height); + } + + final RecyclerView.State mState = new RecyclerView.State(); + + private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, + int heightSpec, int[] measuredDimension) { + int itemCount = mState.getItemCount(); + if (position < itemCount) { + try { + View view = recycler.getViewForPosition(0); + if (view != null) { + RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams(); + int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec, + getPaddingLeft() + getPaddingRight(), p.width); + int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec, + getPaddingTop() + getPaddingBottom(), p.height); + view.measure(childWidthSpec, childHeightSpec); + measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin; + measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin; + recycler.recycleView(view); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/GlideEngine.java b/app/src/main/java/com/dayu/pipirrapp/tool/GlideEngine.java new file mode 100644 index 0000000..0d3654b --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/tool/GlideEngine.java @@ -0,0 +1,119 @@ +package com.dayu.pipirrapp.tool; + +import android.content.Context; +import android.widget.ImageView; + +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.luck.picture.lib.engine.ImageEngine; +import com.luck.picture.lib.utils.ActivityCompatHelper; + +/** + * GlideEngine -Glide鍔犺浇寮曟搸 + * + * @author zuoxiao + * @version 1.0 + * @since 2024-11-28 + */ +public class GlideEngine implements ImageEngine { + + /** + * 鍔犺浇鍥剧墖 + * + * @param context 涓婁笅鏂� + * @param url 璧勬簮url + * @param imageView 鍥剧墖鎵胯浇鎺т欢 + */ + @Override + public void loadImage(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .into(imageView); + } + + @Override + public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView); + } + + /** + * 鍔犺浇鐩稿唽鐩綍灏侀潰 + * + * @param context 涓婁笅鏂� + * @param url 鍥剧墖璺緞 + * @param imageView 鎵胯浇鍥剧墖ImageView + */ + @Override + public void loadAlbumCover(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(new CenterCrop(), new RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + + /** + * 鍔犺浇鍥剧墖鍒楄〃鍥剧墖 + * + * @param context 涓婁笅鏂� + * @param url 鍥剧墖璺緞 + * @param imageView 鎵胯浇鍥剧墖ImageView + */ + @Override + public void loadGridImage(Context context, String url, ImageView imageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context) + .load(url) + .override(200, 200) + .centerCrop() + .placeholder(R.drawable.ps_image_placeholder) + .into(imageView); + } + + @Override + public void pauseRequests(Context context) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context).pauseRequests(); + } + + @Override + public void resumeRequests(Context context) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return; + } + Glide.with(context).resumeRequests(); + } + + private GlideEngine() { + } + + private static final class InstanceHolder { + static final GlideEngine instance = new GlideEngine(); + } + + public static GlideEngine createGlideEngine() { + return InstanceHolder.instance; + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/RocketMQConsumer.java b/app/src/main/java/com/dayu/pipirrapp/tool/RocketMQConsumer.java deleted file mode 100644 index 2ab6fac..0000000 --- a/app/src/main/java/com/dayu/pipirrapp/tool/RocketMQConsumer.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.dayu.pipirrapp.tool; - -import android.util.Log; - -import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; -import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; -import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; -import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; -import org.apache.rocketmq.client.exception.MQClientException; -import org.apache.rocketmq.common.message.MessageExt; - -import java.util.List; - -/** - * author: zuo - * Date: 2024-09-03 - * Time: 13:51 - * 澶囨敞锛歁Q娑堟伅闃熷垪妯″潡 - */ -public class RocketMQConsumer { - - private DefaultMQPushConsumer consumer; - - public void start() { - try { - // 鍒涘缓涓�涓秷璐硅�呭疄渚� - consumer = new DefaultMQPushConsumer("YourConsumerGroup"); - - // 璁剧疆NameServer鍦板潃 - consumer.setNamesrvAddr("YourNameServerAddress"); - - // 璁㈤槄涓�涓垨澶氫釜Topic - consumer.subscribe("YourTopic", "*"); - - // 娉ㄥ唽娑堟伅鐩戝惉鍣� - consumer.registerMessageListener(new MessageListenerConcurrently() { - @Override - public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { - for (MessageExt msg : msgs) { - // 澶勭悊娑堟伅 - Log.d("RocketMQ", "Receive message: " + new String(msg.getBody())); - // 杩欓噷鍙互瑙﹀彂鏈湴閫氱煡鎴栬�呮洿鏂癠I - } - return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; - } - }); - - // 鍚姩娑堣垂鑰� - consumer.start(); - - } catch (MQClientException e) { - e.printStackTrace(); - Log.e("RocketMQ", "Consumer failed to start: " + e.getMessage()); - } - } - - public void stop() { - if (consumer != null) { - consumer.shutdown(); - } - } -} diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java b/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java index ff1ec5b..752bc9f 100644 --- a/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java +++ b/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java @@ -17,6 +17,8 @@ public final static String isStartInspec = "isStartInspec"; //瀹氫綅鍚� - public final static String locationData="locationData"; + public final static String locationData = "locationData"; + + public final static String MQTTData = "MQTTData"; } diff --git a/app/src/main/res/drawable/edittext_backgroud.xml b/app/src/main/res/drawable/edittext_backgroud.xml new file mode 100644 index 0000000..7775948 --- /dev/null +++ b/app/src/main/res/drawable/edittext_backgroud.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- 鑳屾櫙棰滆壊 --> + <solid android:color="#FFFFFF" /> + + <!-- 鍦嗚 --> + <corners android:radius="6dp" /> + + <!-- 杈规 --> + <stroke + android:color="#CCCCCC" + android:width="2dp" /> + + <!-- 鍐呰竟璺� --> + <padding + android:left="16dp" + android:right="16dp" + android:top="10dp" + android:bottom="10dp" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_choose_bg_whit.xml b/app/src/main/res/drawable/ic_choose_bg_whit.xml new file mode 100644 index 0000000..f7ddfe6 --- /dev/null +++ b/app/src/main/res/drawable/ic_choose_bg_whit.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="#ffffff" /> + <corners android:radius="5dp" /> + <stroke + android:width="1dp" + android:color="#ffffff" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_choose_gray_edge.xml b/app/src/main/res/drawable/ic_choose_gray_edge.xml new file mode 100644 index 0000000..71acd81 --- /dev/null +++ b/app/src/main/res/drawable/ic_choose_gray_edge.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="#ffffff" /> + <corners android:radius="5dp" /> + <stroke + android:width="1dp" + android:color="#ededed" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ps_audio_placeholder.xml b/app/src/main/res/drawable/ps_audio_placeholder.xml new file mode 100644 index 0000000..4f5960a --- /dev/null +++ b/app/src/main/res/drawable/ps_audio_placeholder.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape> + <size + android:width="100dp" + android:height="100dp" /> + <solid android:color="@color/ps_color_light_grey" /> + </shape> + </item> + <item> + <bitmap + android:gravity="center" + android:src="@drawable/ps_ic_audio_placeholder" /> + </item> +</layer-list> \ No newline at end of file diff --git a/app/src/main/res/drawable/ps_image_placeholder.xml b/app/src/main/res/drawable/ps_image_placeholder.xml new file mode 100644 index 0000000..8c63cb1 --- /dev/null +++ b/app/src/main/res/drawable/ps_image_placeholder.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape> + <size + android:width="100dp" + android:height="100dp" /> + <solid android:color="@color/ps_color_light_grey" /> + </shape> + </item> + <item> + <bitmap + android:gravity="center" + android:src="@drawable/ps_ic_placeholder" /> + </item> +</layer-list> \ No newline at end of file diff --git a/app/src/main/res/drawable/top_state_bg.xml b/app/src/main/res/drawable/top_state_bg.xml new file mode 100644 index 0000000..ac493be --- /dev/null +++ b/app/src/main/res/drawable/top_state_bg.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="@color/title_choose_bg" /> + <corners android:radius="5dp" /> + <stroke + android:width="1dp" + android:color="@color/title_choose_bg" /> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 27e2b41..20ac86a 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -45,7 +45,7 @@ android:hint="璇疯緭鍏ュ瘑鐮�" android:inputType="textPassword" android:maxLines="1" - android:text="admin" + android:text="dyyjy" android:paddingLeft="10dp" android:singleLine="true" /> diff --git a/app/src/main/res/layout/activity_order_deal.xml b/app/src/main/res/layout/activity_order_deal.xml new file mode 100644 index 0000000..46c5be9 --- /dev/null +++ b/app/src/main/res/layout/activity_order_deal.xml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + <data> + + <variable + name="itemclidk" + type="com.dayu.pipirrapp.fragment.OrderFragment" /> + + <variable + name="data" + type="com.dayu.pipirrapp.bean.net.OrderListResult.Data" /> + </data> + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <include + android:id="@+id/title" + layout="@layout/top_title" /> + + + <LinearLayout + android:id="@+id/center" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_above="@+id/deal_button" + android:layout_below="@+id/title" + android:orientation="vertical" + android:padding="20dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙嶉鍐呭锛�" + android:textColor="@color/black" + android:textSize="@dimen/order_detail_button_size" /> + + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:background="@drawable/edittext_backgroud" + android:minHeight="100dp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎻愪氦鍥剧墖锛�" + android:layout_marginTop="10dp" + android:textColor="@color/black" + android:textSize="@dimen/order_detail_button_size" /> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recycler" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:overScrollMode="never" /> + + </LinearLayout> + + <TextView + android:id="@+id/deal_button" + 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:text="鎻� 浜�" + android:textColor="@color/white" + android:textSize="@dimen/order_detail_button_size" /> + + + </RelativeLayout> + +</layout> diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml new file mode 100644 index 0000000..613ac31 --- /dev/null +++ b/app/src/main/res/layout/activity_order_detail.xml @@ -0,0 +1,363 @@ +<?xml version="1.0" encoding="utf-8"?> + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + <data> + + <variable + name="itemclidk" + type="com.dayu.pipirrapp.activity.OrderDetailActivity" /> + + <variable + name="data" + type="com.dayu.pipirrapp.bean.net.OrderDetailResult" /> + </data> + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <include + android:id="@+id/title" + layout="@layout/top_title" /> + + + <ScrollView + android:id="@+id/ScrollView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@+id/title"> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="20dp"> + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="30dp" + android:orientation="horizontal"> + + <ImageView + android:id="@+id/ic_project" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginRight="15dp" + android:layout_centerVertical="true" + android:src="@mipmap/icon_project" /> + + <TextView + android:id="@+id/projectName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + + android:layout_marginEnd="15dp" + android:layout_toStartOf="@+id/stateText" + android:layout_toEndOf="@+id/ic_project" + android:ellipsize="end" + android:maxLines="1" + android:text="@{data.taskType}" + android:textColor="@color/title_color" + android:textSize="@dimen/order_detail_text_size" /> + + + <TextView + android:id="@+id/stateText" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@drawable/ic_edt_gray_bg" + android:gravity="center" + android:paddingLeft="10dp" + android:paddingTop="5dp" + android:paddingRight="10dp" + android:paddingBottom="5dp" + android:text="@{data.state}" + android:textSize="@dimen/manage_item_text_state_size" /> + + + </RelativeLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + + <TextView + android:id="@+id/jinduTag" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="宸ュ崟ID锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + android:id="@+id/jindu" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@{data.workOrderId}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="娲惧崟浜哄鍚嶏細" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{data.dispatcher}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="娲惧崟鏃堕棿锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@{data.dispatchTime}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:text="浠诲姟绫诲瀷锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + android:id="@+id/startTime" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@{data.taskType}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + + <TextView + android:id="@+id/daiShenPiTag" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瑕佹眰瀹屾垚鏃堕棿锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + android:id="@+id/daiShenPi" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@{data.deadLine}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瀹屾垚鏍囧噯锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + android:id="@+id/xiangMuJianCheng" + android:layout_width="match_parent" + android:layout_height="wrap_content" + + android:text="@{data.completeCriteria}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浠诲姟鍐呭锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + 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" /> + + + </LinearLayout> + + + <LinearLayout + android:id="@+id/orderDealLL" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:gravity="center" + android:text="澶勭悊缁撴灉" + android:textColor="@color/base_blue" + android:textSize="@dimen/order_detail_text_size" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙嶉锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@{data.completeCriteria}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="10dp" + android:orientation="vertical"> + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍙嶉鍥剧墖锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/order_detail_text_size" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:layout_marginTop="10dp" /> + + + </LinearLayout> + </LinearLayout> + </LinearLayout> + + </ScrollView> + + + <TextView + android:id="@+id/deal_button" + 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:text="澶勭悊宸ュ崟" + android:onClick="@{()->itemclidk.startDealActivity()}" + android:textColor="@color/white" + android:textSize="@dimen/order_detail_button_size" /> + + + </RelativeLayout> + +</layout> diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml deleted file mode 100644 index 7fb8cea..0000000 --- a/app/src/main/res/layout/fragment_main.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/bg_color"> - - <include - android:id="@+id/title" - layout="@layout/top_title" /> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/title" - android:layout_marginStart="10dp" - android:layout_marginTop="10dp" - android:layout_marginEnd="10dp" - android:layout_marginBottom="10dp" - android:background="@drawable/bg_fillet_blue" - android:paddingLeft="15dp" - android:paddingTop="10dp" - android:paddingRight="25dp" - android:paddingBottom="10dp"> - - - <TextView - android:id="@+id/cityName" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="鍩庡競" - android:textColor="@color/white" - android:textSize="18sp" /> - - - <TextView - android:id="@+id/time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@+id/cityName" - android:layout_alignParentRight="true" - android:text="鏃ユ湡" - android:textColor="@color/white" - android:textSize="16sp" /> - - - <TextView - android:id="@+id/weather_name" - android:layout_width="wrap_content" - android:layout_height="30dp" - android:layout_below="@+id/time" - android:layout_alignParentRight="true" - android:layout_marginTop="10dp" - android:gravity="center" - android:text="澶╂皵" - android:textColor="@color/white" - android:textSize="16sp" /> - - <ImageView - android:id="@+id/weather_img" - android:layout_width="30dp" - android:layout_height="30dp" - android:layout_alignTop="@+id/weather_name" - android:layout_marginRight="10dp" - android:layout_toLeftOf="@+id/weather_name" - android:src="@mipmap/weather_99" /> - - - <TextView - android:id="@+id/weather_temperature" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@+id/weather_name" - android:layout_alignParentRight="true" - android:layout_marginTop="10dp" - android:text="娓╁害" - android:textColor="@color/white" - android:textSize="16sp" /> - - - </RelativeLayout> - - -</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index 75471b7..73c122e 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -12,13 +12,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> - <TextView - android:id="@+id/flyBtn" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - android:text="璺宠浆鍒版寚瀹氫綅缃�" /> + <TextView android:id="@+id/stateText" diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml index 25baa94..731f974 100644 --- a/app/src/main/res/layout/fragment_my.xml +++ b/app/src/main/res/layout/fragment_my.xml @@ -7,9 +7,16 @@ android:background="@color/bg_color"> - <include + + <TextView android:id="@+id/title" - layout="@layout/top_title" /> + android:layout_width="match_parent" + android:background="@color/title_color" + android:textSize="@dimen/title_center_text_size" + android:gravity="center" + android:text="鎴戠殑" + android:textColor="@color/white" + android:layout_height="@dimen/title_height"/> <View diff --git a/app/src/main/res/layout/fragment_order.xml b/app/src/main/res/layout/fragment_order.xml new file mode 100644 index 0000000..c89655f --- /dev/null +++ b/app/src/main/res/layout/fragment_order.xml @@ -0,0 +1,232 @@ +<?xml version="1.0" encoding="utf-8"?> + + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + + <data> + + <variable + name="activity" + type="com.dayu.pipirrapp.fragment.OrderFragment" /> + + </data> + + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="@dimen/title_height" + android:background="@color/title_color" + android:gravity="center" + android:text="宸ュ崟" + android:textColor="@color/white" + android:textSize="@dimen/title_center_text_size" /> + + <LinearLayout + android:id="@+id/manage_choose_ll" + android:layout_width="match_parent" + android:layout_height="@dimen/title_choose_height" + android:layout_below="@+id/title" + android:background="@color/title_choose_bg" + android:orientation="horizontal" + android:paddingTop="10dp" + android:paddingBottom="10dp" + android:visibility="gone"> + + <RelativeLayout + android:id="@+id/choose_manage_rl" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginLeft="5dp" + + android:layout_marginRight="5dp" + + android:layout_weight="1" + android:background="@drawable/ic_choose_bg_whit" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:id="@+id/choose_manage_name" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_toStartOf="@+id/choose_xiangmu_right" + android:gravity="center" + android:text="鍏ㄩ儴椤圭洰" + android:textColor="@color/choose_grey" + android:textSize="@dimen/top_choose_text_size" /> + + <ImageView + android:id="@+id/choose_xiangmu_right" + android:layout_width="15dp" + android:layout_height="15dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="8dp" + android:src="@mipmap/icon_bottom" /> + </RelativeLayout> + + <RelativeLayout + android:id="@+id/choose_pianqu_rl" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + + android:layout_weight="1" + android:background="@drawable/ic_choose_bg_whit" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:id="@+id/choose_pianqu_name" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_toStartOf="@+id/choose_pianqu_right" + android:gravity="center" + android:text="鍏ㄩ儴鐗囧尯" + android:textColor="@color/choose_grey" + android:textSize="@dimen/top_choose_text_size" /> + + <ImageView + android:id="@+id/choose_pianqu_right" + android:layout_width="15dp" + android:layout_height="15dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="8dp" + android:src="@mipmap/icon_bottom" /> + </RelativeLayout> + + <RelativeLayout + android:id="@+id/choose_project_rl" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginLeft="5dp" + + android:layout_marginRight="5dp" + + android:layout_weight="1" + android:background="@drawable/ic_choose_bg_whit" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:id="@+id/choose_project_name" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_toStartOf="@+id/choose_project_right" + android:gravity="center" + android:text="鍏ㄩ儴宸ョ▼" + android:textColor="@color/choose_grey" + android:textSize="@dimen/top_choose_text_size" /> + + <ImageView + android:id="@+id/choose_project_right" + android:layout_width="15dp" + android:layout_height="15dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="8dp" + android:src="@mipmap/icon_bottom" /> + </RelativeLayout> + </LinearLayout> + + + <LinearLayout + android:id="@+id/manage_state_ll" + android:layout_width="match_parent" + android:layout_height="@dimen/top_state_height" + android:layout_below="@+id/manage_choose_ll" + android:layout_margin="10dp" + android:background="@drawable/top_state_bg" + android:orientation="horizontal"> + + <TextView + android:id="@+id/manage_state_progress" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_margin="5dp" + android:layout_weight="1" + android:background="@drawable/ic_choose_bg_whit" + android:gravity="center" + android:text="鏈В鍐�" + android:textColor="@color/title_color" + android:textSize="@dimen/top_state_text_size" + android:textStyle="bold" /> + + <TextView + android:id="@+id/manage_state_finish" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_margin="5dp" + android:layout_weight="1" + android:gravity="center" + android:text="宸茶В鍐�" + android:textColor="@color/black" + android:textSize="@dimen/top_state_text_size" /> + + </LinearLayout> + + <ImageView + android:id="@+id/line" + android:layout_width="match_parent" + android:layout_height="2px" + android:layout_below="@+id/manage_state_ll" + android:src="@color/line_bg" /> + + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@+id/line"> + + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#fff" + android:overScrollMode="never" + android:padding="10dp" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayoutDone" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@+id/line" + android:visibility="gone"> + + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerViewDone" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#fff" + android:overScrollMode="never" + android:padding="10dp" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + + </RelativeLayout> +</layout> diff --git a/app/src/main/res/layout/item_add_filter_image.xml b/app/src/main/res/layout/item_add_filter_image.xml new file mode 100644 index 0000000..074b184 --- /dev/null +++ b/app/src/main/res/layout/item_add_filter_image.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.luck.picture.lib.widget.SquareRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/fiv" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:src="@color/app_color_f6" /> + + <ImageView + android:id="@+id/iv_del" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignTop="@id/fiv" + android:layout_alignRight="@id/fiv" + android:paddingLeft="10dp" + android:paddingBottom="10dp" + android:scaleType="centerInside" + android:src="@mipmap/ic_item_delete" + android:visibility="gone" + tools:visibility="visible" /> + + <TextView + android:id="@+id/tv_duration" + android:layout_width="match_parent" + android:layout_height="30dp" + android:layout_alignLeft="@id/fiv" + android:layout_alignRight="@id/fiv" + android:layout_alignBottom="@id/fiv" + android:background="@drawable/ps_ic_shadow_bg" + android:drawableLeft="@drawable/ps_ic_video" + android:drawablePadding="5dp" + android:gravity="center_vertical" + android:paddingLeft="5dp" + android:paddingTop="8dp" + android:text="00:00" + android:textColor="@color/app_color_white" + android:textSize="11sp" + android:visibility="gone" + tools:visibility="visible" /> +</com.luck.picture.lib.widget.SquareRelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml new file mode 100644 index 0000000..2e11ae1 --- /dev/null +++ b/app/src/main/res/layout/item_image.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:elevation="4dp"> + + <ImageView + android:id="@+id/thumbnailImageView" + android:layout_width="100dp" + android:layout_height="100dp" + android:scaleType="centerCrop"/> + +</androidx.cardview.widget.CardView> \ No newline at end of file diff --git a/app/src/main/res/layout/item_no_more.xml b/app/src/main/res/layout/item_no_more.xml new file mode 100644 index 0000000..2127db5 --- /dev/null +++ b/app/src/main/res/layout/item_no_more.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/white" + android:gravity="center" + android:orientation="vertical"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="50dp" + android:layout_marginRight="50dp" + android:src="@mipmap/ic_no_more" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:text="娌℃湁鏁版嵁" + android:textColor="@color/choose_grey" /> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_order.xml b/app/src/main/res/layout/item_order.xml new file mode 100644 index 0000000..43adade --- /dev/null +++ b/app/src/main/res/layout/item_order.xml @@ -0,0 +1,282 @@ +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + <data> + + <variable + name="itemclidk" + type="com.dayu.pipirrapp.fragment.OrderFragment" /> + + <variable + name="data" + type="com.dayu.pipirrapp.bean.net.OrderListResult.Data" /> + </data> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:background="@drawable/ic_choose_gray_edge" + android:onClick="@{()->itemclidk.startDetail(data.workOrderId)}" + android:orientation="vertical" + android:padding="10dp"> + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="30dp" + android:orientation="horizontal"> + + <ImageView + android:id="@+id/ic_project" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_centerVertical="true" + android:layout_marginRight="10dp" + android:src="@mipmap/icon_project" /> + + <TextView + android:id="@+id/projectName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + + android:layout_marginEnd="15dp" + android:layout_toStartOf="@+id/stateText" + android:layout_toEndOf="@+id/ic_project" + android:ellipsize="end" + android:maxLines="1" + android:text="@{data.taskType}" + android:textColor="@color/title_color" + android:textSize="@dimen/manage_item_text_size" /> + + + <TextView + android:id="@+id/stateText" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@drawable/ic_edt_gray_bg" + android:gravity="center" + android:paddingLeft="10dp" + android:paddingTop="5dp" + android:paddingRight="10dp" + android:paddingBottom="5dp" + android:text="@{data.state}" + android:textSize="@dimen/manage_item_text_state_size" /> + + + </RelativeLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1"> + + <TextView + android:id="@+id/jinduTag" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="宸ュ崟ID锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + <TextView + android:id="@+id/jindu" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{data.workOrderId}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + </LinearLayout> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1"> + + <TextView + android:id="@+id/daiShenPiTag" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瑕佹眰瀹屾垚鏃堕棿锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + <TextView + android:id="@+id/daiShenPi" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{data.deadLine}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + </LinearLayout> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingRight="5dp"> + + <TextView + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="瀹屾垚鏍囧噯锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + <TextView + android:id="@+id/xiangMuJianCheng" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:text="@{data.completeCriteria}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + </LinearLayout> + + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingRight="5dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浠诲姟鍐呭锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + <TextView + android:id="@+id/xiangMuType" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:text="@{data.taskContent}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + </LinearLayout> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:layout_weight="2" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:text="娲惧崟鏃堕棿锛�" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + <TextView + android:id="@+id/startTime" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@{data.dispatchTime}" + android:textColor="@color/manage_item_text" + android:textSize="@dimen/manage_item_text_size" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginTop="5dp" + android:layout_marginRight="10dp" + android:layout_weight="1" + android:orientation="horizontal" + android:visibility="gone"> + + + <TextView + android:id="@+id/lookDetail" + android:layout_width="0dp" + android:layout_height="@dimen/manage_item_btn_height" + android:layout_weight="1" + android:background="@drawable/ic_blue_background" + android:gravity="center" + + android:text="鏌ョ湅" + android:textColor="@color/white" + android:textSize="@dimen/manage_item_btn_text_size" /> + + + <TextView + android:id="@+id/examineBtn" + android:layout_width="0dp" + android:layout_height="@dimen/manage_item_btn_height" + android:layout_marginLeft="15dp" + android:layout_weight="1" + android:background="@drawable/ic_blue_background" + android:gravity="center" + + android:text="瀹℃壒" + android:textColor="@color/white" + android:textSize="@dimen/manage_item_btn_text_size" /> + + + </LinearLayout> + </LinearLayout> + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/ic_add_image.png b/app/src/main/res/mipmap-xhdpi/ic_add_image.png new file mode 100644 index 0000000..38e38da --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_add_image.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_item_delete.png b/app/src/main/res/mipmap-xhdpi/ic_item_delete.png new file mode 100644 index 0000000..2025f26 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_item_delete.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_no_more.png b/app/src/main/res/mipmap-xhdpi/ic_no_more.png new file mode 100644 index 0000000..4769505 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_no_more.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_bottom.png b/app/src/main/res/mipmap-xhdpi/icon_bottom.png new file mode 100644 index 0000000..c71682a --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/icon_bottom.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_project.png b/app/src/main/res/mipmap-xhdpi/icon_project.png new file mode 100644 index 0000000..2323b34 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/icon_project.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ps_ic_audio.png b/app/src/main/res/mipmap-xhdpi/ps_ic_audio.png new file mode 100644 index 0000000..3b33f07 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ps_ic_audio.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ps_ic_video.png b/app/src/main/res/mipmap-xhdpi/ps_ic_video.png new file mode 100644 index 0000000..9faaf32 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ps_ic_video.png Binary files differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 74d480f..9d0b954 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -15,4 +15,10 @@ <color name="line_bg">#DADADA</color> <color name="text_on">#BEBEBE</color> <color name="text_color">#696969</color> + <color name="title_choose_bg">#D9D9D9</color> + <color name="choose_grey">#cdcdcd</color> + <color name="manage_item_text">#000000</color> + <color name="manage_item_time">#AAAAAA</color> + <color name="app_color_f6">#f6f6f6</color> + <color name="app_color_white">#FFFFFF</color> </resources> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7e06c60..9994b8b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -10,4 +10,19 @@ <dimen name="dialog_btn_height">45dp</dimen> <dimen name="dialog_bg_margin">30dp</dimen> + <dimen name="title_choose_height">50dp</dimen> + <dimen name="top_choose_text_size">11sp</dimen> + <dimen name="top_state_height">40dp</dimen> + <dimen name="top_state_text_size">14sp</dimen> + <dimen name="manage_item_text_size">13sp</dimen> + <dimen name="manage_item_text_state_size">10sp</dimen> + <dimen name="manage_item_text_time_size">10sp</dimen> + <dimen name="manage_item_btn_height">30dp</dimen> + <dimen name="manage_item_btn_text_size">14sp</dimen> + + + <dimen name="order_detail_text_size">17sp</dimen> + + <dimen name="order_detail_button_size">17sp</dimen> + <dimen name="order_detail_button_height">50dp</dimen> </resources> \ No newline at end of file -- Gitblit v1.8.0