设备联调优化

This commit is contained in:
马增飞
2025-11-11 18:26:07 +08:00
parent c20ce471cb
commit 32ea2f1379
15 changed files with 331 additions and 125 deletions
+1
View File
@@ -43,6 +43,7 @@
android:name=".ShelfActivity" android:name=".ShelfActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity android:name="com.shuwei.intelligent.shelves.SettingActivity" />
<receiver <receiver
android:name=".utils.BootReceiver" android:name=".utils.BootReceiver"
@@ -9,6 +9,7 @@ import android.os.Looper
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
import android.util.SparseArray import android.util.SparseArray
import android.util.SparseIntArray
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
@@ -75,7 +76,8 @@ class HomeActivity : BaseActivity() {
//const val TEMPERATURE_CMD = "${HEADER}1001${FOOTER}" //const val TEMPERATURE_CMD = "${HEADER}1001${FOOTER}"
const val DEVICE_INFO_CMD = "${HEADER}0301000000000000000000000000${FOOTER}" const val DEVICE_INFO_CMD = "${HEADER}0301000000000000000000000000${FOOTER}"
//const val START_CMD= "${HEADER}0F01360000${FOOTER}"
const val START_CMD= "${HEADER}0F01050020${FOOTER}"
const val ACTIVE_CMD = const val ACTIVE_CMD =
"${HEADER}000281C5D70A7D428948AD7254FADBB1516738938B4B9CBD73673E9D8E7F2E15062D${FOOTER}" "${HEADER}000281C5D70A7D428948AD7254FADBB1516738938B4B9CBD73673E9D8E7F2E15062D${FOOTER}"
@@ -83,8 +85,10 @@ class HomeActivity : BaseActivity() {
const val LIGHT_CLOSE = "${HEADER}020102020102020000000000000000000000000000${FOOTER}" const val LIGHT_CLOSE = "${HEADER}020102020102020000000000000000000000000000${FOOTER}"
const val LIGHT_OPEN = "${HEADER}020102020002020000000000000000000000000000${FOOTER}" const val LIGHT_OPEN = "${HEADER}020102020002020000000000000000000000000000${FOOTER}"
const val TEMPERATURE_CTRL = "${HEADER}0F01040000${FOOTER}"
val list: MutableList<ShelfModel> = mutableListOf() val list: MutableList<ShelfModel> = mutableListOf()
val weightArray = SparseArray<Double?>() val weightArray = SparseIntArray()
var shelfIndex = 0 var shelfIndex = 0
// public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0 // public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0
@@ -124,6 +128,7 @@ class HomeActivity : BaseActivity() {
} }
SerialPortManager.send(ACTIVE_CMD) SerialPortManager.send(ACTIVE_CMD)
//SerialPortManager.send(DEVICE_INFO_CMD) //SerialPortManager.send(DEVICE_INFO_CMD)
} }
repeatOnLifecycle(Lifecycle.State.CREATED) { repeatOnLifecycle(Lifecycle.State.CREATED) {
@@ -296,7 +301,12 @@ class HomeActivity : BaseActivity() {
//获取设备状态 //获取设备状态
getDeviceInfo(data) getDeviceInfo(data)
} }
"1001","1002" -> {
Log.d(TAG, "receiveSerialPortData,温控信息上报数据:${data}")
}
"0F02" -> {
Log.d(TAG, "receiveSerialPortData,温控信息应答数据:${data}")
}
else -> {} else -> {}
} }
} }
@@ -378,12 +388,11 @@ class HomeActivity : BaseActivity() {
weightHex = firstByteHex + weightHex.substring(2) weightHex = firstByteHex + weightHex.substring(2)
realWeight = -1 * weightHex.toInt() realWeight = -1 * weightHex.toInt()
} }
val realWeightDouble = realWeight / 1000.0 weightArray.put(index, realWeight)
weightArray.put(index, realWeightDouble)
if (index <= 10) { if (index <= 10) {
list.firstOrNull { it.deviceNo == index }?.let { list.firstOrNull { it.deviceNo == index }?.let {
it.weight = realWeightDouble it.weight = realWeight.toDouble()
val pos = list.indexOf(it) val pos = list.indexOf(it)
shelfAdapter.notifyItemChanged(pos) shelfAdapter.notifyItemChanged(pos)
Log.d(TAG, "getWeightInfo: deviceNo=${it.deviceNo},realWeight=${realWeight}") Log.d(TAG, "getWeightInfo: deviceNo=${it.deviceNo},realWeight=${realWeight}")
@@ -435,7 +444,7 @@ class HomeActivity : BaseActivity() {
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
private val shelfAdapter by lazy { private val shelfAdapter by lazy {
ShelfAdapter(list).apply { ShelfAdapter(list).apply {
setOnDebouncedItemClick { adapter, view, position -> setOnItemClickListener { _, _, position ->
shelfIndex = position shelfIndex = position
lifecycleScope.launch { lifecycleScope.launch {
// val openCmd = if (list[position].deviceNo in 1..5) // val openCmd = if (list[position].deviceNo in 1..5)
@@ -447,6 +456,7 @@ class HomeActivity : BaseActivity() {
// toast("${list[position].goodsName}柜门开启失败") // toast("${list[position].goodsName}柜门开启失败")
// return@launch // return@launch
// } // }
//SerialPortManager.send(START_CMD)
launch(Intent(this@HomeActivity, ShelfActivity::class.java).also { launch(Intent(this@HomeActivity, ShelfActivity::class.java).also {
it.putExtra(ShelfActivity.SHELF_MODEL, list[position]) it.putExtra(ShelfActivity.SHELF_MODEL, list[position])
}) { }) {
@@ -465,13 +475,13 @@ class HomeActivity : BaseActivity() {
try { try {
val submitList = list.sortedBy { it.deviceNo } val submitList = list.sortedBy { item-> item.deviceNo }
val body = ShelfBody().also { val body = ShelfBody().also { body ->
it.deviceId = App.deviceId ?: "" body.deviceId = App.deviceId ?: ""
it.canteenId = App.canteenId body.canteenId = App.canteenId
it.temperature = showTemperatureC body.temperature = showTemperatureC
it.humidity = showHumidity body.humidity = showHumidity
it.goodsList = submitList body.goodsList = submitList
} }
Log.d("mzf", "performSync: body:${body.toJsonString()}") Log.d("mzf", "performSync: body:${body.toJsonString()}")
lifecycleScope.launch { lifecycleScope.launch {
@@ -553,7 +563,8 @@ class HomeActivity : BaseActivity() {
item?.apply { item?.apply {
goodsId = "" goodsId = ""
goodsName = null goodsName = null
weight = null weight = 0.0
weightBak = if (event.weight <= 0.0 ) 0.0 else -1 * event.weight.toDouble()
createTime = null createTime = null
overdueDay = null overdueDay = null
} }
@@ -0,0 +1,68 @@
package com.shuwei.intelligent.shelves
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import androidx.lifecycle.lifecycleScope
import com.shuwei.intelligent.shelves.base.BaseActivity
import com.shuwei.intelligent.shelves.databinding.ActivitySettingBinding
import com.shuwei.intelligent.shelves.serial.SerialPortManager
import com.shuwei.intelligent.shelves.utils.KeyboardUtil
import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
class SettingActivity: BaseActivity() {
private lateinit var binding: ActivitySettingBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingBinding.inflate(layoutInflater)
setBackground()
setContentView(binding.root)
binding.btnSendCmd.setOnClickListener{
val cmd = binding.etInputCmd.text.toString().trim()
if (cmd.isBlank()) {
return@setOnClickListener
}
val realCmd = "${HomeActivity.HEADER}0F01${cmd}${HomeActivity.FOOTER}"
lifecycleScope.launch {
SerialPortManager.send(realCmd)
}
}
binding.ivBack.setOnClickListener { finish() }
binding.root.setOnClickListener { v ->
KeyboardUtil.hideKeyboard(v)
}
}
private fun updateDateTime() {
val sdf = SimpleDateFormat(ShelfActivity.YYYY_MM_DD__EEEE_HH_MM_SS, Locale.CHINA)
val dateTime = sdf.format(Date())
val arr = dateTime.split("***")
updateLeftStatus(arr[0])
updateRightStatus(arr[1])
}
private val handler = Handler(Looper.getMainLooper())
private val updateTask = object : Runnable {
override fun run() {
updateDateTime()
handler.postDelayed(this, 1000)
}
}
override fun onResume() {
super.onResume()
hideStatusBar()
handler.post(updateTask)
}
override fun onPause() {
super.onPause()
handler.removeCallbacks(updateTask)
}
}
@@ -54,7 +54,7 @@ class ShelfActivity : BaseActivity() {
companion object { companion object {
private const val TAG = "ShelfActivity" private const val TAG = "ShelfActivity"
private const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss" const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss"
const val SHELF_MODEL = "shelfModel" const val SHELF_MODEL = "shelfModel"
const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo" const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo"
const val SHELF_WEIGHT = "shelfWeight" const val SHELF_WEIGHT = "shelfWeight"
@@ -90,9 +90,9 @@ class ShelfActivity : BaseActivity() {
shelfModel?.let { shelfModel?.let {
binding.tvShelfName.text = it.shelfName binding.tvShelfName.text = it.shelfName
binding.tvFoodName.text = if (it.goodsName.isNullOrBlank()) "-" else it.goodsName binding.tvFoodName.text = if (it.goodsName.isNullOrBlank()) "-" else it.goodsName
realWeight = ((it.weight ?: 0.0) * 1000).toInt() realWeight = it.weight?.toInt()?:0
// realWeight = (HomeActivity.getRealWeight() * 1000).toInt() binding.tvFoodWeight.text = if(realWeight < 1000) "${realWeight}" else "%.3f千克".format(realWeight/1000.0)
binding.tvFoodWeight.text = "${realWeight}" startTime = System.currentTimeMillis()
} }
initRecyclerView() initRecyclerView()
@@ -125,7 +125,7 @@ class ShelfActivity : BaseActivity() {
shelfName = shelfModel?.shelfName, shelfName = shelfModel?.shelfName,
goodsId = currentGoodsId, goodsId = currentGoodsId,
goodsName = list[clickIndex].goodsName, goodsName = list[clickIndex].goodsName,
weight = realWeight / 1000.0, weight = realWeight.toDouble(),
overdueDay = list[clickIndex].overdueDay, overdueDay = list[clickIndex].overdueDay,
// createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date()) // createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date())
createTime = DateTimeUtil.formatDateTime(dateTime = Date()) createTime = DateTimeUtil.formatDateTime(dateTime = Date())
@@ -142,11 +142,12 @@ class ShelfActivity : BaseActivity() {
binding.btnClearZero.setOnClickListener { binding.btnClearZero.setOnClickListener {
clearZero() clearZero()
} }
binding.btnClearEmpty?.setOnClickListener { binding.btnClearEmpty.setOnClickListener {
val tempWeight = shelfModel?.weight?.toInt()?:0
clearZero() clearZero()
binding.tvFoodName.text = "-" binding.tvFoodName.text = "-"
binding.tvFoodWeight.text = "0克" //binding.tvFoodWeight.text = "0克"
EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo)) EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo, tempWeight))
} }
lifecycleScope.launch { lifecycleScope.launch {
SerialPortManager.send(DEVICE_INFO_CMD) SerialPortManager.send(DEVICE_INFO_CMD)
@@ -358,7 +359,12 @@ class ShelfActivity : BaseActivity() {
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public fun receiveWeightEvent(event: SendWeightEvent) { public fun receiveWeightEvent(event: SendWeightEvent) {
if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) { if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) {
binding.tvFoodWeight.text = "${event.weight}" val intervalTime = System.currentTimeMillis() - startTime
Log.d(TAG, "receiveWeightEvent: ${event.shelfNo}号货架重量数据获取间隔时间为:$intervalTime")
val weight = event.weight
binding.tvFoodWeight.text = if(weight < 1000) "${weight}" else "%.3f千克".format(weight/1000.0)
startTime = System.currentTimeMillis()
window.decorView.postDelayed({ Loading.dismiss() }, 1000)
} }
} }
@@ -375,10 +381,11 @@ class ShelfActivity : BaseActivity() {
// binding.tvFoodWeight.text = "${realWeight}克" // binding.tvFoodWeight.text = "${realWeight}克"
SerialPortManager.send(DEVICE_INFO_CMD) SerialPortManager.send(DEVICE_INFO_CMD)
startTime = System.currentTimeMillis()
Loading.show(this@ShelfActivity) Loading.show(this@ShelfActivity)
window.decorView.postDelayed({ Loading.dismiss() }, 5000) // window.decorView.postDelayed({ Loading.dismiss() }, 5000)
} }
KeyboardUtil.hideKeyboard(window.decorView) KeyboardUtil.hideKeyboard(window.decorView)
} }
private var startTime = 0L
} }
@@ -14,7 +14,6 @@ import com.shuwei.intelligent.shelves.utils.DateTimeUtil
import com.shuwei.intelligent.shelves.utils.ext.gone import com.shuwei.intelligent.shelves.utils.ext.gone
import com.shuwei.intelligent.shelves.utils.ext.visible import com.shuwei.intelligent.shelves.utils.ext.visible
import java.util.Date import java.util.Date
import kotlin.math.roundToInt
class ShelfAdapter(list: MutableList<ShelfModel>) : class ShelfAdapter(list: MutableList<ShelfModel>) :
BaseQuickAdapter<ShelfModel, ShelfAdapter.VH>(list) { BaseQuickAdapter<ShelfModel, ShelfAdapter.VH>(list) {
@@ -37,7 +36,7 @@ class ShelfAdapter(list: MutableList<ShelfModel>) :
override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) { override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) {
val shelfNo = item!!.deviceNo val shelfNo = item!!.deviceNo
item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}" item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}"
val weight = item.weight ?: 0.toDouble() val weight = item.weight ?: 0.0
val binding = holder.binding val binding = holder.binding
if (item.overdueDay.isNullOrBlank()) { if (item.overdueDay.isNullOrBlank()) {
binding.ivStaleFood.gone() binding.ivStaleFood.gone()
@@ -63,7 +62,8 @@ class ShelfAdapter(list: MutableList<ShelfModel>) :
binding.tvFoodWeight.run { binding.tvFoodWeight.run {
setTextColor(getColor(R.color.food_weight_orange)) setTextColor(getColor(R.color.food_weight_orange))
//val showWeight = if (weight == 0.toDouble()) "0克" else "%.3f千克".format(weight) //val showWeight = if (weight == 0.toDouble()) "0克" else "%.3f千克".format(weight)
text = "${(weight*1000).roundToInt()}" text = if(weight < 1000) "${weight.toInt()}" else "%.3f千克".format(weight/1000.0)
//"${(weight*1000).roundToInt()}克"
} }
//val isBlankShelf = weight <= 0 //val isBlankShelf = weight <= 0
val isBlankShelf = item.goodsName.isNullOrBlank() val isBlankShelf = item.goodsName.isNullOrBlank()
@@ -17,9 +17,11 @@ import com.shuwei.intelligent.shelves.HomeActivity
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_CLOSE import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_CLOSE
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_OPEN import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_OPEN
import com.shuwei.intelligent.shelves.R import com.shuwei.intelligent.shelves.R
import com.shuwei.intelligent.shelves.SettingActivity
import com.shuwei.intelligent.shelves.databinding.ActivityBaseBinding import com.shuwei.intelligent.shelves.databinding.ActivityBaseBinding
import com.shuwei.intelligent.shelves.serial.SerialPortManager import com.shuwei.intelligent.shelves.serial.SerialPortManager
import com.shuwei.intelligent.shelves.utils.ext.clickWithDebounce import com.shuwei.intelligent.shelves.utils.ext.clickWithDebounce
import com.shuwei.intelligent.shelves.utils.ext.startActivity
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
@@ -146,6 +148,9 @@ open class BaseActivity : AppCompatActivity() {
val tag = binding.tvLeftStatus.tag?.toString()?.toBoolean() ?: true val tag = binding.tvLeftStatus.tag?.toString()?.toBoolean() ?: true
switchLight(tag.not()) switchLight(tag.not())
} }
binding.tvRightStatus.clickWithDebounce {
startActivity<SettingActivity> { }
}
} }
} }
@@ -7,4 +7,4 @@ data class SendWeightEvent(
data class WeightEvent(var weight: Int) data class WeightEvent(var weight: Int)
data class ClearShelfEvent(var shelfNo: Int) data class ClearShelfEvent(var shelfNo: Int, var weight: Int)
@@ -10,6 +10,7 @@ data class ShelfModel(
var goodsName: String? = null, var goodsName: String? = null,
var deviceId: String? = null, var deviceId: String? = null,
var weight: Double? = null, var weight: Double? = null,
var weightBak: Double? = null,
var createTime: String? = null, var createTime: String? = null,
var overdueDay: String? = null, var overdueDay: String? = null,
var temperature: String? = null, var temperature: String? = null,
@@ -1,5 +1,6 @@
package com.shuwei.intelligent.shelves.net package com.shuwei.intelligent.shelves.net
import android.app.Activity
import android.app.Dialog import android.app.Dialog
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
@@ -15,13 +16,15 @@ object Loading {
private var dialog: LoadingDialog? = null private var dialog: LoadingDialog? = null
fun show(context: Context) { fun show(activity: Activity) {
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (dialog?.isShowing == true) { if (dialog?.isShowing == true) {
dialog?.dismiss() dialog?.dismiss()
} }
if (dialog == null) { if (dialog == null) {
dialog = LoadingDialog(context) dialog = LoadingDialog(activity)
} }
dialog?.show() dialog?.show()
} }
@@ -47,12 +50,13 @@ class LoadingDialog(
binding.tvMessage.text = message binding.tvMessage.text = message
setContentView(binding.root) setContentView(binding.root)
setCancelable(true) setCancelable(true)
setCanceledOnTouchOutside(true)
window?.run { window?.run {
setBackgroundDrawable(Color.TRANSPARENT.toDrawable()) setBackgroundDrawable(Color.TRANSPARENT.toDrawable())
setFlags( // setFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE // WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
); // )
} }
setOnDismissListener { setOnDismissListener {
onDismiss() onDismiss()
@@ -38,6 +38,11 @@ class SyncTask(appContext: Context, workerParams: WorkerParameters) :
val list = HomeActivity.list val list = HomeActivity.list
Log.d(TAG, "performSync: list:${list.toJsonString()}") Log.d(TAG, "performSync: list:${list.toJsonString()}")
val submitList = list.sortedBy { it.deviceNo } val submitList = list.sortedBy { it.deviceNo }
submitList.forEach {
if (it.goodsId.isBlank()) {
it.weight = it.weightBak
}
}
// submitList.forEach { // submitList.forEach {
// it.temperature = HomeActivity.showTemperatureC // it.temperature = HomeActivity.showTemperatureC
// it.humidity = HomeActivity.showHumidity // it.humidity = HomeActivity.showHumidity
@@ -14,6 +14,7 @@ object TaskManager {
val nextRequest = OneTimeWorkRequestBuilder<SyncTask>() val nextRequest = OneTimeWorkRequestBuilder<SyncTask>()
.setInitialDelay(2, TimeUnit.MINUTES) .setInitialDelay(2, TimeUnit.MINUTES)
// .setInitialDelay(30, TimeUnit.SECONDS) // .setInitialDelay(30, TimeUnit.SECONDS)
// .setInitialDelay(10, TimeUnit.MINUTES)
// .setInputData(inputData) // .setInputData(inputData)
.build() .build()
WorkManager.getInstance(App.getInstance()) WorkManager.getInstance(App.getInstance())
@@ -406,7 +406,8 @@ public class AppUtil {
*/ */
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
public static String getUDID(Context context) { public static String getUDID(Context context) {
return "test111"; return "SWZC-HG-001";
//"test111";
// String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); // String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
// if (!androidID.equals("")) { // if (!androidID.equals("")) {
// try { // try {
@@ -35,10 +35,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:fontFamily="sans-serif-medium"
android:gravity="center" android:gravity="center"
android:textColor="@color/bg_page" android:textColor="@color/bg_page"
android:textSize="30sp" android:textSize="30sp"
android:fontFamily="sans-serif-medium"
tools:text="货架 - 03" /> tools:text="货架 - 03" />
<Space <Space
@@ -89,11 +89,11 @@
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:backgroundTint="@color/bg_page" android:backgroundTint="@color/bg_page"
android:ellipsize="end" android:ellipsize="end"
android:fontFamily="sans-serif-medium"
android:insetTop="0dp" android:insetTop="0dp"
android:insetBottom="0dp" android:insetBottom="0dp"
android:maxLines="1" android:maxLines="1"
android:text="清零" android:text="清零"
android:fontFamily="sans-serif-medium"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="30sp" android:textSize="30sp"
app:cornerRadius="12dp" app:cornerRadius="12dp"
@@ -105,25 +105,10 @@
android:layout_width="60dp" android:layout_width="60dp"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_gravity="top|start" android:layout_gravity="top|start"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:src="@drawable/ic_back_512" android:src="@drawable/ic_back_512"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView
android:id="@+id/btnClearEmpty"
android:layout_width="120dp"
android:layout_height="60dp"
android:layout_gravity="bottom|end"
android:layout_marginBottom="16dp"
android:layout_marginEnd="24dp"
android:maxLines="1"
android:text="清空"
android:gravity="center"
android:textColor="@color/food_name_black"
android:textSize="20sp"
tools:ignore="HardcodedText" />
</FrameLayout> </FrameLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
@@ -167,16 +152,16 @@
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:background="@null" android:background="@null"
android:fontFamily="sans-serif-medium"
android:hint="输入食材名称" android:hint="输入食材名称"
android:maxLines="1"
android:inputType="text"
android:text=""
android:imeOptions="actionSearch" android:imeOptions="actionSearch"
android:textColor="@color/food_name_black" android:inputType="text"
android:maxLines="1"
android:paddingStart="1dp" android:paddingStart="1dp"
android:paddingEnd="1dp" android:paddingEnd="1dp"
android:text=""
android:textColor="@color/food_name_black"
android:textColorHint="#B4BEC8" android:textColorHint="#B4BEC8"
android:fontFamily="sans-serif-medium"
android:textSize="30sp" android:textSize="30sp"
tools:ignore="Autofill,HardcodedText,TextFields" /> tools:ignore="Autofill,HardcodedText,TextFields" />
</LinearLayout> </LinearLayout>
@@ -184,8 +169,8 @@
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_marginTop="24dp"
android:layout_marginTop="24dp"> android:layout_weight="1">
<com.scwang.smart.refresh.layout.SmartRefreshLayout <com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout" android:id="@+id/refreshLayout"
@@ -200,16 +185,16 @@
android:id="@+id/rvSearch" android:id="@+id/rvSearch"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingStart="36dp"
android:paddingBottom="12dp"
android:paddingTop="12dp"
android:paddingEnd="36dp"
android:clipToPadding="false" android:clipToPadding="false"
android:overScrollMode="never" android:overScrollMode="never"
tools:listitem="@layout/list_item_search" android:paddingStart="36dp"
android:paddingTop="12dp"
android:paddingEnd="36dp"
android:paddingBottom="12dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2" app:spanCount="2"
tools:itemCount="10"/> tools:itemCount="10"
tools:listitem="@layout/list_item_search" />
<com.scwang.smart.refresh.footer.ClassicsFooter <com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -219,34 +204,64 @@
<include <include
android:id="@+id/include" android:id="@+id/include"
layout="@layout/layout_empty_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
layout="@layout/layout_empty_view" android:visibility="gone" />
android:visibility="gone"/>
</FrameLayout> </FrameLayout>
<!-- android:layout_marginTop="48dp"--> <LinearLayout
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="80dp" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:gravity="center_vertical"
android:layout_marginEnd="48dp" android:orientation="horizontal">
android:layout_marginStart="48dp"
android:layout_marginBottom="24dp" <com.google.android.material.button.MaterialButton
android:backgroundTint="@color/bg_page" android:id="@+id/btnClearEmpty"
android:ellipsize="end" android:layout_width="0dp"
android:insetTop="0dp" android:layout_height="80dp"
android:insetBottom="0dp" android:layout_marginStart="48dp"
android:maxLines="1" android:layout_marginTop="24dp"
android:text="确定" android:layout_marginEnd="24dp"
android:textStyle="bold" android:layout_marginBottom="24dp"
android:textColor="@color/white" android:layout_weight="1"
android:textSize="30sp" android:backgroundTint="@color/bg_page"
app:cornerRadius="12dp" android:ellipsize="end"
app:elevation="0dp" android:insetTop="0dp"
tools:ignore="HardcodedText" /> android:insetBottom="0dp"
android:maxLines="1"
android:text="清空"
android:textColor="@color/white"
android:textSize="30sp"
android:textStyle="bold"
app:cornerRadius="12dp"
app:elevation="0dp"
tools:ignore="HardcodedText" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirm"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="48dp"
android:layout_marginBottom="24dp"
android:layout_weight="1"
android:backgroundTint="@color/bg_page"
android:ellipsize="end"
android:insetTop="0dp"
android:insetBottom="0dp"
android:maxLines="1"
android:text="确定"
android:textColor="@color/white"
android:textSize="30sp"
android:textStyle="bold"
app:cornerRadius="12dp"
app:elevation="0dp"
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout> </LinearLayout>
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/bg_page">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="260dp"
android:layout_marginStart="12dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="12dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="6dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/ivBack"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="top|start"
android:layout_marginTop="12dp"
android:layout_marginStart="12dp"
android:src="@drawable/ic_back_512"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28sp"
android:layout_gravity="center"
android:text="设置"
android:textColor="@color/black"/>
</FrameLayout>
<EditText
android:id="@+id/etInputCmd"
android:layout_width="match_parent"
android:layout_height="60dp"
android:hint="请输入命令"
android:maxLines="1"
android:textSize="22sp" />
<Button
android:id="@+id/btnSendCmd"
android:layout_width="180dp"
android:layout_height="60dp"
android:textSize="22sp"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:text="发送命令" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
+50 -34
View File
@@ -110,20 +110,6 @@
android:src="@drawable/ic_back_512" android:src="@drawable/ic_back_512"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView
android:id="@+id/btnClearEmpty"
android:layout_width="65dp"
android:layout_height="30dp"
android:layout_gravity="bottom|end"
android:layout_marginBottom="10dp"
android:layout_marginEnd="12dp"
android:maxLines="1"
android:text="清空"
android:gravity="center"
android:textColor="@color/food_name_black"
android:textSize="12sp"
tools:ignore="HardcodedText" />
</FrameLayout> </FrameLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
@@ -225,27 +211,57 @@
android:visibility="gone" /> android:visibility="gone" />
</FrameLayout> </FrameLayout>
<!-- android:layout_marginTop="48dp"--> <LinearLayout
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="40dp" android:layout_height="wrap_content"
android:layout_marginStart="24dp" android:orientation="horizontal"
android:layout_marginTop="12dp" android:gravity="center_vertical">
android:layout_marginEnd="24dp"
android:layout_marginBottom="12dp" <com.google.android.material.button.MaterialButton
android:backgroundTint="@color/bg_page" android:id="@+id/btnClearEmpty"
android:ellipsize="end" android:layout_width="0dp"
android:insetTop="0dp" android:layout_weight="1"
android:insetBottom="0dp" android:layout_height="40dp"
android:maxLines="1" android:layout_marginStart="24dp"
android:text="确定" android:layout_marginTop="12dp"
android:textColor="@color/white" android:layout_marginEnd="12dp"
android:textSize="15sp" android:layout_marginBottom="12dp"
android:textStyle="bold" android:backgroundTint="@color/bg_page"
app:cornerRadius="6dp" android:ellipsize="end"
app:elevation="0dp" android:insetTop="0dp"
tools:ignore="HardcodedText" /> android:insetBottom="0dp"
android:maxLines="1"
android:text="清空"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
app:cornerRadius="6dp"
app:elevation="0dp"
tools:ignore="HardcodedText" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnConfirm"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="40dp"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="12dp"
android:backgroundTint="@color/bg_page"
android:ellipsize="end"
android:insetTop="0dp"
android:insetBottom="0dp"
android:maxLines="1"
android:text="确定"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
app:cornerRadius="6dp"
app:elevation="0dp"
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout> </LinearLayout>