电池电量icon优化
@@ -56,9 +56,9 @@
|
||||
<application
|
||||
android:name="com.ckkj.water.MyApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:icon="@mipmap/app_logo"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/app_logo"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:theme="@style/custom_app_theme"
|
||||
android:supportsRtl="true"
|
||||
@@ -111,10 +111,6 @@
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustResize"/>
|
||||
<activity
|
||||
android:name="com.ckkj.water.chat.ChatHistoryActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:windowSoftInputMode="adjustResize"/>
|
||||
<activity
|
||||
android:name="com.ckkj.water.login.LoginActivity"
|
||||
android:theme="@style/AppTheme.FullScreen"
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.ckkj.water.device.mvp.DevicePresenter;
|
||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
||||
import com.ckkj.water.utils.manager.PowerIconManage;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
@@ -40,6 +41,7 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
|
||||
private List<String> mTimeList = new ArrayList<>();
|
||||
private WaterDeviceEntity mDeviceEntity;
|
||||
private WaterDeviceEntity mRemoteDeviceEntity;
|
||||
private DeviceTimeSelectAdapter mAdapter;
|
||||
//用户自定义的浇水时长
|
||||
private int mCustomDuration = 0;
|
||||
@@ -58,6 +60,15 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
showLoadingDialog();
|
||||
mPresenter.getDeviceDetailInfo(mDeviceEntity.getId());
|
||||
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");
|
||||
@@ -139,7 +150,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
.isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
|
||||
.atView(viewBinding.linearBat)
|
||||
.hasShadowBg(false) // 去掉半透明背景
|
||||
.asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:40% 更新时间: 05- 11 18:00"))
|
||||
.asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:"+
|
||||
mDeviceEntity.getPowerLevel() + "%" +
|
||||
" 更新时间: 05- 11 18:00"))
|
||||
.show();
|
||||
break;
|
||||
|
||||
@@ -271,7 +284,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
@Override
|
||||
public void getDeviceDetailInfo(WaterDeviceEntity bean) {
|
||||
hideDialogLoading();
|
||||
|
||||
viewBinding.imgBatStatus.setImageResource(PowerIconManage.getInstance().
|
||||
getPowerVerIcon(Integer.parseInt(bean.getPowerLevel())));
|
||||
mRemoteDeviceEntity = bean;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ckkj.water.index;
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
|
||||
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.device.AddDeviceActivity;
|
||||
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.entity.WaterDeviceEntity;
|
||||
import com.ckkj.water.index.mvp.IndexContract;
|
||||
@@ -155,7 +157,6 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
||||
*/
|
||||
@Override
|
||||
public void getDeviceListSuccess(List<WaterDeviceEntity> list, int total) {
|
||||
|
||||
hideDialogLoading();
|
||||
List<WaterDeviceEntity> pageList = list == null ? new ArrayList<>() : list;
|
||||
if (mCurrentPage == 1) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ckkj.water.index.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -8,6 +10,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||
import com.ckkj.water.utils.manager.PowerIconManage;
|
||||
import com.esafirm.imagepicker.model.Image;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,10 +25,21 @@ public class DeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewH
|
||||
|
||||
@Override
|
||||
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_serial,item.getDeviceSn());
|
||||
holder.setText(R.id.tv_device_status,"工作中");
|
||||
holder.setText(R.id.tv_battery_level,"80");
|
||||
holder.setText(R.id.tv_device_status,item.getWorkStatus().equals("0") ?
|
||||
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())));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@ public class WaterDeviceEntity implements Serializable {
|
||||
private String deviceName;
|
||||
private Object deviceImg;
|
||||
private String status;
|
||||
private Object powerLevel;
|
||||
private String workStatus;
|
||||
private String powerLevel;
|
||||
private Object powerLevelUpdatatime;
|
||||
private String wifiName;
|
||||
private String wifiPassword;
|
||||
@@ -55,7 +56,7 @@ public class WaterDeviceEntity implements Serializable {
|
||||
private Object deviceImg;
|
||||
private String status;
|
||||
private String workStatus;
|
||||
private Object powerLevel;
|
||||
private String powerLevel;
|
||||
private Object powerLevelUpdatatime;
|
||||
private String wifiName;
|
||||
private String wifiPassword;
|
||||
|
||||
@@ -29,6 +29,8 @@ public class LoginContract {
|
||||
void loginBySmsCode(JSONObject json, CallBack callBack);
|
||||
//通过账户+验证码 修改密码
|
||||
void updatePsdByVerifyCode(JSONObject json, CallBack callBack);
|
||||
//退出登录
|
||||
void logout(JSONObject json, CallBack callBack);
|
||||
}
|
||||
|
||||
public interface LoginView extends IView{
|
||||
|
||||
@@ -105,6 +105,11 @@ public class LoginImpl implements LoginContract.DataModel {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用验证码登录
|
||||
* @param json
|
||||
* @param callBack
|
||||
*/
|
||||
@Override
|
||||
public void loginBySmsCode(JSONObject json, LoginContract.CallBack callBack) {
|
||||
try {
|
||||
@@ -181,4 +186,44 @@ public class LoginImpl implements LoginContract.DataModel {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,4 +112,9 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,4 +146,9 @@ public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import com.ckkj.water.base.BaseFragment;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineFragmentBinding;
|
||||
import com.ckkj.water.databinding.MineFragmentLayoutBinding;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
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.network.BaseBean;
|
||||
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.WaterUserInfoManager;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
@@ -30,6 +32,8 @@ import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2026/5/16
|
||||
@@ -63,6 +67,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
||||
setClick(viewBinding.linearLanguage);
|
||||
setClick(viewBinding.linearPsdManage);
|
||||
setClick(viewBinding.linearTheme);
|
||||
setClick(viewBinding.btnDelete);
|
||||
}
|
||||
|
||||
private void setClick(View view) {
|
||||
@@ -105,6 +110,26 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
||||
case R.id.linear_psd_manage:
|
||||
goTo(mContext, PsdManageActivity.class,null);
|
||||
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{
|
||||
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
|
||||
@@ -138,6 +173,8 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
|
||||
@@ -276,4 +276,9 @@ public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresente
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,6 +184,11 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void getCompressFile(File file) {
|
||||
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
|
||||
|
||||
@@ -95,4 +95,9 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,11 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinePresenter createPresenter() {
|
||||
return new MinePresenter(new MineImpl());
|
||||
|
||||
@@ -216,4 +216,9 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,4 +126,9 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOutSuccess(BaseBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,8 @@ public class MineContract {
|
||||
void updateUserInfoSuccess(BaseBean bean);
|
||||
//密码重设完成
|
||||
void updateUserPasswordSuccess(BaseBean bean);
|
||||
//退出登录
|
||||
void logOutSuccess(BaseBean bean);
|
||||
}
|
||||
|
||||
public interface RecommendModel{
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.ckkj.water.ConstantUtil;
|
||||
import com.ckkj.water.base.BasePresenter;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
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.utils.dataUtil.SharePreUtil;
|
||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||
@@ -111,4 +113,26 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,11 @@ public interface Request {
|
||||
//注册
|
||||
@POST("auth/register")
|
||||
Observable<BaseBean> register(@Body RequestBody requestBody);
|
||||
|
||||
//退出登录
|
||||
@POST("auth/logout")
|
||||
Observable<BaseBean> logout(@Body RequestBody requestBody);
|
||||
|
||||
//登录
|
||||
@POST("auth/login")
|
||||
Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
|
||||
|
||||
@@ -200,6 +200,13 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
|
||||
//设备显示
|
||||
if(deviceAdapter != null){
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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对应索引1,11~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对应索引1,11~20对应索引2...
|
||||
int index = (power + 9) / 10;
|
||||
return verIconRes[index];
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<corners android:radius="@dimen/dp_12"/>
|
||||
<solid android:color="@color/white"/>
|
||||
<solid android:color="@color/color_gray2"/>
|
||||
</shape>
|
||||
5
app/src/main/res/drawable/shape_status_dot_999999.xml
Normal 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>
|
||||
@@ -93,11 +93,9 @@
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_devices"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:paddingHorizontal="@dimen/dp_15"
|
||||
android:paddingBottom="@dimen/dp_20"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
tools:listitem="@layout/index_device_list_item" />
|
||||
|
||||
|
||||
@@ -110,7 +110,17 @@
|
||||
android:layout_height="wrap_content"
|
||||
tools:listitem="@layout/plan_detail_bind_device_item"
|
||||
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>
|
||||
@@ -118,7 +128,8 @@
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:background="@color/color_f5f5f5" />
|
||||
android:background="@color/color_f5f5f5"
|
||||
android:layout_marginTop="@dimen/dp_20"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
BIN
app/src/main/res/mipmap-xxhdpi/app_logo.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/hor_0.png
Normal file
|
After Width: | Height: | Size: 570 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_10.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_100.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_20.png
Normal file
|
After Width: | Height: | Size: 598 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_30.png
Normal file
|
After Width: | Height: | Size: 587 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_40.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_50.png
Normal file
|
After Width: | Height: | Size: 583 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_60.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_70.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_80.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_90.png
Normal file
|
After Width: | Height: | Size: 585 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_0.png
Normal file
|
After Width: | Height: | Size: 569 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_10.png
Normal file
|
After Width: | Height: | Size: 578 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_100.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_20.png
Normal file
|
After Width: | Height: | Size: 586 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_30.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_40.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_50.png
Normal file
|
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_60.png
Normal file
|
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_70.png
Normal file
|
After Width: | Height: | Size: 590 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_80.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_90.png
Normal file
|
After Width: | Height: | Size: 598 B |
@@ -83,6 +83,8 @@
|
||||
<string name="device_info_type">设备型号</string>
|
||||
<string name="device_info_serial_number">序列号</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_success">删除成功</string>
|
||||
<string name="close_plan_dialog_tip">确定关闭该排程任务?</string>
|
||||
<string name="no_bound_devices_tips">暂无绑定设备</string>
|
||||
<string name="plan_period">浇水周期</string>
|
||||
<string name="plan_time">浇水时长</string>
|
||||
<string name="plan_start_time">开始时间</string>
|
||||
@@ -152,6 +155,7 @@
|
||||
<string name="mine_psd_manager">密码管理</string>
|
||||
<string name="mine_psd_reset">重置密码</string>
|
||||
<string name="mine_find_psd">找回密码</string>
|
||||
<string name="logout_tips">退出当前账号</string>
|
||||
|
||||
|
||||
|
||||
|
||||