Compare commits
9 Commits
7e63101fc9
...
77f6001a31
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77f6001a31 | ||
|
|
e040be11c3 | ||
|
|
bafd193a96 | ||
|
|
b621a77e8d | ||
|
|
e9c17d355a | ||
|
|
e0249fa0fa | ||
|
|
bc270205d0 | ||
|
|
e40cf952c0 | ||
|
|
edfa6331f5 |
2
.idea/deploymentTargetSelector.xml
generated
@@ -4,7 +4,7 @@
|
|||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
<DropdownSelection timestamp="2026-06-03T03:26:05.515101Z">
|
<DropdownSelection timestamp="2026-06-06T06:46:42.891310900Z">
|
||||||
<Target type="DEFAULT_BOOT">
|
<Target type="DEFAULT_BOOT">
|
||||||
<handle>
|
<handle>
|
||||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=D122222104A9" />
|
<DeviceId pluginId="PhysicalDevice" identifier="serial=D122222104A9" />
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ dependencies {
|
|||||||
implementation 'com.github.ns3chz:Picker:1.0.2'
|
implementation 'com.github.ns3chz:Picker:1.0.2'
|
||||||
implementation 'com.github.zzy0516alex:FileSelectorRelease:v6.2'
|
implementation 'com.github.zzy0516alex:FileSelectorRelease:v6.2'
|
||||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||||
implementation 'androidx.appcompat:appcompat:1.3.1'//(最低版本)
|
implementation 'androidx.appcompat:appcompat:1.6.1'//(最低版本)
|
||||||
// implementation 'com.umeng.umsdk:share-wx:7.1.5' //微信完整版
|
// implementation 'com.umeng.umsdk:share-wx:7.1.5' //微信完整版
|
||||||
// implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.0'//微信官方依赖库,必选
|
// implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.0'//微信官方依赖库,必选
|
||||||
//商品评价星星
|
//商品评价星星
|
||||||
@@ -233,5 +233,7 @@ dependencies {
|
|||||||
implementation 'no.nordicsemi.android:ble:2.11.0'
|
implementation 'no.nordicsemi.android:ble:2.11.0'
|
||||||
//espressif官方sdk,用于esp固件的扫描,配网等。
|
//espressif官方sdk,用于esp固件的扫描,配网等。
|
||||||
implementation 'com.github.espressif:esp-idf-provisioning-android:lib-2.2.3'
|
implementation 'com.github.espressif:esp-idf-provisioning-android:lib-2.2.3'
|
||||||
|
//自定义progressBar
|
||||||
|
implementation 'com.timqi.sectorprogressview:library:2.0.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,9 @@
|
|||||||
android:theme="@style/custom_app_theme"
|
android:theme="@style/custom_app_theme"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:networkSecurityConfig="@xml/network_security_config">
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
android:localeConfig="@xml/locale_config"
|
||||||
|
tools:replace="android:localeConfig">
|
||||||
<!-- 高德地图 -->
|
<!-- 高德地图 -->
|
||||||
<meta-data android:name="com.amap.api.v2.apikey" android:value="a91364c6bbc2f5c773a949926fae7fb6">
|
<meta-data android:name="com.amap.api.v2.apikey" android:value="a91364c6bbc2f5c773a949926fae7fb6">
|
||||||
</meta-data>
|
</meta-data>
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.ckkj.water;
|
package com.ckkj.water;
|
||||||
|
|
||||||
public class AppConfig {
|
public class AppConfig {
|
||||||
|
//用户当前保存的语言状态,用于接口请求头传参
|
||||||
|
//zh_CN 中文
|
||||||
|
//en_US 英文
|
||||||
|
public static String LOCAL_LANUAGE = "zh_CN";
|
||||||
|
|
||||||
|
|
||||||
/**************************生产*******************************/
|
/**************************生产*******************************/
|
||||||
|
|||||||
@@ -50,5 +50,7 @@ public class ConstantUtil {
|
|||||||
/***************设备相关*******************/
|
/***************设备相关*******************/
|
||||||
//设备解绑成功广播
|
//设备解绑成功广播
|
||||||
public static final String DEVICE_UNBIND_SUCCESS = "device_unbind_success";
|
public static final String DEVICE_UNBIND_SUCCESS = "device_unbind_success";
|
||||||
|
//应用语言设置
|
||||||
|
public static final String KEY_APP_LANGUAGE = "key_app_language";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.google.gson.Gson;
|
|||||||
import com.ckkj.water.login.entity.LoginEntity;
|
import com.ckkj.water.login.entity.LoginEntity;
|
||||||
import com.ckkj.water.network.NetWorkManager;
|
import com.ckkj.water.network.NetWorkManager;
|
||||||
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||||
|
import com.ckkj.water.utils.manager.LanguageManager;
|
||||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -67,6 +68,9 @@ public class MyApplication extends Application {
|
|||||||
instance = this;
|
instance = this;
|
||||||
context = getApplicationContext();
|
context = getApplicationContext();
|
||||||
|
|
||||||
|
// 恢复应用语言设置
|
||||||
|
applyStoredLocale();
|
||||||
|
|
||||||
boolean isUserAgreed = SharePreUtil.getBoolean(ConstantUtil.SHARE_PRE_NAME,context,ConstantUtil.PRIVACY_POLICY_AGREED);
|
boolean isUserAgreed = SharePreUtil.getBoolean(ConstantUtil.SHARE_PRE_NAME,context,ConstantUtil.PRIVACY_POLICY_AGREED);
|
||||||
if(isUserAgreed){
|
if(isUserAgreed){
|
||||||
initializeUmengSDK();
|
initializeUmengSDK();
|
||||||
@@ -178,4 +182,12 @@ public class MyApplication extends Application {
|
|||||||
public static Context getContext() {
|
public static Context getContext() {
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用启动时恢复保存的语言设置
|
||||||
|
* 使用 AppCompatDelegate.setApplicationLocales() API
|
||||||
|
*/
|
||||||
|
private void applyStoredLocale() {
|
||||||
|
LanguageManager.applyStoredLocale();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import androidx.appcompat.app.AppCompatDelegate;
|
|||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
import androidx.viewbinding.ViewBinding;
|
import androidx.viewbinding.ViewBinding;
|
||||||
|
|
||||||
|
import com.ckkj.water.dialog.LoadingProgressDialog;
|
||||||
import com.ckkj.water.utils.manager.ThemeManager;
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.esafirm.imagepicker.features.ImagePicker;
|
import com.esafirm.imagepicker.features.ImagePicker;
|
||||||
import com.hjq.permissions.OnPermissionCallback;
|
import com.hjq.permissions.OnPermissionCallback;
|
||||||
@@ -275,6 +276,16 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadingProgressDialog progressDialog = mProgressLoadingDialog;
|
||||||
|
try {
|
||||||
|
if (progressDialog != null && mContext != null) {
|
||||||
|
mProgressLoadingDialog = null;
|
||||||
|
progressDialog.dismiss();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//每个activity都需要创建Presenter
|
//每个activity都需要创建Presenter
|
||||||
@@ -317,6 +328,7 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
|
|||||||
@Override
|
@Override
|
||||||
public void hideLoading() {
|
public void hideLoading() {
|
||||||
loadingDialog.dismiss();
|
loadingDialog.dismiss();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -359,6 +371,9 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
|
|||||||
|
|
||||||
protected LoadingDialog mLoadingDialog;
|
protected LoadingDialog mLoadingDialog;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 普通加载loading
|
||||||
|
*/
|
||||||
public void showLoadingDialog() {
|
public void showLoadingDialog() {
|
||||||
LoadingDialog dialog = mLoadingDialog;
|
LoadingDialog dialog = mLoadingDialog;
|
||||||
if (dialog == null && mContext != null) {
|
if (dialog == null && mContext != null) {
|
||||||
@@ -381,6 +396,33 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进度条加载loading
|
||||||
|
*/
|
||||||
|
protected LoadingProgressDialog mProgressLoadingDialog;
|
||||||
|
public void showProgressLoadingDialog(int progress) {
|
||||||
|
LoadingProgressDialog dialog = mProgressLoadingDialog;
|
||||||
|
if (dialog == null && mContext != null) {
|
||||||
|
dialog = new LoadingProgressDialog(mContext);
|
||||||
|
// 不可触摸取消
|
||||||
|
dialog.setCanceledOnTouchOutside(false);
|
||||||
|
// 强制取消关闭界面
|
||||||
|
dialog.setCancelable(true);
|
||||||
|
dialog.setOnCancelListener(dialog1 -> finish());
|
||||||
|
dialog.setProgress( progress);
|
||||||
|
mProgressLoadingDialog = dialog;
|
||||||
|
} else {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
if (dialog != null && mContext != null) {
|
||||||
|
try {
|
||||||
|
dialog.show();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNetChange(int netModel) {
|
public void onNetChange(int netModel) {
|
||||||
@@ -1060,7 +1102,8 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
|
|||||||
false, false, true,
|
false, false, true,
|
||||||
title,
|
title,
|
||||||
content,
|
content,
|
||||||
"不允许", "允许",
|
getString(R.string.button_deny),
|
||||||
|
getString(R.string.button_allow),
|
||||||
new BaseFragment.OnDialogClick() {
|
new BaseFragment.OnDialogClick() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancelClick() {
|
public void onCancelClick() {
|
||||||
|
|||||||
@@ -118,7 +118,8 @@ public abstract class BaseFragment<T extends ViewBinding,P extends IPresenter> e
|
|||||||
false, false,
|
false, false,
|
||||||
title,
|
title,
|
||||||
content,
|
content,
|
||||||
"不允许", "允许",
|
getString(R.string.button_deny),
|
||||||
|
getString(R.string.button_allow),
|
||||||
new BaseFragment.OnDialogClick() {
|
new BaseFragment.OnDialogClick() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancelClick() {
|
public void onCancelClick() {
|
||||||
|
|||||||
@@ -121,21 +121,8 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
AnimationDrawable animationDrawable = (AnimationDrawable) ivScanAnimation.getDrawable();
|
AnimationDrawable animationDrawable = (AnimationDrawable) ivScanAnimation.getDrawable();
|
||||||
animationDrawable.start();
|
animationDrawable.start();
|
||||||
}
|
}
|
||||||
new Handler().postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// 停止帧动画
|
|
||||||
ImageView ivScanAnimation = viewBinding.ivScanAnimation;
|
|
||||||
if (ivScanAnimation.getDrawable() instanceof AnimationDrawable) {
|
|
||||||
AnimationDrawable animationDrawable = (AnimationDrawable) ivScanAnimation.getDrawable();
|
|
||||||
if (animationDrawable.isRunning()) {
|
|
||||||
animationDrawable.stop();
|
|
||||||
viewBinding.ivScanAnimation.setVisibility(GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},3000);
|
|
||||||
initListener();
|
initListener();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -184,6 +171,7 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
super.onScanResult(callbackType, result);
|
super.onScanResult(callbackType, result);
|
||||||
//Mac地址
|
//Mac地址
|
||||||
String deviceAddress = result.getDevice().getAddress();
|
String deviceAddress = result.getDevice().getAddress();
|
||||||
|
|
||||||
// 去重:已存在的设备不再添加
|
// 去重:已存在的设备不再添加
|
||||||
if (discoveredMacSet.contains(deviceAddress)) {
|
if (discoveredMacSet.contains(deviceAddress)) {
|
||||||
return;
|
return;
|
||||||
@@ -194,13 +182,21 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
//设备名字
|
//设备名字
|
||||||
String deviceName = result.getScanRecord() != null ?
|
String deviceName = result.getScanRecord() != null ?
|
||||||
result.getScanRecord().getDeviceName() : "无名称";
|
result.getScanRecord().getDeviceName() : "无名称";
|
||||||
|
|
||||||
bean.setDeviceName(deviceName);
|
bean.setDeviceName(deviceName);
|
||||||
bean.setMacAddress(deviceAddress);
|
bean.setMacAddress(deviceAddress);
|
||||||
mDeviceList.add(bean);
|
mDeviceList.add(bean);
|
||||||
bleAdapter.notifyItemInserted(mDeviceList.size() - 1);
|
bleAdapter.notifyItemInserted(mDeviceList.size() - 1);
|
||||||
if(bleAdapter.getItemCount() != 0){
|
if(bleAdapter.getItemCount() != 0){
|
||||||
viewBinding.rvDevices.setVisibility(VISIBLE);
|
viewBinding.rvDevices.setVisibility(VISIBLE);
|
||||||
|
// 停止帧动画
|
||||||
|
ImageView ivScanAnimation = viewBinding.ivScanAnimation;
|
||||||
|
if (ivScanAnimation.getDrawable() instanceof AnimationDrawable) {
|
||||||
|
AnimationDrawable animationDrawable = (AnimationDrawable) ivScanAnimation.getDrawable();
|
||||||
|
if (animationDrawable.isRunning()) {
|
||||||
|
animationDrawable.stop();
|
||||||
|
viewBinding.ivScanAnimation.setVisibility(GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -218,7 +214,7 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
ToastUtil.showShort(mContext, "扫描失败,错误码: " + errorCode);
|
ToastUtil.showShort(mContext, "扫描失败,错误码: " + errorCode);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
scanner.startScan(filters, settings, mScanCallback);
|
scanner.startScan(null, settings, mScanCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -248,13 +244,17 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查蓝牙是否开启
|
try {
|
||||||
if (!bluetoothAdapter.isEnabled()) {
|
// 检查蓝牙是否开启
|
||||||
Log.e("TEST", "initBluetooth: 蓝牙未开启,请求开启");
|
if (!bluetoothAdapter.isEnabled()) {
|
||||||
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
|
Log.e("TEST", "initBluetooth: 蓝牙未开启,请求开启");
|
||||||
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
|
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
|
||||||
} else {
|
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
|
||||||
bluetoothReady = true;
|
} else {
|
||||||
|
bluetoothReady = true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,6 +413,8 @@ public class AddDeviceActivity_copy extends BaseActivity<AddDeviceLayoutBinding,
|
|||||||
hidePermissionDialog();
|
hidePermissionDialog();
|
||||||
if (requestCode == REQUEST_EVENT_CODE_10001) {
|
if (requestCode == REQUEST_EVENT_CODE_10001) {
|
||||||
scanQrcode();
|
scanQrcode();
|
||||||
|
}else if(requestCode == REQUEST_EVENT_CODE_10002){
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import com.ckkj.water.index.entity.WaterDeviceEntity;
|
|||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
||||||
import com.ckkj.water.utils.manager.PowerIconManage;
|
import com.ckkj.water.utils.manager.PowerIconManage;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
@@ -84,12 +85,12 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
mTimeList.add("3h");
|
mTimeList.add("3h");
|
||||||
mTimeList.add("4h");
|
mTimeList.add("4h");
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.mainBackgroundColor) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.mainBackgroundColor)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.imgSetting.setVisibility(View.VISIBLE);
|
viewBinding.includedTitle.imgSetting.setVisibility(View.VISIBLE);
|
||||||
viewBinding.includedTitle.imgSetting.setImageDrawable(getDrawable(R.mipmap.device_ctrl_setting));
|
// viewBinding.includedTitle.imgSetting.setImageDrawable(getDrawable(R.mipmap.device_ctrl_setting));
|
||||||
mAdapter = new DeviceTimeSelectAdapter(mContext,R.layout.device_work_time_item,mTimeList);
|
mAdapter = new DeviceTimeSelectAdapter(mContext,R.layout.device_work_time_item,mTimeList);
|
||||||
viewBinding.rvTimeList.setAdapter(mAdapter);
|
viewBinding.rvTimeList.setAdapter(mAdapter);
|
||||||
viewBinding.rvTimeList.addItemDecoration(new GridSpacingItemDecoration(4, 10, true));
|
viewBinding.rvTimeList.addItemDecoration(new GridSpacingItemDecoration(4, 10, true));
|
||||||
@@ -162,10 +163,10 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
|
|
||||||
case R.id.tv_confirm:
|
case R.id.tv_confirm:
|
||||||
if(mCustomDuration == 0 && mAdapter.getmSelPostion() == -1){
|
if(mCustomDuration == 0 && mAdapter.getmSelPostion() == -1){
|
||||||
ToastUtil.showShort(mContext,"请选择浇水时长");
|
ToastUtil.showShort(mContext,getString(R.string.select_watering_duration));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
showCenterTipDialog(R.mipmap.icon_dialog_success,"开始浇水");//
|
showCenterTipDialog(R.mipmap.icon_dialog_success,getString(R.string.start_watering));//
|
||||||
String status = mDeviceEntity.getStatus();
|
String status = mDeviceEntity.getStatus();
|
||||||
if(status.equals("1")){
|
if(status.equals("1")){
|
||||||
status = "0";
|
status = "0";
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.ckkj.water.device.mvp.DeviceImpl;
|
|||||||
import com.ckkj.water.device.mvp.DevicePresenter;
|
import com.ckkj.water.device.mvp.DevicePresenter;
|
||||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -28,8 +29,8 @@ public class DeviceInfoActivity extends BaseActivity<DeviceInfoLayoutBinding, De
|
|||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
|
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.mainBackgroundColor)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.device_setting_info);
|
viewBinding.includedTitle.tvTitle.setText(R.string.device_setting_info);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.ckkj.water.device.mvp.DeviceImpl;
|
|||||||
import com.ckkj.water.device.mvp.DevicePresenter;
|
import com.ckkj.water.device.mvp.DevicePresenter;
|
||||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
|
|
||||||
@@ -46,8 +47,8 @@ public class DeviceSettingsActivity extends BaseActivity<DeviceSettingsLayoutBin
|
|||||||
|
|
||||||
}
|
}
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.mainBackgroundColor)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.settings_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.settings_title);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.net.wifi.ScanResult;
|
import android.net.wifi.ScanResult;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -19,6 +20,7 @@ import com.ckkj.water.ConstantUtil;
|
|||||||
import com.ckkj.water.R;
|
import com.ckkj.water.R;
|
||||||
import com.ckkj.water.base.BaseActivity;
|
import com.ckkj.water.base.BaseActivity;
|
||||||
import com.ckkj.water.databinding.DeviceResetWifiBinding;
|
import com.ckkj.water.databinding.DeviceResetWifiBinding;
|
||||||
|
import com.ckkj.water.device.adapter.WifiListAdapter;
|
||||||
import com.ckkj.water.device.mvp.DeviceContract;
|
import com.ckkj.water.device.mvp.DeviceContract;
|
||||||
import com.ckkj.water.device.mvp.DeviceImpl;
|
import com.ckkj.water.device.mvp.DeviceImpl;
|
||||||
import com.ckkj.water.device.mvp.DevicePresenter;
|
import com.ckkj.water.device.mvp.DevicePresenter;
|
||||||
@@ -100,7 +102,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
|||||||
}
|
}
|
||||||
|
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.mainBackgroundColor)
|
.statusBarColor(R.color.color_gray_theme)
|
||||||
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext))
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext))
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
@@ -118,7 +120,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initWifiList() {
|
private void initWifiList() {
|
||||||
wifiListAdapter = new WifiListAdapter();
|
wifiListAdapter = new WifiListAdapter(mContext);
|
||||||
viewBinding.rvWifiList.setAdapter(wifiListAdapter);
|
viewBinding.rvWifiList.setAdapter(wifiListAdapter);
|
||||||
wifiListAdapter.setOnWifiItemClickListener(wifiName -> {
|
wifiListAdapter.setOnWifiItemClickListener(wifiName -> {
|
||||||
mWifiName = wifiName;
|
mWifiName = wifiName;
|
||||||
@@ -194,6 +196,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
|||||||
ToastUtil.showShort(mContext, "设备连接中,请稍后再试");
|
ToastUtil.showShort(mContext, "设备连接中,请稍后再试");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
showProgressLoadingDialog(0);
|
||||||
espProvisionManager.provisionWifi(mWifiName, viewBinding.etInputPsd.getText().toString());
|
espProvisionManager.provisionWifi(mWifiName, viewBinding.etInputPsd.getText().toString());
|
||||||
// goTo(mContext,DeviceConnectActivity.class,null);
|
// goTo(mContext,DeviceConnectActivity.class,null);
|
||||||
}
|
}
|
||||||
@@ -217,27 +220,37 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
|||||||
@Override
|
@Override
|
||||||
public void onProvisioning(int progress) {
|
public void onProvisioning(int progress) {
|
||||||
Log.i("TEST","WIFI连接进度 == " + progress);
|
Log.i("TEST","WIFI连接进度 == " + progress);
|
||||||
|
mProgressLoadingDialog.setProgress(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(String deviceName, String deviceType) {
|
public void onSuccess(String deviceName, String deviceType) {
|
||||||
Log.i("TEST","deviceName:" + deviceName + "连接成功");
|
Log.i("TEST","deviceName:" + deviceName + "连接成功");
|
||||||
|
ToastUtil.showShort(mContext, deviceName + "连接成功");
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
hideDialogLoading();
|
||||||
|
}
|
||||||
|
}, 800);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(int errorCode, String message) {
|
public void onFailed(int errorCode, String message) {
|
||||||
isBleConnecting = false;
|
isBleConnecting = false;
|
||||||
if (errorCode != 0) {
|
if (errorCode != 0) {
|
||||||
isBleConnected = espProvisionManager != null && espProvisionManager.isConnected();
|
isBleConnected = espProvisionManager != null && espProvisionManager .isConnected();
|
||||||
}
|
}
|
||||||
Log.i("TEST","errorCode == " + errorCode + " message == " + message);
|
Log.i("TEST","errorCode == " + errorCode + " message == " + message);
|
||||||
ToastUtil.showShort(mContext, message);
|
ToastUtil.showShort(mContext, message);
|
||||||
|
hideDialogLoading();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisconnected() {
|
public void onDisconnected() {
|
||||||
isBleConnecting = false;
|
isBleConnecting = false;
|
||||||
isBleConnected = false;
|
isBleConnected = false;
|
||||||
|
hideDialogLoading();
|
||||||
Log.i("TEST","onDisconnected");
|
Log.i("TEST","onDisconnected");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class DeviceTimeSelectAdapter extends BaseQuickAdapter<String, BaseViewHo
|
|||||||
helper.setTextColor(R.id.tv_itme,mContext.getResources().getColor(R.color.white));
|
helper.setTextColor(R.id.tv_itme,mContext.getResources().getColor(R.color.white));
|
||||||
}else{
|
}else{
|
||||||
relTextBg.setBackground(mContext.getResources().getDrawable(R.drawable.shape_f7f7f7_line_button_bg));
|
relTextBg.setBackground(mContext.getResources().getDrawable(R.drawable.shape_f7f7f7_line_button_bg));
|
||||||
helper.setTextColor(R.id.tv_itme,mContext.getResources().getColor(R.color.color_838080));
|
helper.setTextColor(R.id.tv_itme,mContext.getResources().getColor(R.color.textPrimaryColor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ckkj.water.device;
|
package com.ckkj.water.device.adapter;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -10,6 +11,8 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.ckkj.water.R;
|
import com.ckkj.water.R;
|
||||||
|
import com.ckkj.water.base.BaseActivity;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -18,6 +21,10 @@ public class WifiListAdapter extends RecyclerView.Adapter<WifiListAdapter.WifiVi
|
|||||||
|
|
||||||
private List<String> wifiList = new ArrayList<>();
|
private List<String> wifiList = new ArrayList<>();
|
||||||
private OnWifiItemClickListener listener;
|
private OnWifiItemClickListener listener;
|
||||||
|
private Context mContext;
|
||||||
|
public WifiListAdapter(BaseActivity mContext) {
|
||||||
|
this.mContext = mContext;
|
||||||
|
}
|
||||||
|
|
||||||
public interface OnWifiItemClickListener {
|
public interface OnWifiItemClickListener {
|
||||||
void onWifiItemClick(String wifiName);
|
void onWifiItemClick(String wifiName);
|
||||||
@@ -49,6 +56,9 @@ public class WifiListAdapter extends RecyclerView.Adapter<WifiListAdapter.WifiVi
|
|||||||
listener.onWifiItemClick(wifiName);
|
listener.onWifiItemClick(wifiName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
holder.ivWifiIcon.setImageResource(ThemeManager.isAppThemeLight(mContext) ?
|
||||||
|
R.mipmap.icon_wifi :
|
||||||
|
R.mipmap.icon_white_wifi );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.ckkj.water.dialog;
|
||||||
|
|
||||||
|
import android.animation.ObjectAnimator;
|
||||||
|
import android.animation.ValueAnimator;
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
import android.view.animation.LinearInterpolator;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.ckkj.water.R;
|
||||||
|
import com.timqi.sectorprogressview.ColorfulRingProgressView;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* author:
|
||||||
|
* time: 2019/9/18 9:34
|
||||||
|
* desc:
|
||||||
|
* version: 1.0.0
|
||||||
|
*/
|
||||||
|
public class LoadingProgressDialog extends Dialog {
|
||||||
|
private Context context;
|
||||||
|
private int mProgress = 0;
|
||||||
|
|
||||||
|
private ColorfulRingProgressView mCircleLoading;
|
||||||
|
|
||||||
|
public LoadingProgressDialog(Context context) {
|
||||||
|
super(context); // 应用透明背景样式
|
||||||
|
this.context=context;
|
||||||
|
}
|
||||||
|
public LoadingProgressDialog(Context context, String s) {
|
||||||
|
super(context);
|
||||||
|
this.context=context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProgress(int progress) {
|
||||||
|
mProgress = progress;
|
||||||
|
if(mCircleLoading != null){
|
||||||
|
mCircleLoading.setPercent( progress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LoadingProgressDialog(Context context, int theme) {
|
||||||
|
super(context, theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint({"ResourceAsColor", "MissingInflatedId"})
|
||||||
|
private void init() {
|
||||||
|
// 设置对话框背景为透明
|
||||||
|
getWindow().setBackgroundDrawable(context.getResources().getDrawable(R.color.transparent));
|
||||||
|
getWindow().setDimAmount(0f);
|
||||||
|
setCancelable(true);
|
||||||
|
setCanceledOnTouchOutside(false);
|
||||||
|
setContentView(R.layout.dialog_progress_layout);//loading的xml文件
|
||||||
|
mCircleLoading = findViewById(R.id.circle_loading);
|
||||||
|
mCircleLoading.setStartAngle(0);
|
||||||
|
mCircleLoading.setPercent(mProgress);
|
||||||
|
//加载动画资源
|
||||||
|
WindowManager.LayoutParams params = Objects.requireNonNull(getWindow()).getAttributes();
|
||||||
|
params.width = WindowManager.LayoutParams.MATCH_PARENT;
|
||||||
|
params.height = WindowManager.LayoutParams.MATCH_PARENT;
|
||||||
|
getWindow().setAttributes(params);
|
||||||
|
// 可选: 设置窗口大小
|
||||||
|
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void show() {//开启
|
||||||
|
// if (context==null){
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
super.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dismiss() {//关闭
|
||||||
|
// if (context==null){
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
super.dismiss();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -44,6 +44,7 @@ public class EspProvisionManager {
|
|||||||
private boolean provisioning;
|
private boolean provisioning;
|
||||||
private boolean eventBusRegistered;
|
private boolean eventBusRegistered;
|
||||||
private boolean ignoreNextDisconnectEvent;
|
private boolean ignoreNextDisconnectEvent;
|
||||||
|
private boolean expectDisconnected; // 标记是否预期断开(配网成功后)
|
||||||
private String currentDeviceName;
|
private String currentDeviceName;
|
||||||
private String currentDeviceType = ProvisionConfig.TRANSPORT_BLE;
|
private String currentDeviceType = ProvisionConfig.TRANSPORT_BLE;
|
||||||
|
|
||||||
@@ -328,7 +329,12 @@ public class EspProvisionManager {
|
|||||||
boolean shouldNotify = connected || connecting || provisioning;
|
boolean shouldNotify = connected || connecting || provisioning;
|
||||||
resetState();
|
resetState();
|
||||||
if (shouldNotify) {
|
if (shouldNotify) {
|
||||||
notifyDisconnected();
|
// 如果是配网成功后的预期断开,不发送断开回调
|
||||||
|
// 因为 onSuccess 已经通知过了
|
||||||
|
if (!expectDisconnected) {
|
||||||
|
notifyDisconnected();
|
||||||
|
}
|
||||||
|
expectDisconnected = false; // 重置标志
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -364,6 +370,7 @@ public class EspProvisionManager {
|
|||||||
connected = false;
|
connected = false;
|
||||||
provisioning = false;
|
provisioning = false;
|
||||||
ignoreNextDisconnectEvent = false;
|
ignoreNextDisconnectEvent = false;
|
||||||
|
// expectDisconnected 保持不变,用于断开回调判断
|
||||||
}
|
}
|
||||||
|
|
||||||
private ESPConstants.SecurityType parseSecurityType(int securityType) {
|
private ESPConstants.SecurityType parseSecurityType(int securityType) {
|
||||||
@@ -379,6 +386,7 @@ public class EspProvisionManager {
|
|||||||
private void finishProvisionSuccess() {
|
private void finishProvisionSuccess() {
|
||||||
mainHandler.removeCallbacks(provisionTimeoutTask);
|
mainHandler.removeCallbacks(provisionTimeoutTask);
|
||||||
provisioning = false;
|
provisioning = false;
|
||||||
|
expectDisconnected = true; // 标记为预期断开
|
||||||
notifyProvisioning(100);
|
notifyProvisioning(100);
|
||||||
notifySuccess();
|
notifySuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,16 @@ public class ProvisionConfig {
|
|||||||
*/
|
*/
|
||||||
public static final int DEFAULT_SECURITY = SECURITY_1;
|
public static final int DEFAULT_SECURITY = SECURITY_1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认 PoP,需和 ESP 固件保持一致
|
||||||
|
*/
|
||||||
|
public static final String DEFAULT_PROOF_OF_POSSESSION = "abcd1234";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Security2 使用的默认用户名
|
||||||
|
*/
|
||||||
|
public static final String DEFAULT_USER_NAME = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接超时时间 (毫秒)
|
* 连接超时时间 (毫秒)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ public class GuideActivity extends BaseActivity<GuideActivityLayoutBinding, Logi
|
|||||||
private List<Drawable> mImgUrls = new ArrayList<>();
|
private List<Drawable> mImgUrls = new ArrayList<>();
|
||||||
private List<ImageView> mPointList = new ArrayList<>();
|
private List<ImageView> mPointList = new ArrayList<>();
|
||||||
private boolean mHasEnterAppFlag = false;
|
private boolean mHasEnterAppFlag = false;
|
||||||
private String desc[] = {"探索你的个性特征",
|
|
||||||
"一键生成,智能排盘工具",
|
|
||||||
"贴心提供每日生活指南"};
|
|
||||||
|
|
||||||
private int[] guideDrawableIds = {
|
private int[] guideDrawableIds = {
|
||||||
R.mipmap.img_guide_1,
|
R.mipmap.img_guide_1,
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.ckkj.water.history.mvp.HistoryImpl;
|
|||||||
import com.ckkj.water.history.mvp.HistoryPresenter;
|
import com.ckkj.water.history.mvp.HistoryPresenter;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
@@ -64,6 +65,9 @@ public class TabHistoryFragment extends BaseFragment<TabHistoryFragmentLayoutBin
|
|||||||
viewBinding.refresh.setRefreshFooter(new ClassicsFooter(mContext));
|
viewBinding.refresh.setRefreshFooter(new ClassicsFooter(mContext));
|
||||||
viewBinding.refresh.setOnRefreshListener(layout -> {
|
viewBinding.refresh.setOnRefreshListener(layout -> {
|
||||||
mCurrentPage = 1;
|
mCurrentPage = 1;
|
||||||
|
mFilterStartTime = "";
|
||||||
|
mFilterEndTime = "";
|
||||||
|
mFilterType = -1;
|
||||||
viewBinding.refresh.setNoMoreData(false);
|
viewBinding.refresh.setNoMoreData(false);
|
||||||
getWaterHistoryList();
|
getWaterHistoryList();
|
||||||
|
|
||||||
@@ -72,15 +76,24 @@ public class TabHistoryFragment extends BaseFragment<TabHistoryFragmentLayoutBin
|
|||||||
mCurrentPage++;
|
mCurrentPage++;
|
||||||
getWaterHistoryList();
|
getWaterHistoryList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
viewBinding.imgTimeFilter.setImageResource(
|
||||||
|
ThemeManager.isAppThemeLight(mContext) ?
|
||||||
|
R.mipmap.icon_triangle_down : R.mipmap.icon_white_triangle_down);
|
||||||
|
viewBinding.imgTypeFilter.setImageResource(
|
||||||
|
ThemeManager.isAppThemeLight(mContext) ?
|
||||||
|
R.mipmap.icon_triangle_down : R.mipmap.icon_white_triangle_down);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getWaterHistoryList(){
|
private void getWaterHistoryList(){
|
||||||
|
showLoadingDialog();
|
||||||
mPresenter.getWaterHistoryList(mCurrentPage,mFilterStartTime,mFilterEndTime,mFilterType);
|
mPresenter.getWaterHistoryList(mCurrentPage,mFilterStartTime,mFilterEndTime,mFilterType);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initListener() {
|
private void initListener() {
|
||||||
setClick(viewBinding.linearTimeFilter);
|
setClick(viewBinding.linearTimeFilter);
|
||||||
setClick(viewBinding.linearTypeFilter);
|
setClick(viewBinding.linearTypeFilter);
|
||||||
|
setClick(viewBinding.includedNoresult.btnRefresh);
|
||||||
mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
|
mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
|
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
|
||||||
@@ -126,8 +139,10 @@ public class TabHistoryFragment extends BaseFragment<TabHistoryFragmentLayoutBin
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onDismiss(BasePopupView popupView) {
|
public void onDismiss(BasePopupView popupView) {
|
||||||
viewBinding.tvTimeFilter.setTextColor(mContext.getColor(R.color.color_222222));
|
viewBinding.tvTimeFilter.setTextColor(mContext.getColor(R.color.textPrimaryColor));
|
||||||
viewBinding.imgTimeFilter.setImageResource(R.mipmap.icon_triangle_down);
|
viewBinding.imgTimeFilter.setImageResource(
|
||||||
|
ThemeManager.isAppThemeLight(mContext) ?
|
||||||
|
R.mipmap.icon_triangle_down : R.mipmap.icon_white_triangle_down);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.asCustom(new CustomTimeFilterPopupView(getContext(), new CustomTimeFilterPopupView.OnClickListener() {
|
.asCustom(new CustomTimeFilterPopupView(getContext(), new CustomTimeFilterPopupView.OnClickListener() {
|
||||||
@@ -156,8 +171,10 @@ public class TabHistoryFragment extends BaseFragment<TabHistoryFragmentLayoutBin
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onDismiss(BasePopupView popupView) {
|
public void onDismiss(BasePopupView popupView) {
|
||||||
viewBinding.tvTypeFilter.setTextColor(mContext.getColor(R.color.color_222222));
|
viewBinding.tvTypeFilter.setTextColor(mContext.getColor(R.color.textPrimaryColor));
|
||||||
viewBinding.imgTypeFilter.setImageResource(R.mipmap.icon_triangle_down);
|
viewBinding.imgTypeFilter.setImageResource(
|
||||||
|
ThemeManager.isAppThemeLight(mContext) ?
|
||||||
|
R.mipmap.icon_triangle_down : R.mipmap.icon_white_triangle_down);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.asCustom(new CustomTypeFilterPopupView(getContext(), new CustomTypeFilterPopupView.OnClickListener() {
|
.asCustom(new CustomTypeFilterPopupView(getContext(), new CustomTypeFilterPopupView.OnClickListener() {
|
||||||
@@ -173,7 +190,14 @@ public class TabHistoryFragment extends BaseFragment<TabHistoryFragmentLayoutBin
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
typePopupView.show();
|
typePopupView.show();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case R.id.btn_refresh:
|
||||||
|
mCurrentPage = 1;
|
||||||
|
mFilterStartTime = "";
|
||||||
|
mFilterEndTime = "";
|
||||||
|
mFilterType = -1;
|
||||||
|
getWaterHistoryList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
|||||||
private void initListener() {
|
private void initListener() {
|
||||||
setClick(viewBinding.imgScan);
|
setClick(viewBinding.imgScan);
|
||||||
setClick(viewBinding.imgAdd);
|
setClick(viewBinding.imgAdd);
|
||||||
|
setClick(viewBinding.includedNoresult.btnRefresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setClick(View view) {
|
private void setClick(View view) {
|
||||||
@@ -101,8 +102,10 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
|||||||
//检测有无相机权限
|
//检测有无相机权限
|
||||||
String readPermission = Manifest.permission.CAMERA;
|
String readPermission = Manifest.permission.CAMERA;
|
||||||
if(!hasRecordPermission(readPermission)){
|
if(!hasRecordPermission(readPermission)){
|
||||||
getPermissionRequst(readPermission,"权限申请",
|
getPermissionRequst(readPermission,
|
||||||
"智能浇水需要您的授权访问相机,并使用扫一扫",REQUEST_EVENT_CODE_10001);
|
getString(R.string.permission_request_title),
|
||||||
|
getString(R.string.camera_permission_scan_desc),
|
||||||
|
REQUEST_EVENT_CODE_10001);
|
||||||
}else{
|
}else{
|
||||||
scanQrcode();
|
scanQrcode();
|
||||||
}
|
}
|
||||||
@@ -117,6 +120,11 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
|||||||
goTo(mContext, AddDeviceActivity_copy.class,null);
|
goTo(mContext, AddDeviceActivity_copy.class,null);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case R.id.btn_refresh:
|
||||||
|
mCurrentPage = 1;
|
||||||
|
mPresenter.getDevicesList(mCurrentPage);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.ckkj.water.login.mvp.LoginContract;
|
|||||||
import com.ckkj.water.login.mvp.LoginImpl;
|
import com.ckkj.water.login.mvp.LoginImpl;
|
||||||
import com.ckkj.water.login.mvp.LoginPresenter;
|
import com.ckkj.water.login.mvp.LoginPresenter;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
@@ -36,8 +37,8 @@ public class ForgetPasswordActivity extends BaseActivity<RegisterLayoutBinding,
|
|||||||
public void initData(Bundle savedInstanceState) {
|
public void initData(Bundle savedInstanceState) {
|
||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.color_gray_theme)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.reset_psd_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.reset_psd_title);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.widget.TextView;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
|
import com.ckkj.water.utils.manager.LanguageManager;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
import com.ckkj.water.AppConfig;
|
import com.ckkj.water.AppConfig;
|
||||||
@@ -86,60 +87,83 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupAgreementText() {
|
private void setupAgreementText() {
|
||||||
//勾选协议,增加点击区域
|
|
||||||
ClickUtil.addClickPart(viewBinding.checkboxRead,100);
|
ClickUtil.addClickPart(viewBinding.checkboxRead, 100);
|
||||||
|
|
||||||
TextView tvAgreement = findViewById(R.id.tv_agreement_full);
|
TextView tvAgreement = findViewById(R.id.tv_agreement_full);
|
||||||
String content = "我已经阅读并同意智能浇灌《用户协议》、《隐私政策》";
|
|
||||||
|
String content = getString(R.string.agree_user_policy);
|
||||||
|
|
||||||
|
String userAgreementText = getString(R.string.user_agreement);
|
||||||
|
String privacyPolicyText = getString(R.string.privacy_policy);
|
||||||
|
|
||||||
SpannableString spannableString = new SpannableString(content);
|
SpannableString spannableString = new SpannableString(content);
|
||||||
|
|
||||||
// 设置“用户协议”可点击
|
addClickableSpan(
|
||||||
ClickableSpan userAgreementSpan = new ClickableSpan() {
|
spannableString,
|
||||||
|
content,
|
||||||
|
userAgreementText,
|
||||||
|
() -> {
|
||||||
|
ToastUtil.showShort(mContext, "用户协议");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
addClickableSpan(
|
||||||
|
spannableString,
|
||||||
|
content,
|
||||||
|
privacyPolicyText,
|
||||||
|
() -> {
|
||||||
|
ToastUtil.showShort(mContext, "隐私政策");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
tvAgreement.setText(spannableString);
|
||||||
|
tvAgreement.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
tvAgreement.setHighlightColor(Color.TRANSPARENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addClickableSpan(
|
||||||
|
SpannableString spannableString,
|
||||||
|
String content,
|
||||||
|
String target,
|
||||||
|
Runnable action) {
|
||||||
|
|
||||||
|
int start = content.indexOf(target);
|
||||||
|
|
||||||
|
if (start < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int end = start + target.length();
|
||||||
|
|
||||||
|
ClickableSpan clickableSpan = new ClickableSpan() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(@NonNull View widget) {
|
public void onClick(@NonNull View widget) {
|
||||||
// 跳转用户协议
|
action.run();
|
||||||
// Bundle bundle = new Bundle();
|
|
||||||
// bundle.putInt("from_requse_code", WebviewUserAgreement.AGREEMENT_CODE);
|
|
||||||
// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundle);
|
|
||||||
ToastUtil.showShort(mContext,"用户协议");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDrawState(@NonNull TextPaint ds) {
|
public void updateDrawState(@NonNull TextPaint ds) {
|
||||||
super.updateDrawState(ds);
|
super.updateDrawState(ds);
|
||||||
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色
|
|
||||||
ds.setUnderlineText(false); // 去掉下划线
|
|
||||||
}
|
|
||||||
};
|
|
||||||
int start1 = content.indexOf("《用户协议》");
|
|
||||||
int end1 = start1 + "《用户协议》".length();
|
|
||||||
spannableString.setSpan(userAgreementSpan, start1, end1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
||||||
|
|
||||||
// 设置“隐私政策”可点击
|
ds.setColor(
|
||||||
ClickableSpan privacyPolicySpan = new ClickableSpan() {
|
ContextCompat.getColor(
|
||||||
@Override
|
mContext,
|
||||||
public void onClick(@NonNull View widget) {
|
R.color.color_zhu
|
||||||
// 跳转隐私政策
|
)
|
||||||
// Bundle bundleYS = new Bundle();
|
);
|
||||||
// bundleYS.putInt("from_requse_code",WebviewUserAgreement.PRIVACY_CODE);
|
|
||||||
// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundleYS);
|
|
||||||
ToastUtil.showShort(mContext,"跳转隐私政策");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateDrawState(@NonNull TextPaint ds) {
|
|
||||||
super.updateDrawState(ds);
|
|
||||||
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色
|
|
||||||
ds.setUnderlineText(false);
|
ds.setUnderlineText(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
int start2 = content.indexOf("《隐私政策》");
|
|
||||||
int end2 = start2 + "《隐私政策》".length();
|
|
||||||
spannableString.setSpan(privacyPolicySpan, start2, end2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
||||||
|
|
||||||
tvAgreement.setText(spannableString);
|
spannableString.setSpan(
|
||||||
tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); // 开启点击事件
|
clickableSpan,
|
||||||
tvAgreement.setHighlightColor(Color.TRANSPARENT);
|
start,
|
||||||
|
end,
|
||||||
|
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@@ -206,20 +230,24 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.tv_language:
|
case R.id.tv_language:
|
||||||
new XPopup.Builder(mContext).asBottomList(
|
new XPopup.Builder(mContext)
|
||||||
"选择语言",
|
.isDestroyOnDismiss(true)
|
||||||
new String[]{"中文", "English"},
|
.dismissOnBackPressed(true)
|
||||||
new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher},
|
.dismissOnTouchOutside(true)
|
||||||
0,
|
.asBottomList(
|
||||||
new OnSelectListener() {
|
getString(R.string.change_language),
|
||||||
@Override
|
LanguageManager.getLanguageDisplayNames(mContext),
|
||||||
public void onSelect(int position, String text) {
|
LanguageManager.getLanguageIcons(),
|
||||||
ToastUtil.showShort(mContext,text);
|
LanguageManager.getCurrentLanguageIndex(),
|
||||||
}
|
new OnSelectListener() {
|
||||||
},
|
@Override
|
||||||
R.layout.select_language_layout,
|
public void onSelect(int position, String text) {
|
||||||
R.layout.select_language_item
|
LanguageManager.switchLanguageByIndex(position, LoginActivity.this);
|
||||||
).show();
|
}
|
||||||
|
},
|
||||||
|
R.layout.select_language_layout,
|
||||||
|
R.layout.select_language_item
|
||||||
|
).show();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.tv_reset_psd ://重置密码
|
case R.id.tv_reset_psd ://重置密码
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.ckkj.water.login.mvp.LoginContract;
|
|||||||
import com.ckkj.water.login.mvp.LoginImpl;
|
import com.ckkj.water.login.mvp.LoginImpl;
|
||||||
import com.ckkj.water.login.mvp.LoginPresenter;
|
import com.ckkj.water.login.mvp.LoginPresenter;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
@@ -35,8 +36,8 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
|
|||||||
public void initData(Bundle savedInstanceState) {
|
public void initData(Bundle savedInstanceState) {
|
||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.color_gray_theme)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.register_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.register_title);
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ public class MainActivity extends BaseActivity<MainActivityLayoutBinding, MainPr
|
|||||||
|
|
||||||
private void exitApp() {
|
private void exitApp() {
|
||||||
if ((System.currentTimeMillis() - exitTime) > 2000) {
|
if ((System.currentTimeMillis() - exitTime) > 2000) {
|
||||||
ToastUtil.showShort(getApplicationContext(), "再按一次退出");
|
ToastUtil.showShort(getApplicationContext(), getString(R.string.press_again_to_exit));
|
||||||
exitTime = System.currentTimeMillis();
|
exitTime = System.currentTimeMillis();
|
||||||
} else {
|
} else {
|
||||||
//结束所有activity
|
//结束所有activity
|
||||||
|
|||||||
@@ -57,6 +57,11 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
|
|||||||
|
|
||||||
public void onClick(View v){
|
public void onClick(View v){
|
||||||
switch (v.getId()){
|
switch (v.getId()){
|
||||||
|
|
||||||
|
case R.id.img_back:
|
||||||
|
finish();
|
||||||
|
break;
|
||||||
|
|
||||||
case R.id.linear_light:
|
case R.id.linear_light:
|
||||||
case R.id.img_light:
|
case R.id.img_light:
|
||||||
switchTheme(ThemeManager.MODE_LIGHT);
|
switchTheme(ThemeManager.MODE_LIGHT);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ckkj.water.mine;
|
|||||||
|
|
||||||
import static android.view.View.INVISIBLE;
|
import static android.view.View.INVISIBLE;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -22,6 +23,7 @@ import com.ckkj.water.mine.mvp.MinePresenter;
|
|||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||||
import com.ckkj.water.utils.manager.ActivityManager;
|
import com.ckkj.water.utils.manager.ActivityManager;
|
||||||
|
import com.ckkj.water.utils.manager.LanguageManager;
|
||||||
import com.ckkj.water.utils.manager.ThemeManager;
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
@@ -92,14 +94,14 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
|||||||
.dismissOnBackPressed(true)
|
.dismissOnBackPressed(true)
|
||||||
.dismissOnTouchOutside(true)
|
.dismissOnTouchOutside(true)
|
||||||
.asBottomList(
|
.asBottomList(
|
||||||
"选择语言",
|
getString(R.string.change_language),
|
||||||
new String[]{"中文", "English"},
|
LanguageManager.getLanguageDisplayNames(mContext),
|
||||||
new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher},
|
LanguageManager.getLanguageIcons(),
|
||||||
0,
|
LanguageManager.getCurrentLanguageIndex(),
|
||||||
new OnSelectListener() {
|
new OnSelectListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSelect(int position, String text) {
|
public void onSelect(int position, String text) {
|
||||||
ToastUtil.showShort(mContext,text);
|
LanguageManager.switchLanguageByIndex(position, getActivity());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
R.layout.select_language_layout,
|
R.layout.select_language_layout,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.ckkj.water.network.BaseBean;
|
|||||||
import com.ckkj.water.utils.LubanCompressUtil;
|
import com.ckkj.water.utils.LubanCompressUtil;
|
||||||
import com.ckkj.water.utils.PreviewFileUtil;
|
import com.ckkj.water.utils.PreviewFileUtil;
|
||||||
import com.ckkj.water.utils.dataUtil.FileUtil;
|
import com.ckkj.water.utils.dataUtil.FileUtil;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.esafirm.imagepicker.features.ImagePicker;
|
import com.esafirm.imagepicker.features.ImagePicker;
|
||||||
@@ -62,8 +63,8 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.mainBackgroundColor)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.mine_infomation_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.mine_infomation_title);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.ckkj.water.mine.mvp.MineContract;
|
|||||||
import com.ckkj.water.mine.mvp.MineImpl;
|
import com.ckkj.water.mine.mvp.MineImpl;
|
||||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,11 +28,11 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
|
|||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
|
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.white) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.mainBackgroundColor)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.register_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.mine_psd_manager);
|
||||||
initListener();
|
initListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.ckkj.water.mine.mvp.MineContract;
|
|||||||
import com.ckkj.water.mine.mvp.MineImpl;
|
import com.ckkj.water.mine.mvp.MineImpl;
|
||||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
|
|
||||||
@@ -28,8 +29,8 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
|
|||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
|
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.color_gray_theme)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.mine_psd_reset);
|
viewBinding.includedTitle.tvTitle.setText(R.string.mine_psd_reset);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.ckkj.water.EventMessage;
|
|||||||
import com.ckkj.water.MyApplication;
|
import com.ckkj.water.MyApplication;
|
||||||
import com.ckkj.water.R;
|
import com.ckkj.water.R;
|
||||||
import com.ckkj.water.utils.AppInfoUtil;
|
import com.ckkj.water.utils.AppInfoUtil;
|
||||||
|
import com.ckkj.water.utils.manager.LanguageManager;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
@@ -338,7 +339,7 @@ public class NetWorkManager {
|
|||||||
try {
|
try {
|
||||||
map.put("Authorization", "Bearer " + AppConfig.USER_TOKEN);
|
map.put("Authorization", "Bearer " + AppConfig.USER_TOKEN);
|
||||||
map.put("clientId", AppConfig.APP_CLIENT_ID);
|
map.put("clientId", AppConfig.APP_CLIENT_ID);
|
||||||
// map.put("Authorization", "Bearer " + "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxOTI1NzYwMTgxMTMyNzI2MDIyLCJ1c2VyX2tleSI6IjY0YjVmMjRjLTIyM2ItNDRkZC1iMDJlLTI0ZTRiNzNmODgxZCIsInVzZXJuYW1lIjoiMTg2NDU5MDQzMDIifQ.PiIjBZlQ9UtOuotfhd5mZZO2e8SbMpbXU7VDvVeiWZIecsFDUd51Rae09EFxQ_MJmBUEvIdyysnyqYiBC2AEfw");
|
map.put("content-language", LanguageManager.getCurrentRequestLanguage());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package com.ckkj.water.permission;
|
package com.ckkj.water.permission;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.ckkj.water.ConstantUtil;
|
import com.ckkj.water.ConstantUtil;
|
||||||
import com.ckkj.water.R;
|
import com.ckkj.water.R;
|
||||||
@@ -32,6 +35,9 @@ import pub.devrel.easypermissions.EasyPermissions;
|
|||||||
*/
|
*/
|
||||||
public class PermissionActivity extends BaseActivity<PermissionLayoutBinding, MainPresenter>
|
public class PermissionActivity extends BaseActivity<PermissionLayoutBinding, MainPresenter>
|
||||||
implements MainContract.MainView, EasyPermissions.PermissionCallbacks {
|
implements MainContract.MainView, EasyPermissions.PermissionCallbacks {
|
||||||
|
private static final int REQUEST_BLUETOOTH_PERMISSION = 1002;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MainPresenter createPresenter() {
|
public MainPresenter createPresenter() {
|
||||||
return new MainPresenter(new MainImpl());
|
return new MainPresenter(new MainImpl());
|
||||||
@@ -71,16 +77,52 @@ public class PermissionActivity extends BaseActivity<PermissionLayoutBinding, Ma
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.tv_commit:
|
case R.id.tv_commit:
|
||||||
String[] permission = {
|
// String[] permission = {
|
||||||
Manifest.permission.ACCESS_FINE_LOCATION
|
// Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
};
|
// };
|
||||||
boolean hasPermission = hasRecordPermission(permission);
|
// boolean hasPermission = hasRecordPermission(permission);
|
||||||
if(!hasPermission){
|
// if(!hasPermission){
|
||||||
getMorePermissionRequst(permission,"权限申请","智溉管家需要您的授权获取位置权限,用于添加设备",REQUEST_EVENT_CODE_10001);
|
// getMorePermissionRequst(permission,"权限申请","智溉管家需要您的授权获取位置权限,用于添加设备",REQUEST_EVENT_CODE_10001);
|
||||||
}
|
// }
|
||||||
|
checkBluetoothPermissions();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查蓝牙权限
|
||||||
|
*/
|
||||||
|
private boolean checkBluetoothPermissions() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
|
||||||
|
String[] readPermission = new String[]{
|
||||||
|
Manifest.permission.BLUETOOTH_SCAN,
|
||||||
|
Manifest.permission.BLUETOOTH_CONNECT,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
|
};
|
||||||
|
if (!hasRecordPermission(readPermission)) {
|
||||||
|
// 没有权限,只在ACTION_DOWN时去申请
|
||||||
|
getMorePermissionRequst(readPermission,
|
||||||
|
getString(R.string.bluetooth_permission_title),
|
||||||
|
getString(R.string.bluetooth_permission_desc),
|
||||||
|
REQUEST_EVENT_CODE_10003);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Android 12 以下需要位置权限才能扫描蓝牙
|
||||||
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
|
||||||
|
!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
|
||||||
|
requestPermissions(new String[]{
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION
|
||||||
|
}, REQUEST_EVENT_CODE_10003);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showError(String message) {
|
public void showError(String message) {
|
||||||
|
|
||||||
@@ -128,6 +170,9 @@ public class PermissionActivity extends BaseActivity<PermissionLayoutBinding, Ma
|
|||||||
if (requestCode == REQUEST_EVENT_CODE_10001) {
|
if (requestCode == REQUEST_EVENT_CODE_10001) {
|
||||||
ToastUtil.showShort(mContext,"权限获取成功");
|
ToastUtil.showShort(mContext,"权限获取成功");
|
||||||
finish();
|
finish();
|
||||||
|
}else if(requestCode == REQUEST_EVENT_CODE_10003){
|
||||||
|
ToastUtil.showShort(mContext,"蓝牙权限获取成功");
|
||||||
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.ckkj.water.plan.mvp.WaterPlanContract;
|
|||||||
import com.ckkj.water.plan.mvp.WaterPlanImpl;
|
import com.ckkj.water.plan.mvp.WaterPlanImpl;
|
||||||
import com.ckkj.water.plan.mvp.WaterPlanPresenter;
|
import com.ckkj.water.plan.mvp.WaterPlanPresenter;
|
||||||
import com.ckkj.water.plate.adapter.ViewPagerAdapter;
|
import com.ckkj.water.plate.adapter.ViewPagerAdapter;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
|
|
||||||
@@ -57,11 +58,10 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
|||||||
super.initData(savedInstanceState);
|
super.initData(savedInstanceState);
|
||||||
|
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.color_zhu)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
Bundle bundle = getIntent().getExtras();
|
Bundle bundle = getIntent().getExtras();
|
||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
mIsEditMode = bundle.getBoolean("is_edit", false);
|
mIsEditMode = bundle.getBoolean("is_edit", false);
|
||||||
@@ -76,7 +76,6 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
|||||||
viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.add_water_plan_title);
|
||||||
viewBinding.tvBound.setVisibility(GONE);
|
viewBinding.tvBound.setVisibility(GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
mFragmentList.add(new WaterConfigFragment_copy());
|
mFragmentList.add(new WaterConfigFragment_copy());
|
||||||
mFragmentList.add(new PlanBoundDeviceFragment());
|
mFragmentList.add(new PlanBoundDeviceFragment());
|
||||||
mFragmentList.add(new BindDeviceFragment());
|
mFragmentList.add(new BindDeviceFragment());
|
||||||
@@ -143,8 +142,11 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
|||||||
// 检查是否有未保存的数据变更
|
// 检查是否有未保存的数据变更
|
||||||
if (configFragment.hasDataChanged()) {
|
if (configFragment.hasDataChanged()) {
|
||||||
showDialogtext(null, false, false, true,
|
showDialogtext(null, false, false, true,
|
||||||
"提示", "数据已发生变更,是否保存?",
|
getString(R.string.tip_text),
|
||||||
getString(R.string.cancel_text), "保存", new BaseFragment.OnDialogClick() {
|
getString(R.string.data_changed_save_confirm),
|
||||||
|
getString(R.string.cancel_text),
|
||||||
|
getString(R.string.button_save),
|
||||||
|
new BaseFragment.OnDialogClick() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancelClick() {
|
public void onCancelClick() {
|
||||||
}
|
}
|
||||||
@@ -166,13 +168,15 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!configFragment.hasTimeConfig()) {
|
if (!configFragment.hasTimeConfig()) {
|
||||||
ToastUtil.showShort(mContext, "请至少配置一天的时间");
|
ToastUtil.showShort(mContext, getString(R.string.schedule_select_at_least_one_day));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
showDialogtext(null, false, false, true,
|
showDialogtext(null, false, false, true,
|
||||||
"提示", "关联设备需要保存排程配置,是否继续?",
|
getString(R.string.tip_text),
|
||||||
getString(R.string.cancel_text), "继续", new BaseFragment.OnDialogClick() {
|
getString(R.string.save_schedule_before_bind_device),
|
||||||
|
getString(R.string.cancel_text),
|
||||||
|
getString(R.string.btn_continue), new BaseFragment.OnDialogClick() {
|
||||||
@Override
|
@Override
|
||||||
public void onCancelClick() {
|
public void onCancelClick() {
|
||||||
}
|
}
|
||||||
@@ -200,7 +204,7 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
|||||||
entity = mIsEditMode ? mEditEntity : mNewAddEntity;
|
entity = mIsEditMode ? mEditEntity : mNewAddEntity;
|
||||||
}
|
}
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
ToastUtil.showShort(mContext, "请先保存排程");
|
ToastUtil.showShort(mContext, getString(R.string.please_save_schedule_first));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
viewBinding.tvConfig.setSelected(false);
|
viewBinding.tvConfig.setSelected(false);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
|||||||
import com.ckkj.water.plan.mvp.WaterPlanContract;
|
import com.ckkj.water.plan.mvp.WaterPlanContract;
|
||||||
import com.ckkj.water.plan.mvp.WaterPlanImpl;
|
import com.ckkj.water.plan.mvp.WaterPlanImpl;
|
||||||
import com.ckkj.water.plan.mvp.WaterPlanPresenter;
|
import com.ckkj.water.plan.mvp.WaterPlanPresenter;
|
||||||
|
import com.ckkj.water.utils.manager.ThemeManager;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.ckkj.water.utils.time.ZYTimeUtils;
|
import com.ckkj.water.utils.time.ZYTimeUtils;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
@@ -59,8 +60,8 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
|
|||||||
String jsonContent = getString(R.string.plan_water_entity_json);
|
String jsonContent = getString(R.string.plan_water_entity_json);
|
||||||
WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class);
|
WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class);
|
||||||
ImmersionBar.with(this)
|
ImmersionBar.with(this)
|
||||||
.statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色
|
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
|
||||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
.navigationBarColor(R.color.color_gray_theme)
|
||||||
.titleBar(viewBinding.rlTitle)
|
.titleBar(viewBinding.rlTitle)
|
||||||
.init();
|
.init();
|
||||||
viewBinding.includedTitle.tvTitle.setText(R.string.plan_detail_title);
|
viewBinding.includedTitle.tvTitle.setText(R.string.plan_detail_title);
|
||||||
@@ -183,7 +184,7 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
|
|||||||
if(!TextUtils.isEmpty(timeBean.getStartTime())
|
if(!TextUtils.isEmpty(timeBean.getStartTime())
|
||||||
&& timeBean.getDurationMin() != 0){
|
&& timeBean.getDurationMin() != 0){
|
||||||
hasValidTime = true;
|
hasValidTime = true;
|
||||||
bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
|
bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1,mContext));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
|
|||||||
WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean();
|
WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean();
|
||||||
bean.setWeekday(i + 1);
|
bean.setWeekday(i + 1);
|
||||||
bean.setStatus("0");
|
bean.setStatus("0");
|
||||||
bean.setWeekName(ZYTimeUtils.getWeekName(i));
|
bean.setWeekName(ZYTimeUtils.getWeekName(i,mContext));
|
||||||
list.add(bean);
|
list.add(bean);
|
||||||
}
|
}
|
||||||
mConfigEntity.setDetails(list);
|
mConfigEntity.setDetails(list);
|
||||||
@@ -105,7 +105,7 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
|
|||||||
WaterPlanWeekEntity.DetailsBean newBean = new WaterPlanWeekEntity.DetailsBean();
|
WaterPlanWeekEntity.DetailsBean newBean = new WaterPlanWeekEntity.DetailsBean();
|
||||||
newBean.setId(bean.getId());
|
newBean.setId(bean.getId());
|
||||||
newBean.setWeekday(bean.getWeekday());
|
newBean.setWeekday(bean.getWeekday());
|
||||||
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
|
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1,mContext));
|
||||||
newBean.setStatus(bean.getStatus());
|
newBean.setStatus(bean.getStatus());
|
||||||
newBean.setStartTime(ZYTimeUtils.formatHHmm(bean.getStartTime()));
|
newBean.setStartTime(ZYTimeUtils.formatHHmm(bean.getStartTime()));
|
||||||
newBean.setDurationMin(bean.getDurationMin());
|
newBean.setDurationMin(bean.getDurationMin());
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
bean.setTimeData(timeDataList);
|
bean.setTimeData(timeDataList);
|
||||||
bean.setWeekday(i + 1);
|
bean.setWeekday(i + 1);
|
||||||
bean.setStatus("1");
|
bean.setStatus("1");
|
||||||
bean.setWeekName(ZYTimeUtils.getWeekName(i));
|
bean.setWeekName(ZYTimeUtils.getWeekName(i,mContext));
|
||||||
bean.setTriggerType("0");
|
bean.setTriggerType("0");
|
||||||
list.add(bean);
|
list.add(bean);
|
||||||
}
|
}
|
||||||
@@ -293,7 +293,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
newBean.setTimeData(timeDataList);
|
newBean.setTimeData(timeDataList);
|
||||||
newBean.setId(bean.getId());
|
newBean.setId(bean.getId());
|
||||||
newBean.setWeekday(bean.getWeekday());
|
newBean.setWeekday(bean.getWeekday());
|
||||||
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
|
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1,mContext));
|
||||||
newBean.setStatus(bean.getStatus());
|
newBean.setStatus(bean.getStatus());
|
||||||
detailsList.add(newBean);
|
detailsList.add(newBean);
|
||||||
}
|
}
|
||||||
@@ -328,7 +328,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
if (!allTimeEmpty) break;
|
if (!allTimeEmpty) break;
|
||||||
}
|
}
|
||||||
if (allTimeEmpty) {
|
if (allTimeEmpty) {
|
||||||
ToastUtil.showShort(mContext, "请至少配置一天的时间");
|
ToastUtil.showShort(mContext, getString(R.string.schedule_select_at_least_one_day));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// 校验每一天内的时间是否有冲突
|
// 校验每一天内的时间是否有冲突
|
||||||
@@ -503,7 +503,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
// 不冲突:p1.end <= p2.start 或 p2.end <= p1.start
|
// 不冲突:p1.end <= p2.start 或 p2.end <= p1.start
|
||||||
if (!(p1[1] <= p2[0] || p2[1] <= p1[0])) {
|
if (!(p1[1] <= p2[0] || p2[1] <= p1[0])) {
|
||||||
String dayName = dayBean.getWeekName();
|
String dayName = dayBean.getWeekName();
|
||||||
return dayName + "的时间配置存在冲突,请调整";
|
return dayName + getString(R.string.schedule_time_conflict);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -582,7 +582,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
public void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int position) {
|
public void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int position) {
|
||||||
SwipeMenuItem deleteItem = new SwipeMenuItem(mContext);
|
SwipeMenuItem deleteItem = new SwipeMenuItem(mContext);
|
||||||
deleteItem.setBackground(mContext.getResources().getDrawable(R.drawable.shape_item_delete_bg));
|
deleteItem.setBackground(mContext.getResources().getDrawable(R.drawable.shape_item_delete_bg));
|
||||||
deleteItem.setText("删除");
|
deleteItem.setText(getString(R.string.button_delete));
|
||||||
deleteItem.setTextColor(mContext.getResources().getColor(R.color.white));
|
deleteItem.setTextColor(mContext.getResources().getColor(R.color.white));
|
||||||
deleteItem.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
|
deleteItem.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
|
||||||
deleteItem.setWidth((int) mContext.getResources().getDimension(R.dimen.dp_90));
|
deleteItem.setWidth((int) mContext.getResources().getDimension(R.dimen.dp_90));
|
||||||
@@ -619,7 +619,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
|
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
|
||||||
ToastUtil.showShort(mContext, "排程新增成功");
|
ToastUtil.showShort(mContext, getString(R.string.schedule_add_success));
|
||||||
isConfigSubmitted = true;
|
isConfigSubmitted = true;
|
||||||
// 把接口返回的 ID 设置到 mConfigEntity,便于后续更新操作
|
// 把接口返回的 ID 设置到 mConfigEntity,便于后续更新操作
|
||||||
mLocalEntity.setId(entity.getId());
|
mLocalEntity.setId(entity.getId());
|
||||||
@@ -644,7 +644,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
|
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
|
||||||
ToastUtil.showShort(mContext, "排程更新成功");
|
ToastUtil.showShort(mContext, getString(R.string.schedule_update_success));
|
||||||
mRemoteEntity = entity;
|
mRemoteEntity = entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
|
|||||||
|
|
||||||
private void initListener() {
|
private void initListener() {
|
||||||
setClick(viewBinding.tvAdd);
|
setClick(viewBinding.tvAdd);
|
||||||
|
setClick(viewBinding.includedNoresult.btnRefresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setClick(View view) {
|
private void setClick(View view) {
|
||||||
@@ -93,6 +94,11 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
|
|||||||
case R.id.tv_add:
|
case R.id.tv_add:
|
||||||
goTo(mContext, AddWaterPlanActivity.class,null);
|
goTo(mContext, AddWaterPlanActivity.class,null);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case R.id.btn_refresh:
|
||||||
|
mCurrentPage = 1;
|
||||||
|
mPresenter.getWaterPlanList(mCurrentPage);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,205 @@
|
|||||||
|
package com.ckkj.water.utils.manager;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
|
import androidx.core.os.LocaleListCompat;
|
||||||
|
|
||||||
|
import com.ckkj.water.AppConfig;
|
||||||
|
import com.ckkj.water.ConstantUtil;
|
||||||
|
import com.ckkj.water.MyApplication;
|
||||||
|
import com.ckkj.water.R;
|
||||||
|
import com.ckkj.water.login.LoginActivity;
|
||||||
|
import com.ckkj.water.main.activity.MainActivity;
|
||||||
|
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||||
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 语言切换管理工具类
|
||||||
|
* 使用 AppCompatDelegate.setApplicationLocales() API 实现中英切换
|
||||||
|
*/
|
||||||
|
public class LanguageManager {
|
||||||
|
|
||||||
|
private static final String TAG = "LanguageManager";
|
||||||
|
private static final String LANGUAGE_ZH_CN = "zh_CN";
|
||||||
|
private static final String LANGUAGE_EN_US = "en_US";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 语言类型枚举
|
||||||
|
*/
|
||||||
|
public enum LanguageType {
|
||||||
|
CHINESE(0, "zh", "中文"),
|
||||||
|
ENGLISH(1, "en", "English");
|
||||||
|
|
||||||
|
public final int index;
|
||||||
|
public final String languageTag;
|
||||||
|
public final String displayName;
|
||||||
|
|
||||||
|
LanguageType(int index, String languageTag, String displayName) {
|
||||||
|
this.index = index;
|
||||||
|
this.languageTag = languageTag;
|
||||||
|
this.displayName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LanguageType fromIndex(int index) {
|
||||||
|
for (LanguageType type : values()) {
|
||||||
|
if (type.index == index) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return CHINESE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LanguageType fromLanguageTag(String languageTag) {
|
||||||
|
if ("en".equals(languageTag)) {
|
||||||
|
return ENGLISH;
|
||||||
|
}
|
||||||
|
return CHINESE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前语言类型
|
||||||
|
*/
|
||||||
|
public static LanguageType getCurrentLanguageType() {
|
||||||
|
LocaleListCompat locales = AppCompatDelegate.getApplicationLocales();
|
||||||
|
if (locales.isEmpty()) {
|
||||||
|
return LanguageType.CHINESE;
|
||||||
|
}
|
||||||
|
String language = locales.get(0).getLanguage();
|
||||||
|
return LanguageType.fromLanguageTag(language);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前语言索引 (0: 中文, 1: 英文)
|
||||||
|
*/
|
||||||
|
public static int getCurrentLanguageIndex() {
|
||||||
|
return getCurrentLanguageType().index;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取接口请求头需要的语言值
|
||||||
|
*/
|
||||||
|
public static String getCurrentRequestLanguage() {
|
||||||
|
return getCurrentLanguageType() == LanguageType.ENGLISH ? LANGUAGE_EN_US : LANGUAGE_ZH_CN;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步当前语言到全局配置
|
||||||
|
*/
|
||||||
|
public static void syncCurrentLanguageToAppConfig() {
|
||||||
|
AppConfig.LOCAL_LANUAGE = getCurrentRequestLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换语言
|
||||||
|
* @param languageType 要切换到的语言类型
|
||||||
|
*/
|
||||||
|
public static void switchLanguage(LanguageType languageType) {
|
||||||
|
switchLanguage(languageType, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换语言并重启应用
|
||||||
|
* @param languageType 要切换到的语言类型
|
||||||
|
* @param activity 触发切换的Activity(用于重启)
|
||||||
|
*/
|
||||||
|
public static void switchLanguage(LanguageType languageType, Activity activity) {
|
||||||
|
// 先保存语言设置
|
||||||
|
saveLanguage(languageType.languageTag);
|
||||||
|
|
||||||
|
// 设置应用语言
|
||||||
|
LocaleListCompat localeList = LocaleListCompat.forLanguageTags(languageType.languageTag);
|
||||||
|
AppCompatDelegate.setApplicationLocales(localeList);
|
||||||
|
AppConfig.LOCAL_LANUAGE = languageType == LanguageType.ENGLISH ? LANGUAGE_EN_US : LANGUAGE_ZH_CN;
|
||||||
|
|
||||||
|
// 如果传入了Activity,则重启应用
|
||||||
|
if (activity != null) {
|
||||||
|
ToastUtil.showShort(activity, activity.getString(R.string.language_switch_success));
|
||||||
|
|
||||||
|
// 延迟重启应用,确保语言设置生效
|
||||||
|
new android.os.Handler(android.os.Looper.getMainLooper()).postDelayed(() -> {
|
||||||
|
try {
|
||||||
|
boolean isLogin = AppConfig.USER_LOGIN || SharePreUtil.getBoolean(
|
||||||
|
ConstantUtil.SHARE_PRE_NAME,
|
||||||
|
activity,
|
||||||
|
ConstantUtil.USER_LOGIN
|
||||||
|
);
|
||||||
|
ActivityManager.removeAllActivity();
|
||||||
|
Intent intent = new Intent(activity, isLogin ? MainActivity.class : LoginActivity.class);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
|
activity.startActivity(intent);
|
||||||
|
System.exit(0);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换语言(通过索引)
|
||||||
|
* @param position 0: 中文, 1: 英文
|
||||||
|
*/
|
||||||
|
public static void switchLanguageByIndex(int position) {
|
||||||
|
switchLanguage(LanguageType.fromIndex(position), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换语言并重启应用(通过索引)
|
||||||
|
* @param position 0: 中文, 1: 英文
|
||||||
|
* @param activity 触发切换的Activity
|
||||||
|
*/
|
||||||
|
public static void switchLanguageByIndex(int position, Activity activity) {
|
||||||
|
switchLanguage(LanguageType.fromIndex(position), activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存语言设置到本地
|
||||||
|
*/
|
||||||
|
public static void saveLanguage(String languageTag) {
|
||||||
|
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME,
|
||||||
|
MyApplication.getContext(),
|
||||||
|
ConstantUtil.KEY_APP_LANGUAGE,
|
||||||
|
languageTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用启动时恢复保存的语言设置
|
||||||
|
* 应该在 Application.onCreate() 中调用
|
||||||
|
*/
|
||||||
|
public static void applyStoredLocale() {
|
||||||
|
String savedLocale = SharePreUtil.getString(
|
||||||
|
ConstantUtil.SHARE_PRE_NAME,
|
||||||
|
MyApplication.getContext(),
|
||||||
|
ConstantUtil.KEY_APP_LANGUAGE);
|
||||||
|
|
||||||
|
if (savedLocale != null && !savedLocale.isEmpty()) {
|
||||||
|
LocaleListCompat localeList = LocaleListCompat.forLanguageTags(savedLocale);
|
||||||
|
AppCompatDelegate.setApplicationLocales(localeList);
|
||||||
|
}
|
||||||
|
syncCurrentLanguageToAppConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取语言选择列表的显示文本
|
||||||
|
*/
|
||||||
|
public static String[] getLanguageDisplayNames(Context context) {
|
||||||
|
return new String[]{
|
||||||
|
context.getString(R.string.language_chinese),
|
||||||
|
context.getString(R.string.language_english)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取语言选择列表的图标资源ID
|
||||||
|
*/
|
||||||
|
public static int[] getLanguageIcons() {
|
||||||
|
return new int[]{
|
||||||
|
R.mipmap.icon_langage_chinese,
|
||||||
|
R.mipmap.icon_langage_eng
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,9 @@ package com.ckkj.water.utils.time;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.ckkj.water.R;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@@ -1062,16 +1065,24 @@ public class ZYTimeUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String[] WEEK_NAMES = {"周一", "周二", "周三", "周四", "周五", "周六", "周日"};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据星期索引获取星期名称
|
* 根据星期索引获取星期名称
|
||||||
* @param weekday 星期索引,0=周一,1=周二,...,6=周日
|
* @param weekday 星期索引,0=周一,1=周二,...,6=周日
|
||||||
* @return 对应的星期名称
|
* @return 对应的星期名称
|
||||||
*/
|
*/
|
||||||
public static String getWeekName(int weekday) {
|
public static String getWeekName(int weekday,Context context) {
|
||||||
|
String[] weekNames = {
|
||||||
|
context.getString(R.string.week_monday),
|
||||||
|
context.getString(R.string.week_tuesday),
|
||||||
|
context.getString(R.string.week_wednesday),
|
||||||
|
context.getString(R.string.week_thursday),
|
||||||
|
context.getString(R.string.week_friday),
|
||||||
|
context.getString(R.string.week_saturday),
|
||||||
|
context.getString(R.string.week_sunday)
|
||||||
|
};
|
||||||
if (weekday >= 0 && weekday < 7) {
|
if (weekday >= 0 && weekday < 7) {
|
||||||
return WEEK_NAMES[weekday];
|
return weekNames[weekday];
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
app/src/main/res/drawable-night/icon_mine_settings.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
app/src/main/res/drawable-night/img_back_black.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
app/src/main/res/drawable-xhdpi-v4/img_back_black.png
Normal file
|
After Width: | Height: | Size: 901 B |
BIN
app/src/main/res/drawable-xxhdpi-v4/img_back_black.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-xxxhdpi-v4/img_back_black.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/drawable/icon_mine_settings.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
app/src/main/res/drawable/img_back_black.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<corners android:radius="5dp"/>
|
<corners android:radius="5dp"/>
|
||||||
<solid android:color="@color/white"/>
|
<solid android:color="@color/deviceControlItemColor"/>
|
||||||
<stroke android:color="@color/color_ebebeb" android:width="@dimen/dp_0_5"/>
|
<stroke android:color="@color/color_ebebeb" android:width="@dimen/dp_0_5"/>
|
||||||
</shape>
|
</shape>
|
||||||
5
app/src/main/res/drawable/shape_loading_trans_bg.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<corners android:radius="@dimen/dp_8"/>
|
||||||
|
<solid android:color="@color/trans_dark_50"/>
|
||||||
|
</shape>
|
||||||
@@ -3,7 +3,14 @@
|
|||||||
<item android:state_selected="true">
|
<item android:state_selected="true">
|
||||||
<shape android:shape="rectangle">
|
<shape android:shape="rectangle">
|
||||||
<solid android:color="@color/color_zhu" />
|
<solid android:color="@color/color_zhu" />
|
||||||
<corners android:topLeftRadius="@dimen/dp_4" android:bottomLeftRadius="@dimen/dp_4" />
|
<corners android:radius="@dimen/dp_4"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item android:state_selected="false">
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<corners android:radius="@dimen/dp_4"/>
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
|
|||||||
@@ -6,4 +6,10 @@
|
|||||||
<corners android:topRightRadius="@dimen/dp_4" android:bottomRightRadius="@dimen/dp_4" />
|
<corners android:topRightRadius="@dimen/dp_4" android:bottomRightRadius="@dimen/dp_4" />
|
||||||
</shape>
|
</shape>
|
||||||
</item>
|
</item>
|
||||||
|
<item android:state_selected="false">
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<corners android:topRightRadius="@dimen/dp_4" android:bottomRightRadius="@dimen/dp_4" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
</selector>
|
</selector>
|
||||||
@@ -95,5 +95,6 @@
|
|||||||
android:paddingVertical="@dimen/dp_10"
|
android:paddingVertical="@dimen/dp_10"
|
||||||
android:layout_marginHorizontal="@dimen/dp_20"
|
android:layout_marginHorizontal="@dimen/dp_20"
|
||||||
android:layout_marginTop="@dimen/dp_40"
|
android:layout_marginTop="@dimen/dp_40"
|
||||||
android:gravity="center"/>
|
android:gravity="center"
|
||||||
|
android:visibility="gone"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -2,7 +2,8 @@
|
|||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/color_gray_theme">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/included_title"
|
android:id="@+id/included_title"
|
||||||
layout="@layout/include_activity_back_layout" />
|
layout="@layout/include_activity_back_gray_layout" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -24,6 +25,7 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:layout_margin="@dimen/dp_1"
|
||||||
android:background="@drawable/tab_selector_bg"
|
android:background="@drawable/tab_selector_bg"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@drawable/tab_selector_text"
|
android:textColor="@drawable/tab_selector_text"
|
||||||
@@ -34,7 +36,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:background="@drawable/tab_selector_bg_center"
|
android:layout_margin="@dimen/dp_1"
|
||||||
|
android:background="@drawable/tab_selector_bg"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@drawable/tab_selector_text"
|
android:textColor="@drawable/tab_selector_text"
|
||||||
android:text="@string/water_bound_device"/>
|
android:text="@string/water_bound_device"/>
|
||||||
@@ -44,7 +47,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:background="@drawable/tab_selector_bg2"
|
android:layout_margin="@dimen/dp_1"
|
||||||
|
android:background="@drawable/tab_selector_bg"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@drawable/tab_selector_text"
|
android:textColor="@drawable/tab_selector_text"
|
||||||
android:text="@string/water_device_bind"/>
|
android:text="@string/water_device_bind"/>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:text="浅色"
|
android:text="@string/theme_light"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:text="深色"
|
android:text="@string/theme_dark"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -183,10 +183,11 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:paddingVertical="@dimen/dp_6"
|
android:paddingVertical="@dimen/dp_6"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:background="@drawable/shape_f9f9f9_corner_5"
|
android:background="@drawable/shape_f9f9f9_corner_5"
|
||||||
android:layout_marginHorizontal="@dimen/dp_20">
|
android:layout_marginHorizontal="@dimen/dp_10">
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_work_duartion"
|
android:id="@+id/tv_work_duartion"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -195,6 +196,7 @@
|
|||||||
android:layout_weight="3"
|
android:layout_weight="3"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/device_custom_work_time"/>
|
android:hint="@string/device_custom_work_time"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/white">
|
android:background="@color/mainBackgroundColor">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_info_code"/>
|
android:text="@string/device_info_code"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_info_type"/>
|
android:text="@string/device_info_type"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_info_serial_number"/>
|
android:text="@string/device_info_serial_number"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_info_firmware_version"/>
|
android:text="@string/device_info_firmware_version"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_device_name"
|
android:id="@+id/tv_device_name"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/mainBackgroundColor">
|
android:background="@color/color_gray_theme">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/included_title"
|
android:id="@+id/included_title"
|
||||||
layout="@layout/include_activity_back_whitebg_layout" />
|
layout="@layout/include_activity_back_gray_layout" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -95,6 +95,17 @@
|
|||||||
android:hint="@string/input_wifi_psd_tip"/>
|
android:hint="@string/input_wifi_psd_tip"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_progress"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:textSize="20sp"
|
||||||
|
android:textColor="@color/textPrimaryColor"
|
||||||
|
android:text="进度"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rv_wifi_list"
|
android:id="@+id/rv_wifi_list"
|
||||||
@@ -117,4 +128,5 @@
|
|||||||
android:layout_marginTop="@dimen/dp_40"
|
android:layout_marginTop="@dimen/dp_40"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/color_F9F9F9">
|
android:background="@color/mainBackgroundColor">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_marginTop="@dimen/dp_20"
|
android:layout_marginTop="@dimen/dp_20"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_setting_info"
|
android:text="@string/device_setting_info"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_setting_name"/>
|
android:text="@string/device_setting_name"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point1"
|
android:id="@+id/img_point1"
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
android:layout_toLeftOf="@+id/img_point1"
|
android:layout_toLeftOf="@+id/img_point1"
|
||||||
android:layout_marginRight="@dimen/dp_20"
|
android:layout_marginRight="@dimen/dp_20"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_999999"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="设备名称"/>
|
android:text="设备名称"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_setting_info"/>
|
android:text="@string/device_setting_info"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point2"
|
android:id="@+id/img_point2"
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_setting_wifi_manager"/>
|
android:text="@string/device_setting_wifi_manager"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point3"
|
android:id="@+id/img_point3"
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_setting_unbind"/>
|
android:text="@string/device_setting_unbind"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point4"
|
android:id="@+id/img_point4"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_838080"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="30min"/>
|
android:text="30min"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
41
app/src/main/res/layout/dialog_progress_layout.xml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="170dp"
|
||||||
|
android:layout_height="170dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_marginBottom="@dimen/dp_80"
|
||||||
|
android:background="@drawable/shape_loading_trans_bg">
|
||||||
|
|
||||||
|
<!-- <ProgressBar-->
|
||||||
|
<!-- android:visibility="gone"-->
|
||||||
|
<!-- android:id="@+id/pb_load"-->
|
||||||
|
<!-- android:layout_width="45dp"-->
|
||||||
|
<!-- android:layout_height="45dp"-->
|
||||||
|
<!-- android:indeterminateDrawable="@drawable/dialog_loading_progress_bar" />-->
|
||||||
|
|
||||||
|
<com.timqi.sectorprogressview.ColorfulRingProgressView
|
||||||
|
android:id="@+id/circle_loading"
|
||||||
|
android:layout_width="@dimen/dp_110"
|
||||||
|
android:layout_height="@dimen/dp_110"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
app:bgColor="#e1e1e1"
|
||||||
|
app:fgColorEnd="@color/color_zhu"
|
||||||
|
app:fgColorStart="#B0F6AA"
|
||||||
|
app:percent="75"
|
||||||
|
app:startAngle="0"
|
||||||
|
app:strokeWidth="8dp"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_load_dialog"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:text="正在配置网络"
|
||||||
|
android:textColor="@color/color_zhu"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_marginTop="@dimen/dp_4"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/dp_10"
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
android:text="@string/history_filter_time_title"
|
android:text="@string/history_filter_time_title"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -51,7 +51,8 @@
|
|||||||
android:layout_weight="2"
|
android:layout_weight="2"
|
||||||
android:layout_marginStart="@dimen/dp_10"
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
android:hint="@string/history_filter_start_time_tip"
|
android:hint="@string/history_filter_start_time_tip"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/textPrimaryColor"
|
||||||
|
android:textColorHint="@color/textPrimaryColor"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -70,7 +71,8 @@
|
|||||||
android:layout_marginEnd="@dimen/dp_10"
|
android:layout_marginEnd="@dimen/dp_10"
|
||||||
android:gravity="right"
|
android:gravity="right"
|
||||||
android:hint="@string/history_filter_end_time_tip"
|
android:hint="@string/history_filter_end_time_tip"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/textPrimaryColor"
|
||||||
|
android:textColorHint="@color/textPrimaryColor"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -17,13 +17,15 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_40"
|
android:layout_height="@dimen/dp_40"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_marginHorizontal="@dimen/dp_20">
|
android:layout_marginHorizontal="@dimen/dp_20"
|
||||||
|
android:background="@drawable/shape_add_water_tab_bg">
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_history"
|
android:id="@+id/tv_history"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:layout_margin="@dimen/dp_1"
|
||||||
android:background="@drawable/tab_selector_bg"
|
android:background="@drawable/tab_selector_bg"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@drawable/tab_selector_text"
|
android:textColor="@drawable/tab_selector_text"
|
||||||
@@ -34,7 +36,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:background="@drawable/tab_selector_bg2"
|
android:layout_margin="@dimen/dp_1"
|
||||||
|
android:background="@drawable/tab_selector_bg"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@drawable/tab_selector_text"
|
android:textColor="@drawable/tab_selector_text"
|
||||||
android:text="@string/plan_tab_tally"/>
|
android:text="@string/plan_tab_tally"/>
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/relative_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_48"
|
||||||
|
android:background="@color/color_gray_theme">
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_back"
|
||||||
|
android:layout_width="22dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:src="@mipmap/img_back_black"
|
||||||
|
android:layout_marginLeft="@dimen/dp_10"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textColor="@color/textPrimaryColor"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:text="标题名称"
|
||||||
|
android:layout_marginLeft="@dimen/dp_10"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_centerHorizontal="true"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_info"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toRightOf="@+id/tv_title"
|
||||||
|
android:textSize="@dimen/sp_14"
|
||||||
|
android:textColor="@color/color_2E2E2E"
|
||||||
|
android:text="(剩余时间)"
|
||||||
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_right"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_marginRight="@dimen/dp_10"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textColor="@color/color_333333"
|
||||||
|
android:text=""
|
||||||
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
|
android:visibility="visible"/>
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_setting"
|
||||||
|
android:layout_width="@dimen/dp_20"
|
||||||
|
android:layout_height="@dimen/dp_20"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:src="@drawable/icon_mine_settings"
|
||||||
|
android:layout_marginRight="@dimen/dp_20"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
</RelativeLayout>
|
||||||
|
</RelativeLayout>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
android:layout_width="22dp"
|
android:layout_width="22dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:src="@mipmap/img_back_black"
|
android:src="@drawable/img_back_black"
|
||||||
android:layout_marginLeft="@dimen/dp_10"/>
|
android:layout_marginLeft="@dimen/dp_10"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_title"
|
android:id="@+id/tv_title"
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
android:layout_height="@dimen/dp_20"
|
android:layout_height="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:src="@mipmap/icon_mine_settings"
|
android:src="@drawable/icon_mine_settings"
|
||||||
android:layout_marginRight="@dimen/dp_20"
|
android:layout_marginRight="@dimen/dp_20"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_centerHorizontal="true"/>
|
android:layout_centerHorizontal="true"/>
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/tv_noresult"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
@@ -21,5 +22,19 @@
|
|||||||
android:text="暂无结果"
|
android:text="暂无结果"
|
||||||
android:layout_below="@+id/img_noresult"
|
android:layout_below="@+id/img_noresult"
|
||||||
android:layout_centerHorizontal="true"/>
|
android:layout_centerHorizontal="true"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/btn_refresh"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingVertical="@dimen/dp_5"
|
||||||
|
android:paddingHorizontal="@dimen/dp_10"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:background="@drawable/shape_green_button_bg"
|
||||||
|
android:layout_below="@+id/tv_noresult"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/btn_manual_refresh"
|
||||||
|
android:textColor="@color/color_white"
|
||||||
|
android:textSize="16sp" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/dp_4"
|
android:layout_marginLeft="@dimen/dp_4"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/plan_start_time"
|
android:text="@string/plan_start_time"
|
||||||
android:layout_marginVertical="@dimen/dp_13"/>
|
android:layout_marginVertical="@dimen/dp_13"/>
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
android:layout_weight="9"
|
android:layout_weight="9"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:layout_marginLeft="@dimen/dp_10"
|
android:layout_marginLeft="@dimen/dp_10"
|
||||||
android:hint="@string/select_water_time"/>
|
android:hint="@string/select_water_time"/>
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/dp_4"
|
android:layout_marginLeft="@dimen/dp_4"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/plan_time"
|
android:text="@string/plan_time"
|
||||||
android:layout_marginVertical="@dimen/dp_13"/>
|
android:layout_marginVertical="@dimen/dp_13"/>
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
android:layout_weight="9"
|
android:layout_weight="9"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:layout_marginLeft="@dimen/dp_10"
|
android:layout_marginLeft="@dimen/dp_10"
|
||||||
android:hint="@string/input_water_plan_time"/>
|
android:hint="@string/input_water_plan_time"/>
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/dp_4"
|
android:layout_marginTop="@dimen/dp_4"
|
||||||
android:text="YA226641000107"
|
android:text="YA226641000107"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/color_subtitle"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
|
|
||||||
<!-- 电量信息 -->
|
<!-- 电量信息 -->
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/dp_4"
|
android:layout_marginStart="@dimen/dp_4"
|
||||||
android:text="100%"
|
android:text="100%"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/color_subtitle"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
android:layout_marginHorizontal="@dimen/dp_15"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:text="设备"
|
android:text="@string/device_setting_info"
|
||||||
android:textColor="@color/color_333333"
|
android:textColor="@color/color_333333"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/textPrimaryColor"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="背景主题"/>
|
android:text="@string/theme_title"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/textPrimaryColor"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="语言选择"/>
|
android:text="@string/language_selection"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/textPrimaryColor"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="密码管理"/>
|
android:text="@string/password_management"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/mine_nickname"/>
|
android:text="@string/mine_nickname"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point1"
|
android:id="@+id/img_point1"
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/mine_bind_phone"/>
|
android:text="@string/mine_bind_phone"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/img_point2"
|
android:id="@+id/img_point2"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:background="@color/white">
|
android:background="@color/mainBackgroundColor">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/mine_psd_reset"/>
|
android:text="@string/mine_psd_reset"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="@dimen/dp_7"
|
android:layout_width="@dimen/dp_7"
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/mine_find_psd"/>
|
android:text="@string/mine_find_psd"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="@dimen/dp_7"
|
android:layout_width="@dimen/dp_7"
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="智能浇水设备A1"
|
android:text="智能浇水设备A1"
|
||||||
android:textColor="@color/color_333333"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="17sp"
|
android:textSize="17sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="智能浇水设备A1"
|
android:text="智能浇水设备A1"
|
||||||
android:textColor="@color/color_333333"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="17sp"
|
android:textSize="17sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="周一"/>
|
android:text="周一"/>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|||||||
@@ -50,7 +50,8 @@
|
|||||||
android:background="@drawable/shape_line_gray_bg"
|
android:background="@drawable/shape_line_gray_bg"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/color_333333"
|
android:textColor="@color/textPrimaryColor"
|
||||||
|
android:textColorHint="@color/color_subtitle"
|
||||||
android:hint="请输入激活码"/>
|
android:hint="请输入激活码"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/color_F9F9F9">
|
android:background="@color/color_gray_theme">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/included_title"
|
android:id="@+id/included_title"
|
||||||
layout="@layout/include_activity_back_layout" />
|
layout="@layout/include_activity_back_gray_layout" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_register_resetpsd"
|
android:id="@+id/tv_register_resetpsd"
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_20"
|
android:layout_marginLeft="@dimen/dp_20"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/register_title"
|
android:text="@string/register_title"
|
||||||
android:textStyle="bold"/>
|
android:textStyle="bold"/>
|
||||||
|
|
||||||
@@ -44,7 +44,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_account"/>
|
android:hint="@string/hint_input_account"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -70,7 +71,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_verifi"/>
|
android:hint="@string/hint_input_verifi"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_get_verifi_code"
|
android:id="@+id/tv_get_verifi_code"
|
||||||
@@ -106,7 +108,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_psd"/>
|
android:hint="@string/hint_input_psd"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -131,7 +134,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_psd_agin"/>
|
android:hint="@string/hint_input_psd_agin"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/color_F9F9F9">
|
android:background="@color/color_gray_theme">
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rl_title"
|
android:id="@+id/rl_title"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/included_title"
|
android:id="@+id/included_title"
|
||||||
layout="@layout/include_activity_back_layout" />
|
layout="@layout/include_activity_back_gray_layout" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -34,7 +34,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_old_psd"/>
|
android:hint="@string/hint_input_old_psd"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -58,7 +59,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_new_psd"/>
|
android:hint="@string/hint_input_new_psd"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -83,7 +85,8 @@
|
|||||||
android:layout_marginLeft="@dimen/dp_5"
|
android:layout_marginLeft="@dimen/dp_5"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/text_hint_theme_color"
|
||||||
|
android:textColorHint="@color/text_hint_theme_color"
|
||||||
android:hint="@string/hint_input_new_psd_agin"/>
|
android:hint="@string/hint_input_new_psd_agin"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
android:paddingRight="@dimen/dp_20">
|
android:paddingRight="@dimen/dp_20">
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/iv_image"
|
android:id="@+id/iv_image"
|
||||||
android:layout_width="30dp"
|
android:layout_width="@dimen/dp_32"
|
||||||
android:layout_height="30dp"
|
android:layout_height="@dimen/dp_21"
|
||||||
android:scaleType="fitCenter"/>
|
android:scaleType="fitCenter"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_text"
|
android:id="@+id/tv_text"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
android:layout_weight="2"
|
android:layout_weight="2"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="周一"/>
|
android:text="周一"/>
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rv_plan_detail_times"
|
android:id="@+id/rv_plan_detail_times"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/dp_4"
|
android:layout_marginLeft="@dimen/dp_4"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/plan_name_text"
|
android:text="@string/plan_name_text"
|
||||||
android:layout_marginVertical="@dimen/dp_13"/>
|
android:layout_marginVertical="@dimen/dp_13"/>
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:layout_marginLeft="@dimen/dp_10"
|
android:layout_marginLeft="@dimen/dp_10"
|
||||||
android:hint="@string/input_plan_name"/>
|
android:hint="@string/input_plan_name"/>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/dp_4"
|
android:layout_marginLeft="@dimen/dp_4"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/plan_period"
|
android:text="@string/plan_period"
|
||||||
android:layout_marginVertical="@dimen/dp_13"/>
|
android:layout_marginVertical="@dimen/dp_13"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="@dimen/dp_4"
|
android:layout_marginLeft="@dimen/dp_4"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:text="@string/device_control_start"
|
android:text="@string/device_control_start"
|
||||||
android:layout_marginVertical="@dimen/dp_13"/>
|
android:layout_marginVertical="@dimen/dp_13"/>
|
||||||
<View
|
<View
|
||||||
|
|||||||
@@ -12,12 +12,12 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/included_title"
|
android:id="@+id/included_title"
|
||||||
layout="@layout/include_activity_back_layout" />
|
layout="@layout/include_activity_back_whitebg_layout" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<androidx.core.widget.NestedScrollView
|
<androidx.core.widget.NestedScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/color_white"
|
android:background="@color/mainBackgroundColor"
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:overScrollMode="never">
|
android:overScrollMode="never">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
android:layout_width="82dp"
|
android:layout_width="82dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/plan_name_text"
|
android:text="@string/plan_name_text"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
android:layout_marginStart="@dimen/dp_10"
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="名称名称"
|
android:text="名称名称"
|
||||||
android:textColor="@color/color_666666"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
android:layout_width="82dp"
|
android:layout_width="82dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/plan_period"
|
android:text="@string/plan_period"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
android:layout_width="82dp"
|
android:layout_width="82dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/water_bound_device"
|
android:text="@string/water_bound_device"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:text="@string/device_status"
|
android:text="@string/device_status"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
|
|
||||||
<com.kyleduo.switchbutton.SwitchButton
|
<com.kyleduo.switchbutton.SwitchButton
|
||||||
|
|||||||
@@ -41,7 +41,8 @@
|
|||||||
android:layout_toRightOf="@+id/img_search"
|
android:layout_toRightOf="@+id/img_search"
|
||||||
android:layout_marginLeft="@dimen/dp_8"
|
android:layout_marginLeft="@dimen/dp_8"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:hint="@string/input_plan_name"/>
|
android:hint="@string/input_plan_name"
|
||||||
|
android:textColorHint="@color/color_subtitle"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_add"
|
android:id="@+id/tv_add"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:layout_marginStart="@dimen/dp_12"
|
android:layout_marginStart="@dimen/dp_12"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:textColor="@color/color_333333"
|
android:textColor="@color/textPrimaryColor"
|
||||||
android:textSize="15sp"
|
android:textSize="15sp"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:ellipsize="end" />
|
android:ellipsize="end" />
|
||||||
|
|||||||
BIN
app/src/main/res/mipmap-xhdpi/icon_white_triangle_down.png
Normal file
|
After Width: | Height: | Size: 312 B |
BIN
app/src/main/res/mipmap-xhdpi/icon_white_triangle_up.png
Normal file
|
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/mipmap-xhdpi/icon_white_wifi.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
app/src/main/res/mipmap-xxhdpi/icon_langage_chinese.png
Normal file
|
After Width: | Height: | Size: 639 B |
BIN
app/src/main/res/mipmap-xxhdpi/icon_langage_eng.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/icon_white_triangle_down.png
Normal file
|
After Width: | Height: | Size: 490 B |
BIN
app/src/main/res/mipmap-xxhdpi/icon_white_triangle_up.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
app/src/main/res/mipmap-xxhdpi/icon_white_wifi.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/icon_langage_chinese.png
Normal file
|
After Width: | Height: | Size: 898 B |
BIN
app/src/main/res/mipmap-xxxhdpi/icon_langage_eng.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/icon_white_triangle_down.png
Normal file
|
After Width: | Height: | Size: 507 B |
BIN
app/src/main/res/mipmap-xxxhdpi/icon_white_triangle_up.png
Normal file
|
After Width: | Height: | Size: 510 B |
BIN
app/src/main/res/mipmap-xxxhdpi/icon_white_wifi.png
Normal file
|
After Width: | Height: | Size: 595 B |
@@ -1,151 +1,214 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- ==================== 登录页 ==================== -->
|
<!-- Start -->
|
||||||
<string name="login_by_code">验证码登录</string>
|
<string name="login_by_code">Sign In with Code</string>
|
||||||
<string name="login_by_psd">密码登录</string>
|
<string name="login_by_psd">Sign In with Password</string>
|
||||||
<string name="hint_input_account">请输入手机号或邮箱账号</string>
|
<string name="hint_input_account">Enter your phone number or email</string>
|
||||||
<string name="hint_input_verifi">请输入验证码</string>
|
<string name="hint_input_verifi">Enter verification code</string>
|
||||||
<string name="get_verifi_code">获取验证码</string>
|
<string name="get_verifi_code">Get Code</string>
|
||||||
<string name="btn_login">登录</string>
|
<string name="btn_login">Sign In</string>
|
||||||
<string name="go_register">立即注册</string>
|
<string name="go_register">Sign Up Now</string>
|
||||||
<string name="change_language">语言选择</string>
|
<string name="change_language">Language</string>
|
||||||
<string name="reset_psd">忘记密码</string>
|
<string name="language_chinese">中文</string>
|
||||||
<string name="hint_input_old_psd">请输入原密码</string>
|
<string name="language_english">English</string>
|
||||||
<string name="hint_input_psd">请输入密码</string>
|
<string name="language_switch_success">Language updated</string>
|
||||||
<string name="hint_input_psd_agin">请再次输入密码</string>
|
<string name="reset_psd">Forgot Password?</string>
|
||||||
<string name="hint_input_new_psd">请输入新密码</string>
|
<string name="hint_input_psd">Enter password</string>
|
||||||
<string name="hint_input_new_psd_agin">请再次输入新密码</string>
|
<string name="hint_input_old_psd">Enter current password</string>
|
||||||
<string name="login_error_phone_empty">手机号不能为空</string>
|
<string name="hint_input_psd_agin">Confirm password</string>
|
||||||
<string name="hint_input_psd_not_match">两次输入的密码不一致</string>
|
<string name="hint_input_new_psd">Enter new password</string>
|
||||||
<string name="login_error_phone_invalid">请输入正确的手机号或邮箱</string>
|
<string name="hint_input_new_psd_agin">Confirm new password</string>
|
||||||
<string name="login_error_psd_empty">手机号或邮箱不能为空</string>
|
<string name="hint_input_psd_not_match">Passwords do not match</string>
|
||||||
<string name="login_error_psd_agin_empty">请再次输入密码</string>
|
<string name="login_error_phone_empty">Phone number or email is required</string>
|
||||||
<string name="register_title">注册用户</string>
|
<string name="login_error_psd_empty">Password is required</string>
|
||||||
<string name="register_title_bar">注册</string>
|
<string name="login_error_psd_agin_empty">Please confirm your password</string>
|
||||||
<string name="register_success_title">注册成功</string>
|
<string name="login_error_phone_invalid">Enter a valid phone number or email</string>
|
||||||
<string name="button_commit">提交</string>
|
<string name="hint_update_psd_success">Password reset successfully</string>
|
||||||
<string name="button_save">保存</string>
|
<string name="register_title">Create Account</string>
|
||||||
<string name="enter_app">进入平台</string>
|
<string name="register_title_bar">Sign Up</string>
|
||||||
<string name="enter_app_countdown">进入平台(%1$d)</string>
|
<string name="register_success_title">Registration Successful</string>
|
||||||
<string name="countdown_finished">倒计时结束</string>
|
<string name="button_commit">Submit</string>
|
||||||
<string name="reset_psd_title">找回密码</string>
|
<string name="button_save">Save</string>
|
||||||
<string name="set_permission">设置权限</string>
|
<string name="enter_app">Get Started</string>
|
||||||
<string name="set_permission_content">使用智溉管家,需要给予以下访问权限</string>
|
<string name="enter_app_countdown">Get Started (%1$d)</string>
|
||||||
<string name="permission_bluetooth_title">蓝牙</string>
|
<string name="countdown_finished">Countdown Finished</string>
|
||||||
<string name="permission_bluetooth_content">用于连接设备</string>
|
<string name="reset_psd_title">Reset Password</string>
|
||||||
<string name="permission_wifi_title">WIFI</string>
|
<string name="set_permission">Permissions</string>
|
||||||
<string name="btn_continue">继续</string>
|
<string name="set_permission_content">Smart Irrigation requires the following permissions</string>
|
||||||
<string name="tab_index_title">首页</string>
|
<string name="permission_bluetooth_title">Bluetooth</string>
|
||||||
<string name="tab_plan_title">排程</string>
|
<string name="permission_bluetooth_content">Used to connect devices</string>
|
||||||
<string name="tab_history_title">历史</string>
|
<string name="permission_wifi_title">Wi-Fi</string>
|
||||||
<string name="tab_mine_title">我的</string>
|
<string name="btn_continue">Continue</string>
|
||||||
<string name="scan_nearby_dev_title">扫描附近设备</string>
|
|
||||||
<string name="scan_nearby_dev_content">持续自动搜索中...</string>
|
<string name="tab_index_title">Home</string>
|
||||||
<string name="scan_nearby_dev_hint">请将手机尽量靠近要添加的设备</string>
|
<string name="tab_plan_title">Schedules</string>
|
||||||
<string name="scan_add_device">扫描添加</string>
|
<string name="tab_history_title">History</string>
|
||||||
<string name="add_device_title">添加设备</string>
|
<string name="tab_mine_title">Profile</string>
|
||||||
<string name="select_wifi_tip">选择WI-FI</string>
|
|
||||||
<string name="input_wifi_name_tip">请输入WIFI名称</string>
|
<string name="scan_nearby_dev_title">Scan Nearby Devices</string>
|
||||||
<string name="input_wifi_psd_tip">请输入WIFI密码</string>
|
<string name="scan_nearby_dev_content">Searching for devices...</string>
|
||||||
<string name="wifi_not_enabled">请先开启WiFi</string>
|
<string name="scan_nearby_dev_hint">Move your phone closer to the device</string>
|
||||||
<string name="no_wifi_found">未扫描到WiFi</string>
|
<string name="scan_add_device">Add Device</string>
|
||||||
<string name="wifi_scan_failed">WiFi扫描失败</string>
|
<string name="add_device_title">Add Device</string>
|
||||||
<string name="button_next">下一步</string>
|
|
||||||
<string name="toast_select_wifi_tip">请选择要连接的Wifi</string>
|
<string name="select_wifi_tip">Select Wi-Fi</string>
|
||||||
<string name="toast_select_wifi_psd_tip">请输入Wifi密码</string>
|
<string name="input_wifi_name_tip">Enter Wi-Fi name</string>
|
||||||
<string name="connect_device_title">连接设备</string>
|
<string name="input_wifi_psd_tip">Enter Wi-Fi password</string>
|
||||||
<string name="keep_device_bt_tips">请保持手机蓝牙开启并将手机尽量靠近设备</string>
|
<string name="wifi_not_enabled">Please enable Wi-Fi first</string>
|
||||||
<string name="keep_device_bt_tips2">向设备传输信息</string>
|
<string name="no_wifi_found">No Wi-Fi networks found</string>
|
||||||
<string name="keep_device_bt_tips3">设备连接网络</string>
|
<string name="wifi_scan_failed">Failed to scan Wi-Fi networks</string>
|
||||||
<string name="button_finish">完成</string>
|
|
||||||
<string name="button_reset">重置</string>
|
<string name="button_next">Next</string>
|
||||||
<string name="set_name">设置名称</string>
|
<string name="toast_select_wifi_tip">Select a Wi-Fi network</string>
|
||||||
<string name="input_device_name_hint">请输入设备名称</string>
|
<string name="toast_select_wifi_psd_tip">Enter the Wi-Fi password</string>
|
||||||
<string name="device_work_progress_title">工作进度</string>
|
|
||||||
<string name="device_work_progress_tips">进程结束后自动停止</string>
|
<string name="connect_device_title">Connect Device</string>
|
||||||
<string name="device_work_times_title">浇水时长</string>
|
<string name="keep_device_bt_tips">Keep Bluetooth enabled and stay close to the device</string>
|
||||||
<string name="device_custom_work_time">自定义时间</string>
|
<string name="keep_device_bt_tips2">Sending information to device</string>
|
||||||
<string name="device_control_start">开启浇水</string>
|
<string name="keep_device_bt_tips3">Connecting device to network</string>
|
||||||
<string name="device_control_stop">关闭浇水</string>
|
|
||||||
<string name="device_base_setting_title">基本设置</string>
|
<string name="button_finish">Finish</string>
|
||||||
<string name="device_setting_name">设备名称</string>
|
<string name="button_reset">Reset</string>
|
||||||
<string name="device_setting_info">设备信息</string>
|
<string name="set_name">Set Name</string>
|
||||||
<string name="device_setting_wifi_manager">WiFi管理</string>
|
<string name="input_device_name_hint">Enter device name</string>
|
||||||
<string name="device_setting_unbind">解绑设备</string>
|
|
||||||
<string name="unbind_success">设备解绑成功</string>
|
<string name="device_work_progress_title">Watering Progress</string>
|
||||||
<string name="settings_title">设置</string>
|
<string name="device_work_progress_tips">Will stop automatically when completed</string>
|
||||||
<string name="confirm_text">确定</string>
|
<string name="device_work_times_title">Watering Duration</string>
|
||||||
<string name="cancel_text">取消</string>
|
<string name="device_custom_work_time">Custom Duration</string>
|
||||||
<string name="tip_text">提示</string>
|
<string name="device_control_start">Start Watering</string>
|
||||||
<string name="tip_unbind_device">确定解除该绑定的设备</string>
|
<string name="device_control_stop">Stop Watering</string>
|
||||||
<string name="device_info_code">设备编码</string>
|
|
||||||
<string name="device_info_type">设备型号</string>
|
<string name="device_base_setting_title">General Settings</string>
|
||||||
<string name="device_info_serial_number">序列号</string>
|
<string name="device_setting_name">Device Name</string>
|
||||||
<string name="device_info_firmware_version">固件版本</string>
|
<string name="device_setting_info">Device Info</string>
|
||||||
|
<string name="device_setting_wifi_manager">Wi-Fi Settings</string>
|
||||||
|
<string name="device_setting_unbind">Remove Device</string>
|
||||||
|
<string name="unbind_success">Device removed successfully</string>
|
||||||
|
|
||||||
|
<string name="settings_title">Settings</string>
|
||||||
|
<string name="confirm_text">Confirm</string>
|
||||||
|
<string name="cancel_text">Cancel</string>
|
||||||
|
<string name="tip_text">Notice</string>
|
||||||
|
<string name="tip_unbind_device">Are you sure you want to remove this device?</string>
|
||||||
|
|
||||||
|
<string name="device_info_code">Device ID</string>
|
||||||
|
<string name="device_info_type">Model</string>
|
||||||
|
<string name="device_info_serial_number">Serial Number</string>
|
||||||
|
<string name="device_info_firmware_version">Firmware Version</string>
|
||||||
|
<string name="device_status_working">Running</string>
|
||||||
|
<string name="device_status_not_working">Idle</string>
|
||||||
|
<string name="select_watering_duration">Select watering duration</string>
|
||||||
|
<string name="start_watering">Start Watering</string>
|
||||||
|
|
||||||
|
<!-- Schedule -->
|
||||||
|
<string name="input_plan_name">Enter schedule name</string>
|
||||||
|
<string name="add_water_plan">+ New Schedule</string>
|
||||||
|
<string name="plan_title">Schedules</string>
|
||||||
|
<string name="water_device_config">Watering Settings</string>
|
||||||
|
<string name="water_bound_device">Linked Devices</string>
|
||||||
|
<string name="water_device_bind">Available Devices</string>
|
||||||
|
<string name="add_water_plan_title">New Schedule</string>
|
||||||
|
<string name="edit_water_plan_title">Edit Schedule</string>
|
||||||
|
<string name="plan_name_text">Schedule Name</string>
|
||||||
|
<string name="plan_name_text_empty_hint">Schedule name cannot be empty</string>
|
||||||
|
<string name="plan_week_empty_hint">Select watering days</string>
|
||||||
|
<string name="select_the_device_to_link">Select a device to link</string>
|
||||||
|
<string name="delete_plan_tip">Delete this schedule?</string>
|
||||||
|
<string name="delete_plan_success">Deleted successfully</string>
|
||||||
|
<string name="close_plan_dialog_tip">Disable this schedule?</string>
|
||||||
|
<string name="no_bound_devices_tips">No devices linked</string>
|
||||||
|
<string name="plan_period">Repeat</string>
|
||||||
|
<string name="plan_time">Duration</string>
|
||||||
|
<string name="plan_start_time">Start Time</string>
|
||||||
|
<string name="select_water_time">Select watering time</string>
|
||||||
|
<string name="input_water_plan_time">Enter watering duration</string>
|
||||||
|
<string name="input_water_plan_time_error">Duration cannot be less than 0</string>
|
||||||
|
<string name="device_status">Status</string>
|
||||||
|
<string name="button_delete">Delete</string>
|
||||||
|
<string name="button_edit">Edit</string>
|
||||||
|
<string name="plan_detail_title">Schedule Details</string>
|
||||||
|
<string name="btn_manual_refresh">Refresh</string>
|
||||||
|
|
||||||
|
<!-- History -->
|
||||||
|
<string name="history_title">History</string>
|
||||||
|
<string name="plan_tab_history">Watering History</string>
|
||||||
|
<string name="plan_tab_tally">Statistics</string>
|
||||||
|
<string name="tab_filter_time">Date Range</string>
|
||||||
|
<string name="tab_filter_type">Trigger Type</string>
|
||||||
|
<string name="history_filter_time_title">Date Range</string>
|
||||||
|
<string name="history_filter_start_time_tip">Select start date</string>
|
||||||
|
<string name="history_filter_end_time_tip">Select end date</string>
|
||||||
|
<string name="history_filter_start_time_toast">Start date is required</string>
|
||||||
|
<string name="history_filter_end_time_toast">End date is required</string>
|
||||||
|
<string name="history_filter_end_time_error">End date cannot be earlier than start date</string>
|
||||||
|
<string name="history_filter_manual">Manual</string>
|
||||||
|
<string name="history_filter_auto">Scheduled</string>
|
||||||
|
<string name="history_filter_type_toast">Select a trigger type</string>
|
||||||
|
<string name="history_watering_adapter_time">Watering Time</string>
|
||||||
|
|
||||||
|
<string name="total_water_count">Total Watering Sessions</string>
|
||||||
|
<string name="week_water_count">This Week</string>
|
||||||
|
<string name="month_water_count">This Month</string>
|
||||||
|
<string name="schedule_water_count">Scheduled Sessions</string>
|
||||||
|
<string name="manual_water_count">Manual Sessions</string>
|
||||||
|
<string name="total_water_duration">Total Watering Time</string>
|
||||||
|
<string name="avg_water_duration">Average Duration</string>
|
||||||
|
<string name="unit_times">times</string>
|
||||||
|
|
||||||
|
<!-- Profile -->
|
||||||
|
<string name="mine_center_title">Profile</string>
|
||||||
|
<string name="button_logout">Sign Out</string>
|
||||||
|
<string name="mine_nickname">Nickname</string>
|
||||||
|
<string name="mine_bind_phone">Phone Number</string>
|
||||||
|
<string name="mine_infomation_title">Profile Information</string>
|
||||||
|
<string name="mine_psd_manager">Password Settings</string>
|
||||||
|
<string name="mine_psd_reset">Change Password</string>
|
||||||
|
<string name="mine_find_psd">Forgot Password</string>
|
||||||
|
<string name="logout_tips">Sign out of your account</string>
|
||||||
|
|
||||||
|
|
||||||
<!--排程-->
|
<string name="agree_user_policy">
|
||||||
<string name="input_plan_name">输入排程名称</string>
|
I have read and agree to the Smart Irrigation User Agreement and Privacy Policy</string>
|
||||||
<string name="add_water_plan">+新增排程</string>
|
<string name="user_agreement">User Agreement</string>
|
||||||
<string name="plan_title">排程</string>
|
<string name="privacy_policy">Privacy Policy</string>
|
||||||
<string name="water_device_config">浇水配置</string>
|
|
||||||
<string name="water_bound_device">已关联设备</string>
|
|
||||||
<string name="water_device_bind">关联设备</string>
|
|
||||||
<string name="add_water_plan_title">新增排程</string>
|
|
||||||
<string name="edit_water_plan_title">Edit Plan</string>
|
|
||||||
<string name="plan_name_text">排程名称</string>
|
|
||||||
<string name="plan_period">浇水周期</string>
|
|
||||||
<string name="plan_time">浇水时长</string>
|
|
||||||
<string name="plan_start_time">开始时间</string>
|
|
||||||
<string name="select_water_time">请选择浇水时间</string>
|
|
||||||
<string name="input_water_plan_time_error">浇水时长不能小于0</string>
|
|
||||||
<string name="input_water_plan_time">请输入浇水时长</string>
|
|
||||||
<string name="device_status">状态</string>
|
|
||||||
<string name="button_delete">删除</string>
|
|
||||||
<string name="button_edit">编辑</string>
|
|
||||||
<string name="plan_detail_title">排程详情</string>
|
|
||||||
|
|
||||||
|
|
||||||
<!--历史-->
|
<string name="permission_request_title">Permission Request</string>
|
||||||
<string name="history_title">历史</string>
|
|
||||||
<string name="plan_tab_history">浇水历史</string>
|
|
||||||
<string name="plan_tab_tally">数据统计</string>
|
|
||||||
<string name="tab_filter_time">时间筛选</string>
|
|
||||||
<string name="tab_filter_type">触发方式</string>
|
|
||||||
<string name="history_filter_time_title">时间</string>
|
|
||||||
<string name="history_filter_start_time_tip">选择开始时间</string>
|
|
||||||
<string name="history_filter_end_time_tip">选择结束时间</string>
|
|
||||||
<string name="history_filter_start_time_toast">开始时间不能为空</string>
|
|
||||||
<string name="history_filter_end_time_toast">结束时间不能为空</string>
|
|
||||||
<string name="history_filter_end_time_error">结束时间不能早于开始时间</string>
|
|
||||||
<string name="history_filter_manual">手动</string>
|
|
||||||
<string name="history_filter_auto">排程</string>
|
|
||||||
<string name="history_filter_type_toast">请选择一种触发方式</string>
|
|
||||||
<string name="history_watering_adapter_time">浇水时间</string>
|
|
||||||
<!-- 中文 -->
|
|
||||||
<string name="total_water_count">总浇水次数</string>
|
|
||||||
<string name="week_water_count">本周浇水次数</string>
|
|
||||||
<string name="month_water_count">本月浇水次数</string>
|
|
||||||
<string name="schedule_water_count">排程浇水次数</string>
|
|
||||||
<string name="manual_water_count">手动浇水次数</string>
|
|
||||||
<string name="total_water_duration">总浇水时间</string>
|
|
||||||
<string name="avg_water_duration">平均浇水时间</string>
|
|
||||||
<string name="unit_times">次</string>
|
|
||||||
|
|
||||||
|
<string name="camera_permission_scan_desc">
|
||||||
|
Smart Irrigation requires access to your camera to scan QR codes and add devices</string>
|
||||||
|
|
||||||
|
<string name="button_deny">Cancel</string>
|
||||||
|
<string name="button_allow">Allow</string>
|
||||||
|
|
||||||
|
<string name="bluetooth_permission_title">Bluetooth Permission</string>
|
||||||
|
|
||||||
<!--个人中心-->
|
<string name="bluetooth_permission_desc">
|
||||||
|
Smart Irrigation requires Bluetooth access to scan and add devices</string>
|
||||||
|
|
||||||
<string name="mine_center_title">个人中心</string>
|
<string name="week_monday">Mon</string>
|
||||||
<string name="button_logout">退出登录</string>
|
<string name="week_tuesday">Tue</string>
|
||||||
<string name="mine_nickname">昵称</string>
|
<string name="week_wednesday">Wed</string>
|
||||||
<string name="mine_bind_phone">绑定手机</string>
|
<string name="week_thursday">Thu</string>
|
||||||
<string name="mine_infomation_title">个人资料</string>
|
<string name="week_friday">Fri</string>
|
||||||
<string name="mine_psd_manager">密码管理</string>
|
<string name="week_saturday">Sat</string>
|
||||||
<string name="mine_psd_reset">重置密码</string>
|
<string name="week_sunday">Sun</string>
|
||||||
<string name="mine_find_psd">找回密码</string>
|
<string name="schedule_time_conflict">Schedule conflict detected. Please adjust.</string>
|
||||||
|
<string name="schedule_select_at_least_one_day">Select at least one day</string>
|
||||||
|
<string name="save_schedule_before_bind_device">The schedule must be saved before linking a device. Continue?</string>
|
||||||
|
<string name="please_save_schedule_first">Save the schedule first</string>
|
||||||
|
<string name="data_changed_save_confirm">You have unsaved changes. Save before leaving?</string>
|
||||||
|
<string name="schedule_add_success">Schedule created</string>
|
||||||
|
<string name="schedule_update_success">Schedule updated</string>
|
||||||
|
<string name="theme_title">Theme</string>
|
||||||
|
<string name="language_selection">Language</string>
|
||||||
|
<string name="password_management">Password Management</string>
|
||||||
|
<string name="theme_light">Light</string>
|
||||||
|
<string name="theme_dark">Dark</string>
|
||||||
|
<string name="press_again_to_exit">Press again to exit</string>
|
||||||
|
|
||||||
|
<!-- End -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,5 +4,9 @@
|
|||||||
<color name="colorPrimaryDark">#000063</color>
|
<color name="colorPrimaryDark">#000063</color>
|
||||||
<color name="colorAccent">#FF80AB</color>
|
<color name="colorAccent">#FF80AB</color>
|
||||||
<color name="mainBackgroundColor">#303030</color>
|
<color name="mainBackgroundColor">#303030</color>
|
||||||
|
<color name="color_gray_theme">#303030</color>
|
||||||
<color name="textPrimaryColor">#E0E0E0</color>
|
<color name="textPrimaryColor">#E0E0E0</color>
|
||||||
|
<color name="color_subtitle">#E0E0E0</color>
|
||||||
|
<color name="text_hint_theme_color">#303030</color>
|
||||||
|
<color name="deviceControlItemColor">#878787</color>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -5,6 +5,12 @@
|
|||||||
<color name="colorAccent">#FF4081</color>
|
<color name="colorAccent">#FF4081</color>
|
||||||
<color name="mainBackgroundColor">#FFFFFF</color>
|
<color name="mainBackgroundColor">#FFFFFF</color>
|
||||||
<color name="textPrimaryColor">#222222</color>
|
<color name="textPrimaryColor">#222222</color>
|
||||||
|
<color name="text_hint_theme_color">#838080</color>
|
||||||
|
<color name="color_subtitle">#666666</color>
|
||||||
|
<color name="color_gray_theme">#F9F9F9</color>
|
||||||
|
<color name="deviceControlItemColor">#FFFFFF</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="transparent">#00000000</color>
|
<color name="transparent">#00000000</color>
|
||||||
<color name="color_white">#FFFFFF</color>
|
<color name="color_white">#FFFFFF</color>
|
||||||
@@ -48,7 +54,13 @@
|
|||||||
<color name="color_676767">#676767</color>
|
<color name="color_676767">#676767</color>
|
||||||
<color name="color_c5d7e1">#C5D7E1</color>
|
<color name="color_c5d7e1">#C5D7E1</color>
|
||||||
<color name="color_EFEFEF">#EFEFEF</color>
|
<color name="color_EFEFEF">#EFEFEF</color>
|
||||||
|
<!-- 主题适配 -->
|
||||||
<color name="color_666666">#666666</color>
|
<color name="color_666666">#666666</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<color name="color_F9F9F9">#F9F9F9</color>
|
||||||
<color name="color_DDE6F5">#DDE6F5</color>
|
<color name="color_DDE6F5">#DDE6F5</color>
|
||||||
<color name="color_2E9CF3">#2E9CF3</color>
|
<color name="color_2E9CF3">#2E9CF3</color>
|
||||||
<color name="color_F7F9FA">#F7F9FA</color>
|
<color name="color_F7F9FA">#F7F9FA</color>
|
||||||
@@ -105,7 +117,7 @@
|
|||||||
<color name="color_F0F8F1">#F0F8F1</color>
|
<color name="color_F0F8F1">#F0F8F1</color>
|
||||||
<color name="color_FFFCEB">#FFFCEB</color>
|
<color name="color_FFFCEB">#FFFCEB</color>
|
||||||
<color name="color_1D90FF">#1D90FF</color>
|
<color name="color_1D90FF">#1D90FF</color>
|
||||||
<color name="color_F9F9F9">#F9F9F9</color>
|
|
||||||
<color name="color_8000CA9D">#8000CA9D</color>
|
<color name="color_8000CA9D">#8000CA9D</color>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<resources
|
<resources
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
tools:locale="zh">
|
tools:locale="zh">
|
||||||
|
<!--开始-->
|
||||||
<string name="login_by_code">验证码登录</string>
|
<string name="login_by_code">验证码登录</string>
|
||||||
<string name="login_by_psd">密码登录</string>
|
<string name="login_by_psd">密码登录</string>
|
||||||
<string name="hint_input_account">请输入手机号或邮箱账号</string>
|
<string name="hint_input_account">请输入手机号或邮箱账号</string>
|
||||||
@@ -9,6 +10,9 @@
|
|||||||
<string name="btn_login">登录</string>
|
<string name="btn_login">登录</string>
|
||||||
<string name="go_register">立即注册</string>
|
<string name="go_register">立即注册</string>
|
||||||
<string name="change_language">语言选择</string>
|
<string name="change_language">语言选择</string>
|
||||||
|
<string name="language_chinese">中文</string>
|
||||||
|
<string name="language_english">English</string>
|
||||||
|
<string name="language_switch_success">语言切换成功</string>
|
||||||
<string name="reset_psd">忘记密码</string>
|
<string name="reset_psd">忘记密码</string>
|
||||||
<string name="hint_input_psd">请输入密码</string>
|
<string name="hint_input_psd">请输入密码</string>
|
||||||
<string name="hint_input_old_psd">请输入原密码</string>
|
<string name="hint_input_old_psd">请输入原密码</string>
|
||||||
@@ -85,6 +89,8 @@
|
|||||||
<string name="device_info_firmware_version">固件版本</string>
|
<string name="device_info_firmware_version">固件版本</string>
|
||||||
<string name="device_status_working">工作中</string>
|
<string name="device_status_working">工作中</string>
|
||||||
<string name="device_status_not_working">待机中</string>
|
<string name="device_status_not_working">待机中</string>
|
||||||
|
<string name="select_watering_duration">请选择浇水时长</string>
|
||||||
|
<string name="start_watering">开始浇水</string>
|
||||||
|
|
||||||
|
|
||||||
<!--排程-->
|
<!--排程-->
|
||||||
@@ -114,6 +120,7 @@
|
|||||||
<string name="button_delete">删除</string>
|
<string name="button_delete">删除</string>
|
||||||
<string name="button_edit">编辑</string>
|
<string name="button_edit">编辑</string>
|
||||||
<string name="plan_detail_title">排程详情</string>
|
<string name="plan_detail_title">排程详情</string>
|
||||||
|
<string name="btn_manual_refresh">手动刷新</string>
|
||||||
|
|
||||||
|
|
||||||
<!--历史-->
|
<!--历史-->
|
||||||
@@ -143,8 +150,6 @@
|
|||||||
<string name="unit_times">次</string>
|
<string name="unit_times">次</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--个人中心-->
|
<!--个人中心-->
|
||||||
|
|
||||||
<string name="mine_center_title">个人中心</string>
|
<string name="mine_center_title">个人中心</string>
|
||||||
@@ -158,8 +163,42 @@
|
|||||||
<string name="logout_tips">退出当前账号</string>
|
<string name="logout_tips">退出当前账号</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="agree_user_policy">
|
||||||
|
我已阅读并同意智能浇灌《用户协议》《隐私政策》</string>
|
||||||
|
<string name="user_agreement">《用户协议》</string>
|
||||||
|
<string name="privacy_policy">《隐私政策》</string>
|
||||||
|
|
||||||
|
<string name="permission_request_title">权限申请</string>
|
||||||
|
<string name="camera_permission_scan_desc">智能浇水需要访问您的相机,用于扫描二维码添加设备</string>
|
||||||
|
<string name="button_deny">不允许</string>
|
||||||
|
<string name="button_allow">允许</string>
|
||||||
|
|
||||||
|
<string name="bluetooth_permission_title">蓝牙权限申请</string>
|
||||||
|
<string name="bluetooth_permission_desc">智溉管家需要访问蓝牙,以扫描并添加设备</string>
|
||||||
|
<string name="week_monday">周一</string>
|
||||||
|
<string name="week_tuesday">周二</string>
|
||||||
|
<string name="week_wednesday">周三</string>
|
||||||
|
<string name="week_thursday">周四</string>
|
||||||
|
<string name="week_friday">周五</string>
|
||||||
|
<string name="week_saturday">周六</string>
|
||||||
|
<string name="week_sunday">周日</string>
|
||||||
|
<string name="schedule_time_conflict">时间配置存在冲突,请调整</string>
|
||||||
|
<string name="schedule_select_at_least_one_day">请至少配置一天的时间</string>
|
||||||
|
<string name="save_schedule_before_bind_device">关联设备需要保存排程配置,是否继续?</string>
|
||||||
|
<string name="please_save_schedule_first">请先保存排程</string>
|
||||||
|
<string name="data_changed_save_confirm">数据已发生变更,是否保存?</string>
|
||||||
|
<string name="schedule_add_success">排程新增成功</string>
|
||||||
|
<string name="schedule_update_success">排程更新成功</string>
|
||||||
|
|
||||||
|
<string name="theme_title">背景主题</string>
|
||||||
|
<string name="language_selection">语言选择</string>
|
||||||
|
<string name="password_management">密码管理</string>
|
||||||
|
<string name="theme_light">浅色</string>
|
||||||
|
<string name="theme_dark">深色</string>
|
||||||
|
|
||||||
|
<string name="press_again_to_exit">再按一次退出</string>
|
||||||
|
|
||||||
|
<!--结束-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
5
app/src/main/res/xml/locale_config.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<locale android:name="zh" />
|
||||||
|
<locale android:name="en" />
|
||||||
|
</locale-config>
|
||||||