diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..c61ea33 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index b2c751a..97a4754 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,4 +6,11 @@ + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 73f18ca..c52001f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,4 +78,6 @@ dependencies { implementation "androidx.camera:camera-camera2:1.0.2" implementation "androidx.camera:camera-lifecycle:1.0.2" implementation "androidx.camera:camera-view:1.0.0-alpha25" + //圆形视图库 + implementation 'com.makeramen:roundedimageview:2.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 158d84d..1051641 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -81,6 +81,10 @@ android:name=".mine.ModifyPsdActivity" android:exported="false" /> + + > : dialog.show() } - /** 显示带输入框的弹窗,输入为空时保留弹窗并提示。 */ + /** 显示带输入框的弹窗,标题、标签、提示文案由调用方传入。 */ fun showEditDialog( title: String, - hint: String, + label: String = "", + hint: String = "", + tip: String = "", content: String = "", touchOutsideCancel: Boolean = true, cancelText: String = "取消", @@ -291,6 +294,8 @@ abstract class BaseActivity> : ) { val view = layoutInflater.inflate(R.layout.dialog_input_text, null) view.findViewById(R.id.dialogTitle).text = title + bindOptionalText(view.findViewById(R.id.dialogLabel), label) + bindOptionalText(view.findViewById(R.id.dialogTip), tip) val input = view.findViewById(R.id.dialogInput).apply { this.hint = hint setText(content) @@ -309,7 +314,7 @@ abstract class BaseActivity> : setOnClickListener { val value = input.text.toString().trim() if (value.isEmpty()) { - input.error = hint + input.error = hint.ifBlank { "请输入内容" } return@setOnClickListener } dialog.dismiss() @@ -321,6 +326,16 @@ abstract class BaseActivity> : dialog.show() } + /** 文案为空时隐藏对应控件,避免留下空白行。 */ + private fun bindOptionalText(textView: TextView, text: String) { + if (text.isBlank()) { + textView.visibility = View.GONE + } else { + textView.visibility = View.VISIBLE + textView.text = text + } + } + /** 在屏幕顶部显示权限用途提示弹窗。 */ fun showPermissionDialog(title: String, content: String) { permissionDialog?.dismiss() diff --git a/app/src/main/java/com/juhabi/birds/base/BaseFragment.kt b/app/src/main/java/com/juhabi/birds/base/BaseFragment.kt index 9f96bf1..41b34fa 100644 --- a/app/src/main/java/com/juhabi/birds/base/BaseFragment.kt +++ b/app/src/main/java/com/juhabi/birds/base/BaseFragment.kt @@ -280,10 +280,12 @@ abstract class BaseFragment> : Fragment(), I dialog.show() } - /** 显示带输入框的弹窗,输入为空时保留弹窗并提示。 */ + /** 显示带输入框的弹窗,标题、标签、提示文案由调用方传入。 */ fun showEditDialog( title: String, - hint: String, + label: String = "", + hint: String = "", + tip: String = "", content: String = "", touchOutsideCancel: Boolean = true, cancelText: String = "取消", @@ -292,6 +294,8 @@ abstract class BaseFragment> : Fragment(), I ) { val view = layoutInflater.inflate(R.layout.dialog_input_text, null) view.findViewById(R.id.dialogTitle).text = title + bindOptionalText(view.findViewById(R.id.dialogLabel), label) + bindOptionalText(view.findViewById(R.id.dialogTip), tip) val input = view.findViewById(R.id.dialogInput).apply { this.hint = hint setText(content) @@ -310,7 +314,7 @@ abstract class BaseFragment> : Fragment(), I setOnClickListener { val value = input.text.toString().trim() if (value.isEmpty()) { - input.error = hint + input.error = hint.ifBlank { "请输入内容" } return@setOnClickListener } dialog.dismiss() @@ -322,6 +326,16 @@ abstract class BaseFragment> : Fragment(), I dialog.show() } + /** 文案为空时隐藏对应控件,避免留下空白行。 */ + private fun bindOptionalText(textView: TextView, text: String) { + if (text.isBlank()) { + textView.visibility = View.GONE + } else { + textView.visibility = View.VISIBLE + textView.text = text + } + } + /** 在屏幕顶部显示权限用途提示弹窗。 */ fun showPermissionDialog(title: String, content: String) { permissionDialog?.dismiss() diff --git a/app/src/main/java/com/juhabi/birds/device/BindDeviceActivity.kt b/app/src/main/java/com/juhabi/birds/device/BindDeviceActivity.kt index bf5af59..bd36385 100644 --- a/app/src/main/java/com/juhabi/birds/device/BindDeviceActivity.kt +++ b/app/src/main/java/com/juhabi/birds/device/BindDeviceActivity.kt @@ -11,7 +11,6 @@ import com.juhabi.birds.device.entity.DeviceEntity import com.juhabi.birds.device.mvp.DeviceContract import com.juhabi.birds.device.mvp.DeviceImpl import com.juhabi.birds.device.mvp.DevicePresenter -import kotlin.random.Random /** * 绑定设备 @@ -51,16 +50,33 @@ class BindDeviceActivity: BaseActivity finish() } - R.id.tv_bind ->{//绑定设备 -// val imei = "${System.currentTimeMillis()}${Random.nextInt(100).toString().padStart(2, '0')}" -// val name = "device001" - val imei = "860000000000005" - val name = "BM202609160005" - presenter?.bindDevice(imei, name) + R.id.tv_bind -> { + bindDevice() } } } + /** 校验设备编码和名称非空后,发起绑定请求。 */ + private fun bindDevice() { + val imei = binding.etDeviceCode.text + ?.toString() + ?.trim() + .orEmpty() + val name = binding.etDeviceName.text + ?.toString() + ?.trim() + .orEmpty() + if (imei.isBlank()) { + showMessage("请输入设备编码") + return + } + if (name.isBlank()) { + showMessage("请输入设备名称") + return + } + presenter?.bindDevice(imei, name) + } + override fun showError(message: String) { showMessage(message) } diff --git a/app/src/main/java/com/juhabi/birds/device/DeviceAdapter.kt b/app/src/main/java/com/juhabi/birds/device/DeviceAdapter.kt deleted file mode 100644 index eb74f91..0000000 --- a/app/src/main/java/com/juhabi/birds/device/DeviceAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.juhabi.birds.device - -import com.chad.library.adapter.base.BaseQuickAdapter -import com.chad.library.adapter.base.viewholder.BaseViewHolder -import com.juhabi.birds.R -import com.juhabi.birds.device.entity.DeviceEntity - -/** 临时设备列表适配器,后续可根据设计稿替换 item 展示。 */ -class DeviceAdapter : BaseQuickAdapter(R.layout.device_item) { - init { - addChildClickViewIds(R.id.img_tips) - } - - override fun convert(holder: BaseViewHolder, item: DeviceEntity) { - holder.setText(R.id.tv_device_name, item.name.ifBlank { "未命名设备" }) - holder.setText(R.id.tv_device_status, item.signalText.ifBlank { "离线" }) - holder.setText(R.id.tv_device_no, "设备编号:${item.deviceNo}") - holder.setText(R.id.tv_device_imei, "IMEI:${item.imei}") - holder.setText(R.id.tv_device_detail, "型号:${item.model ?: "-"} 信号:${item.signalLevel} 头部电量:${item.hoodBattery ?: "-"} 戒指电量:${item.ringBattery ?: "-"}") - holder.setText(R.id.tv_device_location, "连接:${item.hoodConnectedText} 地址:${item.address ?: "暂无地址"}") - } -} diff --git a/app/src/main/java/com/juhabi/birds/device/DeviceFragment.kt b/app/src/main/java/com/juhabi/birds/device/DeviceFragment.kt index 2886094..0c93de4 100644 --- a/app/src/main/java/com/juhabi/birds/device/DeviceFragment.kt +++ b/app/src/main/java/com/juhabi/birds/device/DeviceFragment.kt @@ -2,16 +2,17 @@ package com.juhabi.birds.device import android.Manifest import android.content.Intent -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.juhabi.birds.R import com.juhabi.birds.base.BaseFragment +import com.juhabi.birds.custom.AddDevicePopupWindow import com.juhabi.birds.custom.DeviceActionPopupWindow import com.juhabi.birds.custom.CustomRefreshHeader import com.juhabi.birds.databinding.FragmentHomeBinding +import com.juhabi.birds.device.adapter.DeviceAdapter import com.juhabi.birds.device.entity.DeviceEntity import com.juhabi.birds.device.mvp.DeviceContract import com.juhabi.birds.device.mvp.DeviceImpl @@ -19,6 +20,7 @@ import com.juhabi.birds.device.mvp.DevicePresenter import com.juhabi.birds.util.ToastUtil import com.maning.mlkitscanner.scan.MNScanManager import com.maning.mlkitscanner.scan.callback.act.MNScanCallback +import com.maning.mlkitscanner.scan.model.MNScanConfig import com.scwang.smart.refresh.footer.ClassicsFooter class DeviceFragment : BaseFragment(), @@ -38,7 +40,6 @@ class DeviceFragment : BaseFragment(), override fun initView(savedInstanceState: Bundle?) { listOf( - binding.tvIndex, binding.imgScan, ).forEach { button -> button.setOnClickListener(this) @@ -50,23 +51,29 @@ class DeviceFragment : BaseFragment(), putSerializable(DeviceDetailActivity.EXTRA_DEVICE, device) }) } - deviceAdapter.setOnItemChildClickListener { adapter, view, position -> + deviceAdapter.setOnItemChildClickListener { _, view, position -> when (view.id) { - R.id.img_tips -> { + R.id.img_more -> { val device = deviceAdapter.data[position] DeviceActionPopupWindow(requireContext()).show( view, - onRename = {//重命名 + onRename = { showEditDialog( - "设备重命名", device.name, click = object : OnDialogClick { + title = "重命名设备", + label = "设备名称", + hint = device.name, + tip = "最多支持20个字符,支持中英文、数字和字符。", + confirmText = "确认修改", + click = object : OnDialogClick { + override fun onCancelClick() { + } - override fun onCancelClick() {} override fun onConfirmClick(content: String) { presenter?.renameDevice(device.deviceNo, content) } } ) - }, + }, onUnbind = {//解绑设备 showDialogtext( "提示", @@ -87,6 +94,15 @@ class DeviceFragment : BaseFragment(), } ) } + R.id.tv_show_map -> { + val device = deviceAdapter.data[position] + // 没有经纬度时只展示空态,不要把空坐标传给地图 + if (device.lat.isNullOrBlank() || device.lng.isNullOrBlank()) { + showMessage("暂无定位") + return@setOnItemChildClickListener + } + // 地图页后续接入,这里先预留点击入口 + } } } } @@ -108,17 +124,23 @@ class DeviceFragment : BaseFragment(), override fun onClick(view: View) { when(view.id){ - R.id.tv_index ->{ - goTo(BindDeviceActivity::class.java,null) - } - //扫一扫:先申请相机和相册权限,授权通过后再拉起扫码页。 + // 扫码页仅使用相机,隐藏旧库内部的相册入口。 R.id.img_scan -> { - getMorePermissionRequst( - scanPermissions(), - "相机和相册权限", - "扫一扫功能需要使用相机及访问相册权限", - REQUEST_CAMERA_AND_ALBUM + AddDevicePopupWindow(requireContext()).show(view, + onManualAdd = { + // 手动添加:进入绑定设备页 + goTo(BindDeviceActivity::class.java, null) + }, + onScan = { + // 扫一扫:先申请相机权限,授权后再打开扫码页 + getMorePermissionRequst( + scanPermissions(), + "相机权限", + "扫一扫功能需要使用相机权限", + REQUEST_CAMERA_AND_ALBUM + ) + } ) } @@ -206,7 +228,7 @@ class DeviceFragment : BaseFragment(), } - /** 相机和相册均已授权后,自动打开扫一扫。 */ + /** 相机授权后打开扫码页,库内相册按钮已关闭。 */ override fun onPermissionsGranted(permissions: Array) { startDeviceScan() } @@ -215,36 +237,50 @@ class DeviceFragment : BaseFragment(), super.onPermissionsDenied(permissions, permanentlyDenied) } - /** Android 13 及以上申请读图权限,更低版本申请存储读取权限。 */ + /** 相册入口已隐藏,因此扫码流程只需要相机权限。 */ private fun scanPermissions(): Array { - val albumPermission = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - Manifest.permission.READ_MEDIA_IMAGES - } else { - Manifest.permission.READ_EXTERNAL_STORAGE - } - return arrayOf(Manifest.permission.CAMERA, albumPermission) + return arrayOf(Manifest.permission.CAMERA) } /** 使用 MNMLKitScanner 默认扫码页识别二维码或条形码。 */ private fun startDeviceScan() { - MNScanManager.startScan(mContext, object : MNScanCallback { - override fun onActivityResult(resultCode: Int, data: Intent) { - when (resultCode) { - MNScanManager.RESULT_SUCCESS -> { - val results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS) - val content = results?.filter { it.isNotBlank() }?.joinToString("\n").orEmpty() + val config = MNScanConfig.Builder() + .isShowPhotoAlbum(false) + .builder() + + MNScanManager.startScan(mContext, config, object : MNScanCallback { + override fun onActivityResult(resultCode: Int, data: Intent?) { + if (!isAdded) { + return + } + // 库把 RESULT_SUCCESS 定义为 0,和系统返回键的 RESULT_CANCELED 相同。 + // 点关闭会走 RESULT_CANCLE=2 并带回空 Intent;按返回键 data 为 null。 + when { + resultCode == MNScanManager.RESULT_SUCCESS && data != null -> { + val results = data.getStringArrayListExtra( + MNScanManager.INTENT_KEY_RESULT_SUCCESS + ) + val content = results + ?.filter { it.isNotBlank() } + ?.joinToString("\n") + .orEmpty() if (content.isBlank()) { ToastUtil.showShort(mContext, "未识别到内容") } else { ToastUtil.showShort(mContext, content) } } - MNScanManager.RESULT_FAIL -> { - val resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR) - ToastUtil.showShort(mContext, resultError.takeUnless { it.isNullOrBlank() } ?: "扫码失败") + resultCode == MNScanManager.RESULT_FAIL -> { + val resultError = data?.getStringExtra( + MNScanManager.INTENT_KEY_RESULT_ERROR + ) + ToastUtil.showShort( + mContext, + resultError.takeUnless { it.isNullOrBlank() } ?: "扫码失败" + ) } - MNScanManager.RESULT_CANCLE -> { - ToastUtil.showShort(mContext, getString(R.string.cancel_scan)) + else -> { + // 关闭按钮或系统返回,按取消处理 } } } diff --git a/app/src/main/java/com/juhabi/birds/device/adapter/DeviceAdapter.kt b/app/src/main/java/com/juhabi/birds/device/adapter/DeviceAdapter.kt new file mode 100644 index 0000000..b22917f --- /dev/null +++ b/app/src/main/java/com/juhabi/birds/device/adapter/DeviceAdapter.kt @@ -0,0 +1,165 @@ +package com.juhabi.birds.device.adapter + +import android.widget.ProgressBar +import androidx.core.content.ContextCompat +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.juhabi.birds.R +import com.juhabi.birds.device.entity.DeviceEntity + +/** 临时设备列表适配器,后续可根据设计稿替换 item 展示。 */ +class DeviceAdapter : BaseQuickAdapter(R.layout.device_item) { + init { + addChildClickViewIds(R.id.img_more) + } + + override fun convert(holder: BaseViewHolder, item: DeviceEntity) { + //设备名字 + holder.setText(R.id.tv_dev_name, item.name.ifBlank { "未命名设备" }) + //在线状态 + if (item.status == "1") { + holder.setText(R.id.tv_dev_online_status, "在线") + } else { + holder.setText(R.id.tv_dev_online_status, "离线") + } + val statusRes = if (item.status == "1") { + R.drawable.shape_device_online_bg + } else { + R.drawable.shape_device_offline_bg + } + holder.setBackgroundResource( + R.id.tv_dev_online_status, + statusRes + ) + + holder.setText(R.id.tv_dev_number, "IMEI:${item.deviceNo}") + + if (item.status == "1") { + // 信号:0 离线、1 弱、2 一般、3 强。资源 id 必须赋给变量才会生效。 + val imgResource: Int + val signalText: String + val wifiTextColor: Int + if (item.signalLevel == 0) { + imgResource = R.mipmap.icon_dev_wifi_offline + signalText = "离线" + wifiTextColor = R.color.color_999999 + } else if (item.signalLevel == 1) { + imgResource = R.mipmap.icon_dev_wifi_low + signalText = "弱" + wifiTextColor = R.color.color_e34d59 + } else if (item.signalLevel == 2) { + imgResource = R.mipmap.icon_dev_wifi_mid + signalText = "一般" + wifiTextColor = R.color.color_ff942a + } else { + imgResource = R.mipmap.icon_dev_wifi_hight + signalText = "强" + wifiTextColor = R.color.color_zhu + } + + holder.setImageResource(R.id.img_signal, imgResource) + holder.setText(R.id.tv_signal_text, signalText) + holder.setTextColor(R.id.tv_signal_text,wifiTextColor) + holder.setText( + R.id.tv_head_foot_connect_status, + if (item.hoodConnected == "0") "断开" else "已连接" + ) + }else{ + holder.setImageResource(R.id.img_signal, R.mipmap.icon_dev_wifi_offline) + holder.setText(R.id.tv_signal_text, "离线") + holder.setTextColor(R.id.tv_signal_text, R.color.color_999999) + holder.setText( + R.id.tv_head_foot_connect_status, + if (item.hoodConnected == "0") "断开" else "已连接" + ) + } + + holder.setText(R.id.tv_head_power_value, "${item.hoodBattery}%") + holder.setText(R.id.tv_foot_power_value, "${item.ringBattery}%") + + // 电量三档:0-30 低,31-70 中,71-100 高 + val headBattery = (item.hoodBattery ?: 0).coerceIn(0, 100) + val footBattery = (item.ringBattery ?: 0).coerceIn(0, 100) + val isOnline = item.status == "1" + + if (isOnline) { + holder.setImageResource( + R.id.img_head_power_icon, + getBatteryIcon( + battery = headBattery, + highIcon = R.mipmap.icon_power_head_high, + midIcon = R.mipmap.icon_power_head_mid + ) + ) + holder.setImageResource( + R.id.img_foot_power_icon, + getBatteryIcon( + battery = footBattery, + highIcon = R.mipmap.icon_power_foot_high, + midIcon = R.mipmap.icon_power_foot_mid + ) + ) + } else { + // 离线时头套、脚环电量图标统一显示离线态 + holder.setImageResource( + R.id.img_head_power_icon, + R.mipmap.icon_dev_power_offline + ) + holder.setImageResource( + R.id.img_foot_power_icon, + R.mipmap.icon_dev_power_offline + ) + } + + val progressHead = holder.getView(R.id.progress_head) + val progressFoot = holder.getView(R.id.progress_foot) + val headProgressRes = if (isOnline) { + R.drawable.progress_head_bg + } else { + R.drawable.progress_offline_bg + } + val footProgressRes = if (isOnline) { + R.drawable.progress_foot_bg + } else { + R.drawable.progress_offline_bg + } + // mutate 避免两条进度条共用同一份离线 drawable 状态 + progressHead.progressDrawable = ContextCompat.getDrawable( + context, + headProgressRes + )?.mutate() + progressFoot.progressDrawable = ContextCompat.getDrawable( + context, + footProgressRes + )?.mutate() + // 替换 drawable 后进度会被重置,需要重新写入 + progressHead.max = 100 + progressHead.progress = headBattery + progressFoot.max = 100 + progressFoot.progress = footBattery + + //tv_location_detail 显示地址 + holder.setText(R.id.tv_location_detail, item.address) + } + + /** + * 按电量返回对应档位图标。 + * 低电量头套、脚环共用 icon_power_low。 + */ + private fun getBatteryIcon( + battery: Int, + highIcon: Int, + midIcon: Int + ): Int { + return when { + battery <= BATTERY_LOW_MAX -> R.mipmap.icon_power_low + battery <= BATTERY_MID_MAX -> midIcon + else -> highIcon + } + } + + private companion object { + const val BATTERY_LOW_MAX = 30 + const val BATTERY_MID_MAX = 70 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/juhabi/birds/device/entity/DeviceEntity.kt b/app/src/main/java/com/juhabi/birds/device/entity/DeviceEntity.kt index 5802ead..8421ce6 100644 --- a/app/src/main/java/com/juhabi/birds/device/entity/DeviceEntity.kt +++ b/app/src/main/java/com/juhabi/birds/device/entity/DeviceEntity.kt @@ -3,19 +3,19 @@ package com.juhabi.birds.device.entity import java.io.Serializable data class DeviceEntity( - val address: String, - val deviceNo: String, - val hoodBattery: Int?, - val hoodConnected: String, - val hoodConnectedText: String, - val imei: String, - val lat: Double?, - val lng: Double?, - val model: String?, - val name: String, - val ringBattery: Int?, - val signalLevel: Int, - val signalText: String, - val status: String, - val hoodCoverOn: String + val address: String = "", + val deviceNo: String = "", + val hoodBattery: Int? = null, + val hoodConnected: String = "", + val hoodConnectedText: String = "", + val imei: String = "", + val lat: String? = null, + val lng: String? = null, + val model: String? = null, + val name: String = "", + val ringBattery: Int? = null, + val signalLevel: Int = 0, + val signalText: String = "", + val status: String = "", + val hoodCoverOn: String = "" ) : Serializable diff --git a/app/src/main/java/com/juhabi/birds/login/RegisterActivity.kt b/app/src/main/java/com/juhabi/birds/login/RegisterActivity.kt index 8640e9d..0adf8ad 100644 --- a/app/src/main/java/com/juhabi/birds/login/RegisterActivity.kt +++ b/app/src/main/java/com/juhabi/birds/login/RegisterActivity.kt @@ -4,11 +4,19 @@ import android.os.Bundle import android.os.CountDownTimer import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.juhabi.birds.AppConfig import com.juhabi.birds.R import com.juhabi.birds.base.BaseActivity import com.juhabi.birds.databinding.RegisterLayoutBinding +import com.juhabi.birds.databinding.DialogCountryCodeBinding +import com.juhabi.birds.login.adapter.CountryCallingCode +import com.juhabi.birds.login.adapter.CountryCodeAdapter import com.juhabi.birds.login.model.UserEntity import com.juhabi.birds.login.mvp.LoginContract import com.juhabi.birds.login.mvp.LoginImpl @@ -47,6 +55,7 @@ class RegisterActivity : BaseActivity(), binding.getCodeButton, binding.confirmButton, binding.includedTitle.imgBack, + binding.linearCountry, ).forEach { button -> button.setOnClickListener(this) } @@ -59,6 +68,8 @@ class RegisterActivity : BaseActivity(), finish() } + R.id.linear_country -> showCountryCodeDialog() + R.id.getCodeButton -> {//获取验证码 if (binding.phoneEditText.text.toString().isBlank()) { ToastUtil.showShort(mContext, "手机号不能为空") @@ -109,6 +120,44 @@ class RegisterActivity : BaseActivity(), } } + private fun showCountryCodeDialog() { + val dialogBinding = DialogCountryCodeBinding.inflate(layoutInflater) + val dialog = AlertDialog.Builder(this) + .setView(dialogBinding.root) + .create() + + dialogBinding.countryRecyclerView.apply { + layoutManager = LinearLayoutManager(this@RegisterActivity) + adapter = CountryCodeAdapter(loadCountryCallingCodes()) { country -> + binding.areaCodeButton.text = country.dial_code + dialog.dismiss() + } + } + + dialog.setOnShowListener { + dialog.window?.apply { + setBackgroundDrawableResource(android.R.color.transparent) + setLayout( + (resources.displayMetrics.widthPixels * 0.88f).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + } + } + dialog.show() + } + + private fun loadCountryCallingCodes(): List { + val language = resources.configuration.locales[0].language + val fileName = when (language) { + "ar" -> "country_calling_codes_ar.json" + "en" -> "country_calling_codes_en.json" + else -> "country_calling_codes.json" + } + val json = assets.open(fileName).bufferedReader().use { it.readText() } + val type = object : TypeToken>() {}.type + return Gson().fromJson(json, type) + } + override fun showError(message: String) { hideLoading() ToastUtil.showShort(mContext, message) diff --git a/app/src/main/java/com/juhabi/birds/login/adapter/CountryCodeAdapter.kt b/app/src/main/java/com/juhabi/birds/login/adapter/CountryCodeAdapter.kt new file mode 100644 index 0000000..eda32f9 --- /dev/null +++ b/app/src/main/java/com/juhabi/birds/login/adapter/CountryCodeAdapter.kt @@ -0,0 +1,41 @@ +package com.juhabi.birds.login.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.juhabi.birds.databinding.ItemCountryCodeBinding + +data class CountryCallingCode( + val code: String, + val name: String, + val dial_code: String +) + +class CountryCodeAdapter( + private val countries: List, + private val onItemClick: (CountryCallingCode) -> Unit +) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountryViewHolder { + return CountryViewHolder( + ItemCountryCodeBinding.inflate(LayoutInflater.from(parent.context), parent, false) + ) + } + + override fun onBindViewHolder(holder: CountryViewHolder, position: Int) { + holder.bind(countries[position]) + } + + override fun getItemCount(): Int = countries.size + + inner class CountryViewHolder( + private val binding: ItemCountryCodeBinding + ) : RecyclerView.ViewHolder(binding.root) { + + fun bind(country: CountryCallingCode) { + binding.countryNameTextView.text = country.name + binding.countryDialCodeTextView.text = country.dial_code + binding.root.setOnClickListener { onItemClick(country) } + } + } +} diff --git a/app/src/main/java/com/juhabi/birds/main/MainActivity.kt b/app/src/main/java/com/juhabi/birds/main/MainActivity.kt index d68f1b5..e3d0fde 100644 --- a/app/src/main/java/com/juhabi/birds/main/MainActivity.kt +++ b/app/src/main/java/com/juhabi/birds/main/MainActivity.kt @@ -2,7 +2,6 @@ package com.juhabi.birds.main import android.os.Bundle import android.view.LayoutInflater -import androidx.annotation.ColorRes import androidx.core.content.ContextCompat import com.juhabi.birds.R import com.juhabi.birds.base.BaseActivity @@ -80,12 +79,9 @@ class MainActivity : BaseActivity(), } private fun updateTopBarColor(position: Int) { - @ColorRes val colorRes = when (position) { - PAGE_HOME -> R.color.color_zhu - PAGE_MINE -> R.color.color_B85CE6 - else -> R.color.color_zhu - } - binding.statusBarView.setBackgroundColor(ContextCompat.getColor(this, colorRes)) + binding.statusBarView.setBackgroundColor( + ContextCompat.getColor(this, R.color.color_zhu) + ) } override fun initData(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/juhabi/birds/mine/MineCenterActivity.kt b/app/src/main/java/com/juhabi/birds/mine/MineCenterActivity.kt index 7b976cc..511a3c1 100644 --- a/app/src/main/java/com/juhabi/birds/mine/MineCenterActivity.kt +++ b/app/src/main/java/com/juhabi/birds/mine/MineCenterActivity.kt @@ -123,8 +123,8 @@ class MineCenterActivity : BaseActivity { showEditDialog( - "请输入内容", - "请输入测试内容", + title = "请输入内容", + hint = "请输入测试内容", click = object : OnDialogClick { override fun onCancelClick() { showMessage("已取消输入") @@ -190,13 +190,12 @@ class MineCenterActivity : BaseActivity(), - MineContract.MineView { +class MineFragment : BaseFragment(), + MineContract.MineView, View.OnClickListener { - override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentMineBinding { - return FragmentMineBinding.inflate(inflater, container, false) + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): MineCenterLayoutBinding { + return MineCenterLayoutBinding.inflate(inflater, container, false) } override fun createPresenter(): MinePresenter { @@ -32,11 +36,68 @@ class MineFragment : BaseFragment(), } override fun initView(savedInstanceState: Bundle?) { + listOf( + binding.linearXgmm, + binding.linearGhsj, + binding.linearQchc, + binding.linearBbxx, + binding.linearYsxy, + binding.linearYhxy, + binding.linearQhyy, + binding.linearZxzh, + binding.tvLogout, + ).forEach { button -> + button.setOnClickListener(this) + } + } + + override fun onClick(view: View) { + when (view.id) { + //修改密码 + R.id.linear_xgmm -> { + goTo(ModifyPsdActivity::class.java, null) + } + + R.id.linear_ghsj -> { + goTo(UpdateUserAccount::class.java, null) + } + + + //退出登录 + R.id.tv_logout -> { + showDialogtext( + "退出登录", + "确定要退出当前账号吗?", + "确定", + "取消", + object : OnDialogClick { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + // 退出登录接口后续接入 + } + } + ) + } + + + } } /** 将个人信息请求结果更新到个人中心页面。 */ override fun getUserInfoSuccess(userInfo: MineUserInfo) { - showMessage("个人信息获取成功") + val displayName = userInfo.userName.ifBlank { "未设置用户名" } + val displayAccount = userInfo.phoneNumber + ?.ifBlank { null } + ?: "未绑定手机号" + binding.tvUserName.text = displayName + binding.tvUserAccount.text = displayAccount + if (userInfo.avatar.isNullOrBlank()) { + binding.imgAvatar.setImageResource(R.mipmap.icon_mine_user_head_defaul) + } + //存一下个人信息 + UserInfoManager.setUserInfo(userInfo) } /** 版本检测回调,个人中心暂不处理版本信息。 */ diff --git a/app/src/main/java/com/juhabi/birds/mine/ModifyPsdActivity.kt b/app/src/main/java/com/juhabi/birds/mine/ModifyPsdActivity.kt index 94f2870..a2eb081 100644 --- a/app/src/main/java/com/juhabi/birds/mine/ModifyPsdActivity.kt +++ b/app/src/main/java/com/juhabi/birds/mine/ModifyPsdActivity.kt @@ -39,6 +39,7 @@ class ModifyPsdActivity : BaseActivity(), override fun initView(savedInstanceState: Bundle?) { + binding.includedTitle.tvTitle.text = "修改密码" listOf( binding.oldPsdVisibilityButton, binding.passwordVisibilityButton, diff --git a/app/src/main/java/com/juhabi/birds/mine/UpdateUserAccount.kt b/app/src/main/java/com/juhabi/birds/mine/UpdateUserAccount.kt new file mode 100644 index 0000000..f251edf --- /dev/null +++ b/app/src/main/java/com/juhabi/birds/mine/UpdateUserAccount.kt @@ -0,0 +1,87 @@ +package com.juhabi.birds.mine + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import com.gyf.immersionbar.ImmersionBar +import com.juhabi.birds.R +import com.juhabi.birds.base.BaseActivity +import com.juhabi.birds.databinding.ModifyPsdLayoutBinding +import com.juhabi.birds.databinding.UpdateUserPhoneLayoutBinding +import com.juhabi.birds.main.model.AppVersionInfo +import com.juhabi.birds.mine.model.MineUserInfo +import com.juhabi.birds.mine.mvp.MineContract +import com.juhabi.birds.mine.mvp.MineImpl +import com.juhabi.birds.mine.mvp.MinePresenter +import com.juhabi.birds.util.manager.UserInfoManager + +/** + * 修改手机号 + */ +class UpdateUserAccount : BaseActivity(), + MineContract.MineView, View.OnClickListener { + override fun createBinding(inflater: LayoutInflater): UpdateUserPhoneLayoutBinding { + return UpdateUserPhoneLayoutBinding.inflate(inflater) + } + + override fun createPresenter(): MinePresenter? { + return MinePresenter(MineImpl()) + } + override fun initWindows() { + ImmersionBar.with(this) + .statusBarView(binding.statusBarView) + .statusBarDarkFont(true) + .navigationBarColor(R.color.color_zhu) + .navigationBarDarkIcon(true) + .init() + } + + + override fun initView(savedInstanceState: Bundle?) { + binding.includedTitle.tvTitle.text = "修改密码" + var userinfo: MineUserInfo? = UserInfoManager.getUserInfo(mContext); + binding.tvUserAccount.text = userinfo?.nickName + listOf( + binding.tvConfirmGetcode, + binding.tvConfirmAccount, + binding.tvNewPhoneGetcode, + binding.tvSubmitNewAccount, + binding.includedTitle.imgBack, + ).forEach { button -> + button.setOnClickListener(this) + } + } + + override fun onClick(view: View) { + when(view.id){ + R.id.img_back ->{ + finish() + } + + R.id.tv_confirm_getcode ->{ + + } + + R.id.tv_confirmAccount ->{ + } + + R.id.tv_new_phone_getcode ->{ + } + + R.id.tv_submit_new_account ->{ + } + + } + } + + override fun showError(message: String) { + } + + override fun getUserInfoSuccess(userInfo: MineUserInfo) { + } + + override fun onVersionChecked(versionInfo: AppVersionInfo) { + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/juhabi/birds/mine/model/MineUserInfo.kt b/app/src/main/java/com/juhabi/birds/mine/model/MineUserInfo.kt index 20c6acf..e072ce1 100644 --- a/app/src/main/java/com/juhabi/birds/mine/model/MineUserInfo.kt +++ b/app/src/main/java/com/juhabi/birds/mine/model/MineUserInfo.kt @@ -1,24 +1,15 @@ package com.juhabi.birds.mine.model +/** + * 3.1 获取当前用户资料接口返回项。 + */ data class MineUserInfo( - val user: User? = null, - val permissions: List = emptyList(), - val roles: List = emptyList(), - val url: String? = null -) { - data class User( - val userId: String = "", - val tenantId: String = "", - val userName: String? = null, - val nickName: String = "", - val userType: String = "", - val email: String = "", - val phonenumber: String = "", - val sex: String = "", - val avatar: String? = null, - val status: String = "", - val loginIp: String = "", - val loginDate: String = "", - val createTime: String = "" - ) -} + val userName: String = "", + val nickName: String = "", + val phoneNumber: String? = null, + val email: String? = null, + val phoneBound: Boolean = false, + val userType: String = "", + val createTime: String = "", + val avatar: String? = null +) diff --git a/app/src/main/java/com/juhabi/birds/util/manager/UserInfoManager.kt b/app/src/main/java/com/juhabi/birds/util/manager/UserInfoManager.kt index e441784..e6ef07c 100644 --- a/app/src/main/java/com/juhabi/birds/util/manager/UserInfoManager.kt +++ b/app/src/main/java/com/juhabi/birds/util/manager/UserInfoManager.kt @@ -2,14 +2,14 @@ package com.juhabi.birds.util.manager import android.content.Context import com.juhabi.birds.MyApplication +import com.juhabi.birds.mine.model.MineUserInfo import com.juhabi.birds.network.TokenManager -import com.juhabi.birds.user.model.UserEntity import com.juhabi.birds.util.SharedPreferencesUtil /** 管理当前用户的内存缓存和轻量级本地持久化数据。 */ object UserInfoManager { @Volatile - private var cachedUser: UserEntity? = null + private var cachedUser: MineUserInfo? = null @JvmStatic fun getInstance(): UserInfoManager = this @@ -21,42 +21,42 @@ object UserInfoManager { cachedUser = SharedPreferencesUtil.getObject( context, KEY_USER_INFO, - UserEntity::class.java + MineUserInfo::class.java ) } @JvmStatic - fun getUserInfo(): UserEntity? = getUserInfo(MyApplication.appContext) + fun getUserInfo(): MineUserInfo? = getUserInfo(MyApplication.appContext) @JvmStatic - fun getUserInfo(context: Context): UserEntity? { + fun getUserInfo(context: Context): MineUserInfo? { cachedUser?.let { return it } return SharedPreferencesUtil.getObject( context, KEY_USER_INFO, - UserEntity::class.java + MineUserInfo::class.java )?.also { cachedUser = it } } @JvmStatic - fun setUserInfo(userInfo: UserEntity) { + fun setUserInfo(userInfo: MineUserInfo) { setUserInfo(MyApplication.appContext, userInfo) } @JvmStatic - fun setUserInfo(context: Context, userInfo: UserEntity) { + fun setUserInfo(context: Context, userInfo: MineUserInfo) { cachedUser = userInfo SharedPreferencesUtil.putObject(context, KEY_USER_INFO, userInfo) } /** 登录成功后统一保存用户信息和 token。 */ @JvmStatic - fun saveLogin(userInfo: UserEntity, token: String) { + fun saveLogin(userInfo: MineUserInfo, token: String) { saveLogin(MyApplication.appContext, userInfo, token) } @JvmStatic - fun saveLogin(context: Context, userInfo: UserEntity, token: String) { + fun saveLogin(context: Context, userInfo: MineUserInfo, token: String) { setUserInfo(context, userInfo) TokenManager.save(context, token) SharedPreferencesUtil.putBoolean(context, KEY_USER_LOGIN, token.isNotBlank()) diff --git a/app/src/main/res/color/bottom_nav_item_color.xml b/app/src/main/res/color/bottom_nav_item_color.xml index aeb73c4..ad279d7 100644 --- a/app/src/main/res/color/bottom_nav_item_color.xml +++ b/app/src/main/res/color/bottom_nav_item_color.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/drawable/bind_dev_input_line_bg.xml b/app/src/main/res/drawable/bind_dev_input_line_bg.xml new file mode 100644 index 0000000..797f9f1 --- /dev/null +++ b/app/src/main/res/drawable/bind_dev_input_line_bg.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_input_bg.xml b/app/src/main/res/drawable/dialog_input_bg.xml index 4a27553..3c9c7be 100644 --- a/app/src/main/res/drawable/dialog_input_bg.xml +++ b/app/src/main/res/drawable/dialog_input_bg.xml @@ -1,5 +1,7 @@ - - - + + + diff --git a/app/src/main/res/drawable/ic_nav_home.xml b/app/src/main/res/drawable/ic_nav_home.xml index 8483c28..ec793f8 100644 --- a/app/src/main/res/drawable/ic_nav_home.xml +++ b/app/src/main/res/drawable/ic_nav_home.xml @@ -1,3 +1,5 @@ - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_nav_mine.xml b/app/src/main/res/drawable/ic_nav_mine.xml index fbe00ab..e2e175b 100644 --- a/app/src/main/res/drawable/ic_nav_mine.xml +++ b/app/src/main/res/drawable/ic_nav_mine.xml @@ -1,3 +1,5 @@ - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_foot_bg.xml b/app/src/main/res/drawable/progress_foot_bg.xml new file mode 100644 index 0000000..604da1d --- /dev/null +++ b/app/src/main/res/drawable/progress_foot_bg.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_head_bg.xml b/app/src/main/res/drawable/progress_head_bg.xml new file mode 100644 index 0000000..de4b34b --- /dev/null +++ b/app/src/main/res/drawable/progress_head_bg.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_offline_bg.xml b/app/src/main/res/drawable/progress_offline_bg.xml new file mode 100644 index 0000000..9878653 --- /dev/null +++ b/app/src/main/res/drawable/progress_offline_bg.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_device_offline_bg.xml b/app/src/main/res/drawable/shape_device_offline_bg.xml new file mode 100644 index 0000000..fc4b11a --- /dev/null +++ b/app/src/main/res/drawable/shape_device_offline_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_device_online_bg.xml b/app/src/main/res/drawable/shape_device_online_bg.xml new file mode 100644 index 0000000..e13c529 --- /dev/null +++ b/app/src/main/res/drawable/shape_device_online_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_device_wifi_power_bg.xml b/app/src/main/res/drawable/shape_device_wifi_power_bg.xml new file mode 100644 index 0000000..63ca5bc --- /dev/null +++ b/app/src/main/res/drawable/shape_device_wifi_power_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_login_field_8_corner_bg.xml b/app/src/main/res/drawable/shape_login_field_8_corner_bg.xml new file mode 100644 index 0000000..7fafb54 --- /dev/null +++ b/app/src/main/res/drawable/shape_login_field_8_corner_bg.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/shape_logout_field_bg.xml b/app/src/main/res/drawable/shape_logout_field_bg.xml new file mode 100644 index 0000000..dec3cd3 --- /dev/null +++ b/app/src/main/res/drawable/shape_logout_field_bg.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/layout/bind_device_layout.xml b/app/src/main/res/layout/bind_device_layout.xml index 5c0d0b5..5d8c060 100644 --- a/app/src/main/res/layout/bind_device_layout.xml +++ b/app/src/main/res/layout/bind_device_layout.xml @@ -2,7 +2,8 @@ + android:layout_height="match_parent" + android:background="@color/color_zhu"> + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_marginHorizontal="15dp" + android:layout_marginTop="84dp" + android:gravity="center" + android:background="@drawable/shape_login_field_bg" + android:backgroundTint="@null" + android:stateListAnimator="@null" + android:text="确定" + android:textAllCaps="false" + android:textColor="@color/color_zhu" + android:textSize="17sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/device_item.xml b/app/src/main/res/layout/device_item.xml index 925b1bf..bd0d6f1 100644 --- a/app/src/main/res/layout/device_item.xml +++ b/app/src/main/res/layout/device_item.xml @@ -3,72 +3,307 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="10dp" - android:background="#FFFFFF" - android:elevation="2dp" - android:padding="14dp"> - + android:layout_marginTop="10dp"> - + android:orientation="vertical" + android:paddingVertical="13dp" + android:paddingHorizontal="20dp" + android:background="@drawable/shape_login_field_8_corner_bg"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_text.xml b/app/src/main/res/layout/dialog_input_text.xml index 8670dca..ef6ccce 100644 --- a/app/src/main/res/layout/dialog_input_text.xml +++ b/app/src/main/res/layout/dialog_input_text.xml @@ -3,58 +3,96 @@ android:id="@+id/contentDialog" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:background="@drawable/dialog_round_efefef_bg" - android:orientation="vertical" - android:paddingTop="28dp" - android:paddingBottom="24dp"> + android:layout_marginHorizontal="36dp" + android:background="@drawable/bg_confirm_dialog" + android:orientation="vertical"> + + + + + android:gravity="center_vertical" + android:hint="" + android:inputType="text" + android:maxLength="20" + android:paddingHorizontal="16dp" + android:singleLine="true" + android:textColor="@color/color_333333" + android:textColorHint="@color/color_999999" + android:textSize="15sp" /> + + + + + + + android:textColor="@color/color_333333" + android:textSize="16sp" /> + + + + android:text="确认修改" + android:textColor="@color/color_zhu" + android:textSize="16sp" + android:textStyle="bold" /> diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index efda55c..3350226 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -5,36 +5,50 @@ xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/page_background" - android:orientation="vertical"> - + - - + android:layout_height="54dp" + android:orientation="horizontal" + android:background="@color/color_zhu" + android:gravity="center_vertical"> + + + + - - + android:layout_weight="1"/> + + android:layout_width="38dp" + android:layout_height="38dp" + android:src="@mipmap/icon_dev_add" + android:layout_marginEnd="20dp"/> + + + + diff --git a/app/src/main/res/layout/mine_center_layout.xml b/app/src/main/res/layout/mine_center_layout.xml new file mode 100644 index 0000000..35f055a --- /dev/null +++ b/app/src/main/res/layout/mine_center_layout.xml @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/permission_confirm_dialog.xml b/app/src/main/res/layout/permission_confirm_dialog.xml index 20a04bb..cd18eb3 100644 --- a/app/src/main/res/layout/permission_confirm_dialog.xml +++ b/app/src/main/res/layout/permission_confirm_dialog.xml @@ -3,54 +3,69 @@ android:id="@+id/contentDialog" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="20dp" - android:background="@drawable/dialog_round_efefef_bg" - android:orientation="vertical" - android:paddingTop="24dp" - android:paddingBottom="24dp"> + android:layout_marginHorizontal="36dp" + android:background="@drawable/bg_confirm_dialog" + android:orientation="vertical"> + + + + + + + android:text="取消" + android:textColor="@color/color_333333" + android:textSize="16sp" /> + + + + android:text="确定" + android:textColor="@color/color_zhu" + android:textSize="16sp" + android:textStyle="bold" /> diff --git a/app/src/main/res/layout/register_layout.xml b/app/src/main/res/layout/register_layout.xml index 2cefbad..57f2f8a 100644 --- a/app/src/main/res/layout/register_layout.xml +++ b/app/src/main/res/layout/register_layout.xml @@ -48,6 +48,7 @@ android:src="@mipmap/icon_login_phone" android:contentDescription="@null" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_navigation_menu.xml b/app/src/main/res/menu/bottom_navigation_menu.xml index 16f21a1..47c827d 100644 --- a/app/src/main/res/menu/bottom_navigation_menu.xml +++ b/app/src/main/res/menu/bottom_navigation_menu.xml @@ -3,9 +3,9 @@ + android:title="@string/device_list" /> + android:title="@string/mine_title" /> diff --git a/app/src/main/res/mipmap-xhdpi/icon_bind_hint.png b/app/src/main/res/mipmap-xhdpi/icon_bind_hint.png new file mode 100644 index 0000000..1708650 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_bind_hint.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_bind_scan.png b/app/src/main/res/mipmap-xhdpi/icon_bind_scan.png new file mode 100644 index 0000000..83c29bb Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_bind_scan.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_add.png b/app/src/main/res/mipmap-xhdpi/icon_dev_add.png new file mode 100644 index 0000000..a318769 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_add.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_close_eye.png b/app/src/main/res/mipmap-xhdpi/icon_dev_close_eye.png new file mode 100644 index 0000000..6ddcedc Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_close_eye.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_location.png b/app/src/main/res/mipmap-xhdpi/icon_dev_location.png new file mode 100644 index 0000000..a3e44cb Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_location.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_more.png b/app/src/main/res/mipmap-xhdpi/icon_dev_more.png new file mode 100644 index 0000000..782726a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_more.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_open_eye.png b/app/src/main/res/mipmap-xhdpi/icon_dev_open_eye.png new file mode 100644 index 0000000..592936f Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_open_eye.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_point_down.png b/app/src/main/res/mipmap-xhdpi/icon_dev_point_down.png new file mode 100644 index 0000000..cb94e02 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_point_down.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_power_offline.png b/app/src/main/res/mipmap-xhdpi/icon_dev_power_offline.png new file mode 100644 index 0000000..9218bbb Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_power_offline.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_hight.png b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_hight.png new file mode 100644 index 0000000..7eba089 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_hight.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_low.png b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_low.png new file mode 100644 index 0000000..3c8af39 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_low.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_mid.png b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_mid.png new file mode 100644 index 0000000..2306ee6 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_mid.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_offline.png b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_offline.png new file mode 100644 index 0000000..2362278 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_dev_wifi_offline.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_input_index_false.png b/app/src/main/res/mipmap-xhdpi/icon_input_index_false.png new file mode 100644 index 0000000..09ebc22 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_input_index_false.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_input_index_true.png b/app/src/main/res/mipmap-xhdpi/icon_input_index_true.png new file mode 100644 index 0000000..e2227e0 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_input_index_true.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_main_mine_false.png b/app/src/main/res/mipmap-xhdpi/icon_main_mine_false.png new file mode 100644 index 0000000..6b6b61e Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_main_mine_false.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_main_mine_true.png b/app/src/main/res/mipmap-xhdpi/icon_main_mine_true.png new file mode 100644 index 0000000..26bd8f1 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_main_mine_true.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mian_index_false.png b/app/src/main/res/mipmap-xhdpi/icon_mian_index_false.png new file mode 100644 index 0000000..4f622c1 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mian_index_false.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mian_index_true.png b/app/src/main/res/mipmap-xhdpi/icon_mian_index_true.png new file mode 100644 index 0000000..7371871 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mian_index_true.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_bbxx.png b/app/src/main/res/mipmap-xhdpi/icon_mine_bbxx.png new file mode 100644 index 0000000..8a29d73 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_bbxx.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_hbsj.png b/app/src/main/res/mipmap-xhdpi/icon_mine_hbsj.png new file mode 100644 index 0000000..f40a702 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_hbsj.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_point.png b/app/src/main/res/mipmap-xhdpi/icon_mine_point.png new file mode 100644 index 0000000..f98b4e2 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_point.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_qchc.png b/app/src/main/res/mipmap-xhdpi/icon_mine_qchc.png new file mode 100644 index 0000000..0c8f35b Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_qchc.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_qhyy.png b/app/src/main/res/mipmap-xhdpi/icon_mine_qhyy.png new file mode 100644 index 0000000..b1c9b28 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_qhyy.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_user_head_defaul.png b/app/src/main/res/mipmap-xhdpi/icon_mine_user_head_defaul.png new file mode 100644 index 0000000..abaa413 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_user_head_defaul.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_xgmm.png b/app/src/main/res/mipmap-xhdpi/icon_mine_xgmm.png new file mode 100644 index 0000000..0be97dd Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_xgmm.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_yhxy.png b/app/src/main/res/mipmap-xhdpi/icon_mine_yhxy.png new file mode 100644 index 0000000..a0a9520 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_yhxy.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_ysxy.png b/app/src/main/res/mipmap-xhdpi/icon_mine_ysxy.png new file mode 100644 index 0000000..bef261c Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_ysxy.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_mine_zxzh.png b/app/src/main/res/mipmap-xhdpi/icon_mine_zxzh.png new file mode 100644 index 0000000..d205260 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_mine_zxzh.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_power_foot_high.png b/app/src/main/res/mipmap-xhdpi/icon_power_foot_high.png new file mode 100644 index 0000000..9ac8f3d Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_power_foot_high.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_power_foot_mid.png b/app/src/main/res/mipmap-xhdpi/icon_power_foot_mid.png new file mode 100644 index 0000000..011c27a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_power_foot_mid.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_power_head_high.png b/app/src/main/res/mipmap-xhdpi/icon_power_head_high.png new file mode 100644 index 0000000..d63c76c Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_power_head_high.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_power_head_mid.png b/app/src/main/res/mipmap-xhdpi/icon_power_head_mid.png new file mode 100644 index 0000000..e95bee9 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_power_head_mid.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_power_low.png b/app/src/main/res/mipmap-xhdpi/icon_power_low.png new file mode 100644 index 0000000..8db82f8 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_power_low.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_scan_index_false.png b/app/src/main/res/mipmap-xhdpi/icon_scan_index_false.png new file mode 100644 index 0000000..037bed3 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_scan_index_false.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_scan_index_true.png b/app/src/main/res/mipmap-xhdpi/icon_scan_index_true.png new file mode 100644 index 0000000..2183f48 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_scan_index_true.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_switch_off.png b/app/src/main/res/mipmap-xhdpi/icon_switch_off.png new file mode 100644 index 0000000..1525d1c Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_switch_off.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icon_switch_on.png b/app/src/main/res/mipmap-xhdpi/icon_switch_on.png new file mode 100644 index 0000000..9b5e27f Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icon_switch_on.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_bind_hint.png b/app/src/main/res/mipmap-xxhdpi/icon_bind_hint.png new file mode 100644 index 0000000..1708650 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_bind_hint.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_bind_scan.png b/app/src/main/res/mipmap-xxhdpi/icon_bind_scan.png new file mode 100644 index 0000000..83c29bb Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_bind_scan.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_add.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_add.png new file mode 100644 index 0000000..0282974 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_add.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_close_eye.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_close_eye.png new file mode 100644 index 0000000..d3625a7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_close_eye.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_location.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_location.png new file mode 100644 index 0000000..c688db3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_location.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_more.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_more.png new file mode 100644 index 0000000..383a43b Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_more.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_open_eye.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_open_eye.png new file mode 100644 index 0000000..8a58817 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_open_eye.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_point_down.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_point_down.png new file mode 100644 index 0000000..3b74b7d Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_point_down.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_power_offline.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_power_offline.png new file mode 100644 index 0000000..18ac60c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_power_offline.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_hight.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_hight.png new file mode 100644 index 0000000..78e7bfc Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_hight.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_low.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_low.png new file mode 100644 index 0000000..496b97c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_low.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_mid.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_mid.png new file mode 100644 index 0000000..9e293db Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_mid.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_offline.png b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_offline.png new file mode 100644 index 0000000..0187c4a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_dev_wifi_offline.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_input_index_false.png b/app/src/main/res/mipmap-xxhdpi/icon_input_index_false.png new file mode 100644 index 0000000..af3af36 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_input_index_false.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_input_index_true.png b/app/src/main/res/mipmap-xxhdpi/icon_input_index_true.png new file mode 100644 index 0000000..c37f2a2 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_input_index_true.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_main_mine_false.png b/app/src/main/res/mipmap-xxhdpi/icon_main_mine_false.png new file mode 100644 index 0000000..382f94e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_main_mine_false.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_main_mine_true.png b/app/src/main/res/mipmap-xxhdpi/icon_main_mine_true.png new file mode 100644 index 0000000..3cd1424 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_main_mine_true.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mian_index_false.png b/app/src/main/res/mipmap-xxhdpi/icon_mian_index_false.png new file mode 100644 index 0000000..cfb6348 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mian_index_false.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mian_index_true.png b/app/src/main/res/mipmap-xxhdpi/icon_mian_index_true.png new file mode 100644 index 0000000..cbdcac7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mian_index_true.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_bbxx.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_bbxx.png new file mode 100644 index 0000000..2eb28f4 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_bbxx.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_hbsj.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_hbsj.png new file mode 100644 index 0000000..8745381 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_hbsj.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_point.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_point.png new file mode 100644 index 0000000..c945f92 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_point.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_qchc.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_qchc.png new file mode 100644 index 0000000..7448cbe Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_qchc.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_qhyy.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_qhyy.png new file mode 100644 index 0000000..ab89c38 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_qhyy.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_xgmm.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_xgmm.png new file mode 100644 index 0000000..20e2966 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_xgmm.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_yhxy.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_yhxy.png new file mode 100644 index 0000000..3d7fde9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_yhxy.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_ysxy.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_ysxy.png new file mode 100644 index 0000000..5872e26 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_ysxy.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_mine_zxzh.png b/app/src/main/res/mipmap-xxhdpi/icon_mine_zxzh.png new file mode 100644 index 0000000..7b3c921 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_mine_zxzh.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_power_foot_high.png b/app/src/main/res/mipmap-xxhdpi/icon_power_foot_high.png new file mode 100644 index 0000000..5fde6e7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_power_foot_high.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_power_foot_mid.png b/app/src/main/res/mipmap-xxhdpi/icon_power_foot_mid.png new file mode 100644 index 0000000..1e3219b Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_power_foot_mid.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_power_head_high.png b/app/src/main/res/mipmap-xxhdpi/icon_power_head_high.png new file mode 100644 index 0000000..f8f625c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_power_head_high.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_power_head_mid.png b/app/src/main/res/mipmap-xxhdpi/icon_power_head_mid.png new file mode 100644 index 0000000..9b29044 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_power_head_mid.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_power_low.png b/app/src/main/res/mipmap-xxhdpi/icon_power_low.png new file mode 100644 index 0000000..3418243 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_power_low.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_scan_index_false.png b/app/src/main/res/mipmap-xxhdpi/icon_scan_index_false.png new file mode 100644 index 0000000..39899f3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_scan_index_false.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_scan_index_true.png b/app/src/main/res/mipmap-xxhdpi/icon_scan_index_true.png new file mode 100644 index 0000000..57a0e32 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_scan_index_true.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_switch_off.png b/app/src/main/res/mipmap-xxhdpi/icon_switch_off.png new file mode 100644 index 0000000..a70af79 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_switch_off.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icon_switch_on.png b/app/src/main/res/mipmap-xxhdpi/icon_switch_on.png new file mode 100644 index 0000000..5b2a96c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_switch_on.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_bind_hint.png b/app/src/main/res/mipmap-xxxhdpi/icon_bind_hint.png new file mode 100644 index 0000000..375ac4f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_bind_hint.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_bind_scan.png b/app/src/main/res/mipmap-xxxhdpi/icon_bind_scan.png new file mode 100644 index 0000000..3705cf1 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_bind_scan.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_add.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_add.png new file mode 100644 index 0000000..8b824ca Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_add.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_close_eye.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_close_eye.png new file mode 100644 index 0000000..c898fe0 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_close_eye.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_location.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_location.png new file mode 100644 index 0000000..92b50fa Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_location.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_more.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_more.png new file mode 100644 index 0000000..4ea75dc Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_more.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_open_eye.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_open_eye.png new file mode 100644 index 0000000..1001766 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_open_eye.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_point_down.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_point_down.png new file mode 100644 index 0000000..8ab4e9d Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_point_down.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_power_offline.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_power_offline.png new file mode 100644 index 0000000..c443853 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_power_offline.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_hight.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_hight.png new file mode 100644 index 0000000..f8ff3f6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_hight.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_low.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_low.png new file mode 100644 index 0000000..292884f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_low.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_mid.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_mid.png new file mode 100644 index 0000000..1c15ece Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_mid.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_offline.png b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_offline.png new file mode 100644 index 0000000..d0a43cb Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_dev_wifi_offline.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_input_index_false.png b/app/src/main/res/mipmap-xxxhdpi/icon_input_index_false.png new file mode 100644 index 0000000..74a5bb7 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_input_index_false.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_input_index_true.png b/app/src/main/res/mipmap-xxxhdpi/icon_input_index_true.png new file mode 100644 index 0000000..a508ef8 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_input_index_true.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_false.png b/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_false.png new file mode 100644 index 0000000..0b8390b Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_false.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_true.png b/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_true.png new file mode 100644 index 0000000..147e915 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_main_mine_true.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_false.png b/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_false.png new file mode 100644 index 0000000..1a1d03d Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_false.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_true.png b/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_true.png new file mode 100644 index 0000000..0f25e0c Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mian_index_true.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_bbxx.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_bbxx.png new file mode 100644 index 0000000..abbe13a Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_bbxx.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_hbsj.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_hbsj.png new file mode 100644 index 0000000..20c08b7 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_hbsj.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_point.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_point.png new file mode 100644 index 0000000..73f1215 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_point.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_qchc.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_qchc.png new file mode 100644 index 0000000..434127f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_qchc.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_qhyy.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_qhyy.png new file mode 100644 index 0000000..e726e77 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_qhyy.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_xgmm.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_xgmm.png new file mode 100644 index 0000000..ad3e39f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_xgmm.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_yhxy.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_yhxy.png new file mode 100644 index 0000000..7242c91 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_yhxy.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_ysxy.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_ysxy.png new file mode 100644 index 0000000..e42e1b1 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_ysxy.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_mine_zxzh.png b/app/src/main/res/mipmap-xxxhdpi/icon_mine_zxzh.png new file mode 100644 index 0000000..292b4fb Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_mine_zxzh.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_high.png b/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_high.png new file mode 100644 index 0000000..361154f Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_high.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_mid.png b/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_mid.png new file mode 100644 index 0000000..bbe45af Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_power_foot_mid.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_power_head_high.png b/app/src/main/res/mipmap-xxxhdpi/icon_power_head_high.png new file mode 100644 index 0000000..335b3f9 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_power_head_high.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_power_head_mid.png b/app/src/main/res/mipmap-xxxhdpi/icon_power_head_mid.png new file mode 100644 index 0000000..61e2cc6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_power_head_mid.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_power_low.png b/app/src/main/res/mipmap-xxxhdpi/icon_power_low.png new file mode 100644 index 0000000..ebf8bf6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_power_low.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_false.png b/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_false.png new file mode 100644 index 0000000..7eaa39b Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_false.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_true.png b/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_true.png new file mode 100644 index 0000000..3fc32e6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_scan_index_true.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_switch_off.png b/app/src/main/res/mipmap-xxxhdpi/icon_switch_off.png new file mode 100644 index 0000000..74e295e Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_switch_off.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon_switch_on.png b/app/src/main/res/mipmap-xxxhdpi/icon_switch_on.png new file mode 100644 index 0000000..11f6f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon_switch_on.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 320e937..d2aeb33 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -36,6 +36,8 @@ #D9D9D9 #DCDFE6 #E34D59 + #EDEDED + #FF942A #707070 @@ -56,6 +58,8 @@ #EFEFEF #666666 + #C4C2C2 + #FFB163 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 35eab0d..f61d6f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,7 @@ 获取验证码 %1$d秒后重新获取 已经到底了 + 我的设备 @@ -60,7 +61,7 @@ 测试定位权限 测试普通弹窗 测试输入弹窗 - 首页 + 设备列表 计划 历史 我的 @@ -72,6 +73,8 @@ 历史 我的 打开功能组件中心 + 修改密码 + 选择国家或地区 日期时间选择组件 选择日期 选择时间