电池电量icon优化

This commit is contained in:
fengjignqi
2026-06-02 13:58:54 +08:00
parent b7ab2e69a4
commit 03e67932b1
49 changed files with 293 additions and 19 deletions

View File

@@ -56,9 +56,9 @@
<application <application
android:name="com.ckkj.water.MyApplication" android:name="com.ckkj.water.MyApplication"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/app_logo"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher" android:roundIcon="@mipmap/app_logo"
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:theme="@style/custom_app_theme" android:theme="@style/custom_app_theme"
android:supportsRtl="true" android:supportsRtl="true"
@@ -111,10 +111,6 @@
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"/> android:windowSoftInputMode="adjustResize"/>
<activity
android:name="com.ckkj.water.chat.ChatHistoryActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"/>
<activity <activity
android:name="com.ckkj.water.login.LoginActivity" android:name="com.ckkj.water.login.LoginActivity"
android:theme="@style/AppTheme.FullScreen" android:theme="@style/AppTheme.FullScreen"

View File

@@ -22,6 +22,7 @@ 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.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import com.ckkj.water.utils.manager.PowerIconManage;
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;
@@ -40,6 +41,7 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
private List<String> mTimeList = new ArrayList<>(); private List<String> mTimeList = new ArrayList<>();
private WaterDeviceEntity mDeviceEntity; private WaterDeviceEntity mDeviceEntity;
private WaterDeviceEntity mRemoteDeviceEntity;
private DeviceTimeSelectAdapter mAdapter; private DeviceTimeSelectAdapter mAdapter;
//用户自定义的浇水时长 //用户自定义的浇水时长
private int mCustomDuration = 0; private int mCustomDuration = 0;
@@ -58,6 +60,15 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
showLoadingDialog(); showLoadingDialog();
mPresenter.getDeviceDetailInfo(mDeviceEntity.getId()); mPresenter.getDeviceDetailInfo(mDeviceEntity.getId());
viewBinding.includedTitle.tvTitle.setText(mDeviceEntity.getDeviceName()); viewBinding.includedTitle.tvTitle.setText(mDeviceEntity.getDeviceName());
if(mDeviceEntity.getWorkStatus().equals("1")){
viewBinding.tvDeviceStatus.setText(getString(R.string.device_status_working));
viewBinding.tvDeviceStatus.setTextColor(mContext.getResources().getColor(R.color.color_zhu));
viewBinding.tvConfirm.setText(getString(R.string.device_control_stop));
}else{
viewBinding.tvDeviceStatus.setText(getString(R.string.device_status_not_working));
viewBinding.tvDeviceStatus.setTextColor(mContext.getResources().getColor(R.color.color_999999));
viewBinding.tvConfirm.setText(getString(R.string.device_control_start));
}
} }
} }
mTimeList.add("1min"); mTimeList.add("1min");
@@ -139,7 +150,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
.isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个 .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
.atView(viewBinding.linearBat) .atView(viewBinding.linearBat)
.hasShadowBg(false) // 去掉半透明背景 .hasShadowBg(false) // 去掉半透明背景
.asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:40% 更新时间: 05- 11 18:00")) .asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:"+
mDeviceEntity.getPowerLevel() + "%" +
" 更新时间: 05- 11 18:00"))
.show(); .show();
break; break;
@@ -271,7 +284,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
@Override @Override
public void getDeviceDetailInfo(WaterDeviceEntity bean) { public void getDeviceDetailInfo(WaterDeviceEntity bean) {
hideDialogLoading(); hideDialogLoading();
viewBinding.imgBatStatus.setImageResource(PowerIconManage.getInstance().
getPowerVerIcon(Integer.parseInt(bean.getPowerLevel())));
mRemoteDeviceEntity = bean;
} }
@Override @Override

View File

@@ -3,6 +3,7 @@ package com.ckkj.water.index;
import android.Manifest; import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.view.View; import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -15,6 +16,7 @@ import com.ckkj.water.custom.view.CustomRefreshHeader;
import com.ckkj.water.databinding.IndexFragmentLayoutBinding; import com.ckkj.water.databinding.IndexFragmentLayoutBinding;
import com.ckkj.water.device.AddDeviceActivity; import com.ckkj.water.device.AddDeviceActivity;
import com.ckkj.water.device.DeviceControlActivity; import com.ckkj.water.device.DeviceControlActivity;
import com.ckkj.water.history.entity.WateringRecord;
import com.ckkj.water.index.adapter.DeviceAdapter; import com.ckkj.water.index.adapter.DeviceAdapter;
import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.index.mvp.IndexContract; import com.ckkj.water.index.mvp.IndexContract;
@@ -155,7 +157,6 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
*/ */
@Override @Override
public void getDeviceListSuccess(List<WaterDeviceEntity> list, int total) { public void getDeviceListSuccess(List<WaterDeviceEntity> list, int total) {
hideDialogLoading(); hideDialogLoading();
List<WaterDeviceEntity> pageList = list == null ? new ArrayList<>() : list; List<WaterDeviceEntity> pageList = list == null ? new ArrayList<>() : list;
if (mCurrentPage == 1) { if (mCurrentPage == 1) {

View File

@@ -1,6 +1,8 @@
package com.ckkj.water.index.adapter; package com.ckkj.water.index.adapter;
import android.content.Context; import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -8,6 +10,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.ckkj.water.R; import com.ckkj.water.R;
import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.utils.manager.PowerIconManage;
import com.esafirm.imagepicker.model.Image;
import java.util.List; import java.util.List;
@@ -21,10 +25,21 @@ public class DeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewH
@Override @Override
protected void convert(BaseViewHolder holder, WaterDeviceEntity item) { protected void convert(BaseViewHolder holder, WaterDeviceEntity item) {
ImageView imgPower = holder.getView(R.id.img_battery);
View viewStatus = holder.getView(R.id.view_status_dot);
holder.setText(R.id.tv_device_name,item.getDeviceName()); holder.setText(R.id.tv_device_name,item.getDeviceName());
holder.setText(R.id.tv_device_serial,item.getDeviceSn()); holder.setText(R.id.tv_device_serial,item.getDeviceSn());
holder.setText(R.id.tv_device_status,"工作中"); holder.setText(R.id.tv_device_status,item.getWorkStatus().equals("0") ?
holder.setText(R.id.tv_battery_level,"80"); mContext.getString(R.string.device_status_not_working) :
mContext.getString(R.string.device_status_working));
holder.setTextColor(R.id.tv_device_status,item.getWorkStatus().equals("0") ?
mContext.getResources().getColor(R.color.color_999999) :
mContext.getResources().getColor(R.color.color_24B326));
viewStatus.setBackground(item.getWorkStatus().equals("0") ?
mContext.getResources().getDrawable(R.drawable.shape_status_dot_999999)
: mContext.getResources().getDrawable(R.drawable.shape_status_dot_green));
holder.setText(R.id.tv_battery_level,item.getPowerLevel());
imgPower.setImageResource(PowerIconManage.getInstance().getPowerIcon(Integer.parseInt(item.getPowerLevel())));
} }

View File

@@ -34,7 +34,8 @@ public class WaterDeviceEntity implements Serializable {
private String deviceName; private String deviceName;
private Object deviceImg; private Object deviceImg;
private String status; private String status;
private Object powerLevel; private String workStatus;
private String powerLevel;
private Object powerLevelUpdatatime; private Object powerLevelUpdatatime;
private String wifiName; private String wifiName;
private String wifiPassword; private String wifiPassword;
@@ -55,7 +56,7 @@ public class WaterDeviceEntity implements Serializable {
private Object deviceImg; private Object deviceImg;
private String status; private String status;
private String workStatus; private String workStatus;
private Object powerLevel; private String powerLevel;
private Object powerLevelUpdatatime; private Object powerLevelUpdatatime;
private String wifiName; private String wifiName;
private String wifiPassword; private String wifiPassword;

View File

@@ -29,6 +29,8 @@ public class LoginContract {
void loginBySmsCode(JSONObject json, CallBack callBack); void loginBySmsCode(JSONObject json, CallBack callBack);
//通过账户+验证码 修改密码 //通过账户+验证码 修改密码
void updatePsdByVerifyCode(JSONObject json, CallBack callBack); void updatePsdByVerifyCode(JSONObject json, CallBack callBack);
//退出登录
void logout(JSONObject json, CallBack callBack);
} }
public interface LoginView extends IView{ public interface LoginView extends IView{

View File

@@ -105,6 +105,11 @@ public class LoginImpl implements LoginContract.DataModel {
} }
} }
/**
* 使用验证码登录
* @param json
* @param callBack
*/
@Override @Override
public void loginBySmsCode(JSONObject json, LoginContract.CallBack callBack) { public void loginBySmsCode(JSONObject json, LoginContract.CallBack callBack) {
try { try {
@@ -181,4 +186,44 @@ public class LoginImpl implements LoginContract.DataModel {
e.printStackTrace(); e.printStackTrace();
} }
} }
/**
* 退出登录
* @param json
* @param callBack
*/
@Override
public void logout(JSONObject json, LoginContract.CallBack callBack) {
try {
NetWorkManager.getRequest().logout(NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData());
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
} }

View File

@@ -112,4 +112,9 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -146,4 +146,9 @@ public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -13,6 +13,7 @@ import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.base.entity.MineUserInfoBean; import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.databinding.MineFragmentBinding; import com.ckkj.water.databinding.MineFragmentBinding;
import com.ckkj.water.databinding.MineFragmentLayoutBinding; import com.ckkj.water.databinding.MineFragmentLayoutBinding;
import com.ckkj.water.login.LoginActivity;
import com.ckkj.water.main.entity.CheckVersionEntity; import com.ckkj.water.main.entity.CheckVersionEntity;
import com.ckkj.water.mine.entity.MemberComboEntity; import com.ckkj.water.mine.entity.MemberComboEntity;
import com.ckkj.water.mine.mvp.MineContract; import com.ckkj.water.mine.mvp.MineContract;
@@ -20,6 +21,7 @@ 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.dataUtil.SharePreUtil; import com.ckkj.water.utils.dataUtil.SharePreUtil;
import com.ckkj.water.utils.manager.ActivityManager;
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;
@@ -30,6 +32,8 @@ import com.lxj.xpopup.interfaces.OnSelectListener;
import java.util.List; import java.util.List;
import de.greenrobot.event.EventBus;
/** /**
* @author fengxiaoyang * @author fengxiaoyang
* @date 2026/5/16 * @date 2026/5/16
@@ -63,6 +67,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
setClick(viewBinding.linearLanguage); setClick(viewBinding.linearLanguage);
setClick(viewBinding.linearPsdManage); setClick(viewBinding.linearPsdManage);
setClick(viewBinding.linearTheme); setClick(viewBinding.linearTheme);
setClick(viewBinding.btnDelete);
} }
private void setClick(View view) { private void setClick(View view) {
@@ -105,6 +110,26 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
case R.id.linear_psd_manage: case R.id.linear_psd_manage:
goTo(mContext, PsdManageActivity.class,null); goTo(mContext, PsdManageActivity.class,null);
break; break;
case R.id.btn_delete:
showDialogtext(null,
false,
false,
getString(R.string.tip_text),
getString(R.string.logout_tips),
getString(R.string.cancel_text),
getString(R.string.confirm_text),
new OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
mPresenter.logout();
}
});
break;
} }
} }
@@ -125,7 +150,17 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
}else{ }else{
viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber()); viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber());
} }
}
/**
* 退出登录
* @param bean
*/
@Override
public void logOutSuccess(BaseBean bean) {
WaterUserInfoManager.getInstance().clearUser(mContext);
ActivityManager.removeAllActivity();
goTo(mContext, LoginActivity.class,null);
} }
@Override @Override
@@ -138,6 +173,8 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
} }
@Override @Override
public MinePresenter createPresenter() { public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl()); return new MinePresenter(new MineImpl());

View File

@@ -276,4 +276,9 @@ public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresente
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -184,6 +184,11 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
private void getCompressFile(File file) { private void getCompressFile(File file) {
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() { LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {

View File

@@ -95,4 +95,9 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -90,6 +90,11 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
finish(); finish();
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
@Override @Override
public MinePresenter createPresenter() { public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl()); return new MinePresenter(new MineImpl());

View File

@@ -216,4 +216,9 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -126,4 +126,9 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
public void updateUserPasswordSuccess(BaseBean bean) { public void updateUserPasswordSuccess(BaseBean bean) {
} }
@Override
public void logOutSuccess(BaseBean bean) {
}
} }

View File

@@ -45,6 +45,8 @@ public class MineContract {
void updateUserInfoSuccess(BaseBean bean); void updateUserInfoSuccess(BaseBean bean);
//密码重设完成 //密码重设完成
void updateUserPasswordSuccess(BaseBean bean); void updateUserPasswordSuccess(BaseBean bean);
//退出登录
void logOutSuccess(BaseBean bean);
} }
public interface RecommendModel{ public interface RecommendModel{

View File

@@ -7,6 +7,8 @@ import com.ckkj.water.ConstantUtil;
import com.ckkj.water.base.BasePresenter; import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.base.entity.MineUserInfoBean; import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.base.entity.UserInfoEntity; import com.ckkj.water.base.entity.UserInfoEntity;
import com.ckkj.water.login.mvp.LoginContract;
import com.ckkj.water.login.mvp.LoginImpl;
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.WaterUserInfoManager; import com.ckkj.water.utils.manager.WaterUserInfoManager;
@@ -111,4 +113,26 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
/**
* 退出登录
*/
public void logout() {
JSONObject json = new JSONObject();
new LoginImpl().logout(json, new LoginContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().logOutSuccess(bean);
}
}
@Override
public void fail(String msg) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().showError(msg);
}
}
});
}
} }

View File

@@ -38,6 +38,11 @@ public interface Request {
//注册 //注册
@POST("auth/register") @POST("auth/register")
Observable<BaseBean> register(@Body RequestBody requestBody); Observable<BaseBean> register(@Body RequestBody requestBody);
//退出登录
@POST("auth/logout")
Observable<BaseBean> logout(@Body RequestBody requestBody);
//登录 //登录
@POST("auth/login") @POST("auth/login")
Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody); Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);

View File

@@ -200,6 +200,13 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
//设备显示 //设备显示
if(deviceAdapter != null){ if(deviceAdapter != null){
deviceAdapter.setNewData(entity.getDeviceIds()); deviceAdapter.setNewData(entity.getDeviceIds());
if(deviceAdapter.getItemCount() == 0){
viewBinding.rvBindDevices.setVisibility(View.GONE);
viewBinding.tvNoDevice.setVisibility(View.VISIBLE);
}else{
viewBinding.rvBindDevices.setVisibility(View.VISIBLE);
viewBinding.tvNoDevice.setVisibility(View.GONE);
}
} }
} }

View File

@@ -0,0 +1,66 @@
package com.ckkj.water.utils.manager;
import android.content.Context;
import com.ckkj.water.R;
/**
* @author fengxiaoyang
* @date 2026/6/2
* @description 电池图标管理,根据电量值返回对应的图标资源
*/
public class PowerIconManage {
private static PowerIconManage instance;
private int[] horIconRes = {R.mipmap.hor_0, R.mipmap.hor_10, R.mipmap.hor_20, R.mipmap.hor_30,
R.mipmap.hor_40, R.mipmap.hor_50, R.mipmap.hor_60, R.mipmap.hor_70,
R.mipmap.hor_80, R.mipmap.hor_90, R.mipmap.hor_100};
private int [] verIconRes = {R.mipmap.ver_0, R.mipmap.ver_10, R.mipmap.ver_20, R.mipmap.ver_30,
R.mipmap.ver_40, R.mipmap.ver_50, R.mipmap.ver_60, R.mipmap.ver_70,
R.mipmap.ver_80, R.mipmap.ver_90, R.mipmap.ver_100};
public static PowerIconManage getInstance() {
if (instance == null) {
synchronized (PowerIconManage.class) {
if (instance == null) {
instance = new PowerIconManage();
}
}
}
return instance;
}
/**
* 根据电量值获取对应的电池图标
* @param power 电量值 (0-100)
* @return 电池图标资源ID
*/
public int getPowerIcon(int power) {
if (power <= 0) {
return horIconRes[0];
}
if (power >= 100) {
return horIconRes[10];
}
// 计算对应的数组索引电量1~10对应索引111~20对应索引2...
int index = (power + 9) / 10;
return horIconRes[index];
}
/**
* 根据电量值获取对应的电池图标
* @param power 电量值 (0-100)
* @return 电池图标资源ID
*/
public int getPowerVerIcon(int power) {
if (power <= 0) {
return verIconRes[0];
}
if (power >= 100) {
return verIconRes[10];
}
// 计算对应的数组索引电量1~10对应索引111~20对应索引2...
int index = (power + 9) / 10;
return verIconRes[index];
}
}

View File

@@ -1,5 +1,5 @@
<?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="@dimen/dp_12"/> <corners android:radius="@dimen/dp_12"/>
<solid android:color="@color/white"/> <solid android:color="@color/color_gray2"/>
</shape> </shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/color_999999" />
</shape>

View File

@@ -93,11 +93,9 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_devices" android:id="@+id/rv_devices"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clipToPadding="false" android:clipToPadding="false"
android:paddingHorizontal="@dimen/dp_15" android:paddingHorizontal="@dimen/dp_15"
android:paddingBottom="@dimen/dp_20"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/index_device_list_item" /> tools:listitem="@layout/index_device_list_item" />

View File

@@ -110,7 +110,17 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:listitem="@layout/plan_detail_bind_device_item" tools:listitem="@layout/plan_detail_bind_device_item"
tools:itemCount="2" tools:itemCount="2"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:visibility="visible"/>
<TextView
android:id="@+id/tv_no_device"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="@string/no_bound_devices_tips"
android:textColor="@color/color_999999"
android:textSize="16sp"
android:visibility="gone"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -118,7 +128,8 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_1" android:layout_height="@dimen/dp_1"
android:background="@color/color_f5f5f5" /> android:background="@color/color_f5f5f5"
android:layout_marginTop="@dimen/dp_20"/>
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

View File

@@ -83,6 +83,8 @@
<string name="device_info_type">设备型号</string> <string name="device_info_type">设备型号</string>
<string name="device_info_serial_number">序列号</string> <string name="device_info_serial_number">序列号</string>
<string name="device_info_firmware_version">固件版本</string> <string name="device_info_firmware_version">固件版本</string>
<string name="device_status_working">工作中</string>
<string name="device_status_not_working">待机中</string>
<!--排程--> <!--排程-->
@@ -101,6 +103,7 @@
<string name="delete_plan_tip">确定要删除该排程任务?</string> <string name="delete_plan_tip">确定要删除该排程任务?</string>
<string name="delete_plan_success">删除成功</string> <string name="delete_plan_success">删除成功</string>
<string name="close_plan_dialog_tip">确定关闭该排程任务?</string> <string name="close_plan_dialog_tip">确定关闭该排程任务?</string>
<string name="no_bound_devices_tips">暂无绑定设备</string>
<string name="plan_period">浇水周期</string> <string name="plan_period">浇水周期</string>
<string name="plan_time">浇水时长</string> <string name="plan_time">浇水时长</string>
<string name="plan_start_time">开始时间</string> <string name="plan_start_time">开始时间</string>
@@ -152,6 +155,7 @@
<string name="mine_psd_manager">密码管理</string> <string name="mine_psd_manager">密码管理</string>
<string name="mine_psd_reset">重置密码</string> <string name="mine_psd_reset">重置密码</string>
<string name="mine_find_psd">找回密码</string> <string name="mine_find_psd">找回密码</string>
<string name="logout_tips">退出当前账号</string>