使用新方式实现调料页面,优化涉及页面
This commit is contained in:
@@ -65,6 +65,7 @@ dependencies {
|
|||||||
implementation(libs.androidx.core.ktx)
|
implementation(libs.androidx.core.ktx)
|
||||||
implementation(libs.androidx.appcompat)
|
implementation(libs.androidx.appcompat)
|
||||||
implementation(libs.material)
|
implementation(libs.material)
|
||||||
|
implementation(libs.androidx.gridlayout)
|
||||||
testImplementation(libs.junit)
|
testImplementation(libs.junit)
|
||||||
androidTestImplementation(libs.androidx.junit)
|
androidTestImplementation(libs.androidx.junit)
|
||||||
androidTestImplementation(libs.androidx.espresso.core)
|
androidTestImplementation(libs.androidx.espresso.core)
|
||||||
|
|||||||
@@ -76,6 +76,8 @@
|
|||||||
android:name=".ui.FoodSearchActivity"
|
android:name=".ui.FoodSearchActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
|
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
|
||||||
|
<activity android:name="com.shuwei.dish.match.ui.DeviceConfigActivity" />
|
||||||
|
<activity android:name="com.shuwei.dish.match.ui.SubmitFoodActivity" />
|
||||||
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|||||||
@@ -183,7 +183,7 @@
|
|||||||
"popularName" : "生抽",
|
"popularName" : "生抽",
|
||||||
"canteenId" : "1678234139391512577",
|
"canteenId" : "1678234139391512577",
|
||||||
"relateionType_dictText" : "食材原材料",
|
"relateionType_dictText" : "食材原材料",
|
||||||
"sort" : 12,
|
"sort" : 11,
|
||||||
"isDel" : 0,
|
"isDel" : 0,
|
||||||
"createTime" : "2025-08-18 10:19:08"
|
"createTime" : "2025-08-18 10:19:08"
|
||||||
},
|
},
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
"popularName" : "菜籽油,爱菊菜籽油",
|
"popularName" : "菜籽油,爱菊菜籽油",
|
||||||
"canteenId" : "1678234139391512577",
|
"canteenId" : "1678234139391512577",
|
||||||
"relateionType_dictText" : "食材原材料",
|
"relateionType_dictText" : "食材原材料",
|
||||||
"sort" : 14,
|
"sort" : 10,
|
||||||
"isDel" : 0,
|
"isDel" : 0,
|
||||||
"createTime" : "2025-08-18 10:19:19"
|
"createTime" : "2025-08-18 10:19:19"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,17 @@ class TextCellAdapter(var list: MutableList<SeasoningEntity>) :
|
|||||||
fun loadCell(tvCell: TextView, item: SeasoningEntity) {
|
fun loadCell(tvCell: TextView, item: SeasoningEntity) {
|
||||||
if (item.goodsName.isNullOrBlank()) {
|
if (item.goodsName.isNullOrBlank()) {
|
||||||
tvCell.run {
|
tvCell.run {
|
||||||
text = "未配置"
|
text = buildSpannableString {
|
||||||
setTextColor(ContextCompat.getColor(context, R.color.black999))
|
appendText(
|
||||||
|
"未配置",
|
||||||
|
ForegroundColorSpan("#999999".toColorInt()),
|
||||||
|
StyleSpan(Typeface.BOLD),
|
||||||
|
AbsoluteSizeSpan(28, true),
|
||||||
|
LineHeightSpan { text, start, end, spanstartv, v, fm ->
|
||||||
|
fm.descent += 10.dp // 增加行间距
|
||||||
|
}
|
||||||
|
)}
|
||||||
|
//setTextColor(ContextCompat.getColor(context, R.color.black999))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if (item.pageType == 1) {
|
// if (item.pageType == 1) {
|
||||||
@@ -87,7 +96,7 @@ class TextCellAdapter(var list: MutableList<SeasoningEntity>) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getTextSpan(item: SeasoningEntity): SpannableStringBuilder {
|
fun getTextSpan(item: SeasoningEntity): SpannableStringBuilder {
|
||||||
val endIndex = if (item.sort == 14) 10 else 6
|
val endIndex = if (item.sort == 10 || item.sort == 14) 10 else 6
|
||||||
var name = item.goodsName!!
|
var name = item.goodsName!!
|
||||||
if (name.length > endIndex) {
|
if (name.length > endIndex) {
|
||||||
name = "${name.substring(0, endIndex)}…"
|
name = "${name.substring(0, endIndex)}…"
|
||||||
@@ -103,7 +112,6 @@ class TextCellAdapter(var list: MutableList<SeasoningEntity>) :
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
append("\n")
|
append("\n")
|
||||||
|
|
||||||
val weight = item.useWeight ?: 0.toDouble()
|
val weight = item.useWeight ?: 0.toDouble()
|
||||||
val weightColor = if (weight == 0.toDouble()) "#999999" else "#00BC71"
|
val weightColor = if (weight == 0.toDouble()) "#999999" else "#00BC71"
|
||||||
appendText(
|
appendText(
|
||||||
|
|||||||
@@ -89,8 +89,8 @@ class AppRepository(val appDao: AppDao) {
|
|||||||
appDao.clearAllSeasoning()
|
appDao.clearAllSeasoning()
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun deleteEmptySeasoning() = withContext(Dispatchers.IO) {
|
suspend fun deleteSeasoningBySort(sort: Int) = withContext(Dispatchers.IO) {
|
||||||
appDao.deleteEmptySeasoning()
|
appDao.deleteSeasoningBySort(sort)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>) =
|
suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>) =
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ interface AppDao {
|
|||||||
suspend fun getSeasoningById(id: Long): SeasoningEntity?
|
suspend fun getSeasoningById(id: Long): SeasoningEntity?
|
||||||
|
|
||||||
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
|
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
|
||||||
suspend fun getSeasoningBySort(sort: Int): SeasoningEntity?
|
suspend fun getSeasoningBySort(sort: Int): MutableList<SeasoningEntity>?
|
||||||
|
|
||||||
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId = :goodsId")
|
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId = :goodsId")
|
||||||
suspend fun getSeasoningByGoodsId(goodsId: Int): SeasoningEntity?
|
suspend fun getSeasoningByGoodsId(goodsId: Int): SeasoningEntity?
|
||||||
@@ -71,8 +71,8 @@ interface AppDao {
|
|||||||
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsName LIKE '%' || :query || '%'")
|
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsName LIKE '%' || :query || '%'")
|
||||||
suspend fun search(query: String): MutableList<SeasoningEntity>
|
suspend fun search(query: String): MutableList<SeasoningEntity>
|
||||||
|
|
||||||
@Query("DELETE FROM dm_seasoning WHERE isDel = 0 AND goodsId = -1 AND goodsName = ''")
|
@Query("DELETE FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
|
||||||
suspend fun deleteEmptySeasoning(): Int
|
suspend fun deleteSeasoningBySort(sort:Int): Int
|
||||||
|
|
||||||
@Query("DELETE FROM dm_seasoning WHERE isDel = 0")
|
@Query("DELETE FROM dm_seasoning WHERE isDel = 0")
|
||||||
suspend fun clearAllSeasoning(): Int
|
suspend fun clearAllSeasoning(): Int
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ object UrlConfig {
|
|||||||
// const val DISH_DETAIL = "$BASE_URL/scales/goodsUseList?foodId={foodId}&foodWeight={foodWeight}"
|
// const val DISH_DETAIL = "$BASE_URL/scales/goodsUseList?foodId={foodId}&foodWeight={foodWeight}"
|
||||||
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
||||||
|
|
||||||
// const val BASE_URL = "http://192.168.1.207:9102"
|
const val BASE_URL = "http://192.168.1.207:9102"
|
||||||
const val BASE_URL = "https://yyjk.shuziweidao.com/gateway"
|
// const val BASE_URL = "https://yyjk.shuziweidao.com/gateway"
|
||||||
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
||||||
|
|
||||||
const val DISH_DETAIL = "$BASE_URL/food/stFoodInfoMatching/queryById"
|
const val DISH_DETAIL = "$BASE_URL/food/stFoodInfoMatching/queryById"
|
||||||
|
|||||||
@@ -0,0 +1,318 @@
|
|||||||
|
package com.shuwei.dish.match.ui
|
||||||
|
|
||||||
|
import android.graphics.Typeface
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.text.SpannableStringBuilder
|
||||||
|
import android.text.style.AbsoluteSizeSpan
|
||||||
|
import android.text.style.ForegroundColorSpan
|
||||||
|
import android.text.style.LineHeightSpan
|
||||||
|
import android.text.style.StyleSpan
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.core.graphics.toColorInt
|
||||||
|
import androidx.core.view.forEach
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
|
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||||
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
|
import com.shuwei.dish.match.dialog.CommonDialog
|
||||||
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
|
import com.shuwei.dish.match.entity.ResetReasoningRecord
|
||||||
|
import com.shuwei.dish.match.utils.DataUtil
|
||||||
|
import com.shuwei.dish.match.utils.JsonAssetsLoader
|
||||||
|
import com.shuwei.dish.match.utils.MultiClickDetector
|
||||||
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
|
import com.shuwei.dish.match.utils.ext.appendText
|
||||||
|
import com.shuwei.dish.match.utils.ext.buildSpannableString
|
||||||
|
import com.shuwei.dish.match.utils.ext.dp
|
||||||
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
|
import com.shuwei.dish.match.R
|
||||||
|
import com.shuwei.dish.match.adapter.TextCellAdapter
|
||||||
|
import com.shuwei.dish.match.databinding.ActivityDeviceConfigBinding
|
||||||
|
import com.shuwei.dish.match.dialog.BottomDialog2
|
||||||
|
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
||||||
|
|
||||||
|
class DeviceConfigActivity : BaseActivity() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
const val TAG = "DeviceSettingActivity"
|
||||||
|
|
||||||
|
const val COOK_MODE = "cookMode"
|
||||||
|
|
||||||
|
val modeList = listOf<ModeBean>(
|
||||||
|
ModeBean("制作模式", "菜品快速制作,记录熟重"),
|
||||||
|
ModeBean("采样模式", "菜品快速制作,记录熟重"),
|
||||||
|
ModeBean("品控模式", "菜品快速制作,记录熟重")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
data class ModeBean(
|
||||||
|
var modeName: String,
|
||||||
|
var modeDesc: String
|
||||||
|
)
|
||||||
|
|
||||||
|
private lateinit var binding: ActivityDeviceConfigBinding
|
||||||
|
|
||||||
|
private lateinit var appViewModel: AppViewModel
|
||||||
|
|
||||||
|
private var cookMode: Int = 0
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
binding = ActivityDeviceConfigBinding.inflate(layoutInflater)
|
||||||
|
setContentView(binding.root)
|
||||||
|
cookMode = intent.getIntExtra(COOK_MODE, 0)
|
||||||
|
initViewModel()
|
||||||
|
setHeaderBackground()
|
||||||
|
setTitleBar(titleBarAction = {
|
||||||
|
it.visible()
|
||||||
|
}, titleAction = {
|
||||||
|
it.text = "设备配置"
|
||||||
|
}, rightIconActon = {
|
||||||
|
it.visible()
|
||||||
|
it.alpha = 0.0F
|
||||||
|
it.setImageResource(R.drawable.ic_setting)
|
||||||
|
it.setOnClickListener {
|
||||||
|
detector.setOnDelayedMultiClickListener(it) {
|
||||||
|
defaultDataSettingDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
loadQualitySpan(isEnable = false)
|
||||||
|
when (cookMode) {
|
||||||
|
1 -> {
|
||||||
|
binding.rbModeCook.isChecked = true
|
||||||
|
binding.rbModeSampling.isChecked = false
|
||||||
|
loadCookSpan(isClicked = true)
|
||||||
|
loadSamplingSpan()
|
||||||
|
}
|
||||||
|
|
||||||
|
2 -> {
|
||||||
|
binding.rbModeCook.isChecked = false
|
||||||
|
binding.rbModeSampling.isChecked = true
|
||||||
|
loadCookSpan()
|
||||||
|
loadSamplingSpan(isClicked = true)
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
binding.rbModeCook.isChecked = true
|
||||||
|
binding.rbModeSampling.isChecked = false
|
||||||
|
loadCookSpan(isClicked = true)
|
||||||
|
loadSamplingSpan()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.rbModeCook.setOnClickListener {
|
||||||
|
binding.rbModeCook.isChecked = true
|
||||||
|
binding.rbModeSampling.isChecked = false
|
||||||
|
loadCookSpan(isClicked = true)
|
||||||
|
loadSamplingSpan()
|
||||||
|
startActivity<SelectDishActivity> { }
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
binding.rbModeSampling.setOnClickListener {
|
||||||
|
binding.rbModeCook.isChecked = false
|
||||||
|
binding.rbModeSampling.isChecked = true
|
||||||
|
loadCookSpan()
|
||||||
|
loadSamplingSpan(isClicked = true)
|
||||||
|
startActivity<SamplingListActivity> { }
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
addGridItemListener()
|
||||||
|
loadSeasoning()
|
||||||
|
}
|
||||||
|
|
||||||
|
private var seasoningItems = mutableListOf<SeasoningEntity>()
|
||||||
|
private fun addGridItemListener() {
|
||||||
|
binding.include.root.forEach { child->
|
||||||
|
(child as TextView).run {
|
||||||
|
clickWithDebounce {
|
||||||
|
val sort = tag.toString().toInt()
|
||||||
|
val entity = seasoningItems.firstOrNull { it.sort == sort } ?: SeasoningEntity()
|
||||||
|
clickGridItem(sort, entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val detector = MultiClickDetector(targetCount = 10, intervalMs = 800)
|
||||||
|
|
||||||
|
private fun defaultDataSettingDialog() {
|
||||||
|
val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater)
|
||||||
|
remindBinding.tvDialogTitle.text = "温馨提示"
|
||||||
|
remindBinding.tvDialogContent.text =
|
||||||
|
"您好,使用默认配置作为您的调料数据,则已有配置将被清除,确认吗?"
|
||||||
|
CommonDialog(this).apply {
|
||||||
|
messageView = remindBinding.root
|
||||||
|
leftText = "取消"
|
||||||
|
rightText = "确认"
|
||||||
|
onLeftClick = { dismiss() }
|
||||||
|
onRightClick = {
|
||||||
|
dismiss()
|
||||||
|
resetList()
|
||||||
|
}
|
||||||
|
onDismiss = { hideStatusBar() }
|
||||||
|
}.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun resetList() {
|
||||||
|
runCatching {
|
||||||
|
val record = JsonAssetsLoader.parseJsonFromAssets<ResetReasoningRecord>(
|
||||||
|
this,
|
||||||
|
"default_seasoning_list.json"
|
||||||
|
)
|
||||||
|
val addressArray = DataUtil.getWeighAddressArray()
|
||||||
|
val weightArray = WeightUtil.weightArray
|
||||||
|
appViewModel.clearAllSeasoning {
|
||||||
|
record?.list?.forEach { entity ->
|
||||||
|
entity.useWeight = weightArray[addressArray[entity.sort]].toDouble()
|
||||||
|
appViewModel.saveSeasoning(entity) {}
|
||||||
|
}
|
||||||
|
loadSeasoning()
|
||||||
|
}
|
||||||
|
}.onFailure { it.printStackTrace() }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initViewModel() {
|
||||||
|
val db = BaseApp.instance!!.database
|
||||||
|
val factory =
|
||||||
|
AppFactory(AppRepository(db.appDao()))
|
||||||
|
appViewModel =
|
||||||
|
ViewModelProvider(this, factory)[AppViewModel::class.java]
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadSeasoning() {
|
||||||
|
appViewModel.loadSeasoning {
|
||||||
|
seasoningItems.clear()
|
||||||
|
seasoningItems.addAll(it)
|
||||||
|
initConfigData()
|
||||||
|
setGridData(seasoningItems)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initConfigData() {
|
||||||
|
repeat(12) {num->
|
||||||
|
val firstOne = seasoningItems.firstOrNull {it.sort == num}
|
||||||
|
if (firstOne == null) {
|
||||||
|
seasoningItems.add(SeasoningEntity().also { it.sort = num })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setGridData(list: MutableList<SeasoningEntity>) {
|
||||||
|
val gridLayout = binding.include.root
|
||||||
|
list.forEach { entity ->
|
||||||
|
val tag = entity.sort.toString()
|
||||||
|
val child = gridLayout.findViewWithTag<TextView>(tag)
|
||||||
|
TextCellAdapter.loadCell(child, entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun clickGridItem(sort: Int, entity: SeasoningEntity) {
|
||||||
|
val currentAddress = DataUtil.getWeighAddressArray().get(sort)
|
||||||
|
// val seasoningEntity = list.first{it.sort == sort}
|
||||||
|
BottomDialog2(
|
||||||
|
weighIndex = sort,
|
||||||
|
weighAddress = currentAddress,
|
||||||
|
clickName = entity.goodsName
|
||||||
|
).show(this) { item ->
|
||||||
|
syncItem(entity, item)
|
||||||
|
//3-调料
|
||||||
|
entity.materialType = 3
|
||||||
|
entity.sort = sort
|
||||||
|
saveSeasoning(entity) {
|
||||||
|
val child = binding.include.root.findViewWithTag<TextView>(sort.toString())
|
||||||
|
TextCellAdapter.loadCell(child, entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun syncItem(oldItem: SeasoningEntity, newItem: SeasoningEntity) {
|
||||||
|
oldItem.run {
|
||||||
|
goodsId = newItem.goodsId
|
||||||
|
goodsName = newItem.goodsName
|
||||||
|
goodsOrRelationCode = newItem.goodsOrRelationCode
|
||||||
|
relateionType = newItem.relateionType
|
||||||
|
materialType = newItem.materialType
|
||||||
|
allEdible = newItem.allEdible
|
||||||
|
useWeight = newItem.useWeight
|
||||||
|
popularName = newItem.popularName
|
||||||
|
canteenId = newItem.canteenId
|
||||||
|
relateionType_dictText = newItem.relateionType_dictText
|
||||||
|
|
||||||
|
foodId = newItem.foodId
|
||||||
|
sort = newItem.sort
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadQualitySpan(isClicked: Boolean = false, isEnable: Boolean = true) {
|
||||||
|
binding.rbModeQuality.text =
|
||||||
|
getModeTextSpan(
|
||||||
|
topText = modeList[2].modeName,
|
||||||
|
bottomText = modeList[2].modeDesc,
|
||||||
|
topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4",
|
||||||
|
bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadSamplingSpan(isClicked: Boolean = false, isEnable: Boolean = true) {
|
||||||
|
binding.rbModeSampling.text =
|
||||||
|
getModeTextSpan(
|
||||||
|
topText = modeList[1].modeName,
|
||||||
|
bottomText = modeList[1].modeDesc,
|
||||||
|
topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4",
|
||||||
|
bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadCookSpan(isClicked: Boolean = false, isEnable: Boolean = true) {
|
||||||
|
binding.rbModeCook.text =
|
||||||
|
getModeTextSpan(
|
||||||
|
topText = modeList[0].modeName,
|
||||||
|
bottomText = modeList[0].modeDesc,
|
||||||
|
topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4",
|
||||||
|
bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getModeTextSpan(
|
||||||
|
topText: String,
|
||||||
|
topColor: String,
|
||||||
|
bottomText: String,
|
||||||
|
bottomColor: String
|
||||||
|
): SpannableStringBuilder {
|
||||||
|
|
||||||
|
|
||||||
|
return buildSpannableString {
|
||||||
|
appendText(
|
||||||
|
topText,
|
||||||
|
ForegroundColorSpan(topColor.toColorInt()),
|
||||||
|
StyleSpan(Typeface.BOLD),
|
||||||
|
AbsoluteSizeSpan(36, true),
|
||||||
|
LineHeightSpan { text, start, end, spanstartv, v, fm ->
|
||||||
|
fm.descent += 10.dp // 增加行间距
|
||||||
|
}
|
||||||
|
)
|
||||||
|
append("\n")
|
||||||
|
appendText(
|
||||||
|
bottomText,
|
||||||
|
ForegroundColorSpan(bottomColor.toColorInt()),
|
||||||
|
AbsoluteSizeSpan(26, true)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saveSeasoning(entity: SeasoningEntity, action: () -> Unit = {}) {
|
||||||
|
appViewModel.saveSeasoning(entity) {
|
||||||
|
action()
|
||||||
|
toast("保存成功")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -236,7 +236,8 @@ class DishSamplingActivity : BaseActivity() {
|
|||||||
food.foodName = showFoodName
|
food.foodName = showFoodName
|
||||||
food.cookMode = 1
|
food.cookMode = 1
|
||||||
Log.d(TAG, "goToSubmit: goodsList:${list.toJsonString()}")
|
Log.d(TAG, "goToSubmit: goodsList:${list.toJsonString()}")
|
||||||
startActivity<SubmitDishActivity> {
|
// startActivity<SubmitDishActivity> {
|
||||||
|
startActivity<SubmitFoodActivity> {
|
||||||
putExtra(SubmitDishActivity.GOODS_LIST, list as java.io.Serializable)
|
putExtra(SubmitDishActivity.GOODS_LIST, list as java.io.Serializable)
|
||||||
putExtra(SubmitDishActivity.FOOD_ITEM, food as Serializable)
|
putExtra(SubmitDishActivity.FOOD_ITEM, food as Serializable)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,10 @@ class HomeActivity : BaseActivity() {
|
|||||||
// startActivity<SamplingListActivity>()
|
// startActivity<SamplingListActivity>()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// appViewModel.deleteEmptySeasoning()
|
// appViewModel.deleteSeasoningBySort(12)
|
||||||
|
// appViewModel.deleteSeasoningBySort(11)
|
||||||
|
// appViewModel.deleteSeasoningBySort(13)
|
||||||
|
// appViewModel.deleteSeasoningBySort(14)
|
||||||
// appViewModel.deleteCookFoodAndGoods(0,"") {}
|
// appViewModel.deleteCookFoodAndGoods(0,"") {}
|
||||||
// appViewModel.getCookFoodGoodsList("") {goodsList->
|
// appViewModel.getCookFoodGoodsList("") {goodsList->
|
||||||
// goodsList.forEach {
|
// goodsList.forEach {
|
||||||
@@ -68,8 +71,12 @@ class HomeActivity : BaseActivity() {
|
|||||||
// appViewModel.updateGoods(it)
|
// appViewModel.updateGoods(it)
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// appViewModel.clearAllSeasoning()
|
// appViewModel.clearAllSeasoning(){}
|
||||||
|
|
||||||
|
|
||||||
|
binding.btnDeviceConfig.setOnClickListener {
|
||||||
|
startActivity<SubmitFoodActivity>{}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initRecyclerView() {
|
private fun initRecyclerView() {
|
||||||
|
|||||||
@@ -148,7 +148,8 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
Log.d(TAG, "goToSubmit: goodsList:${goodsList?.toJsonString()}")
|
Log.d(TAG, "goToSubmit: goodsList:${goodsList?.toJsonString()}")
|
||||||
startActivity<SubmitDishActivity> {
|
// startActivity<SubmitDishActivity> {
|
||||||
|
startActivity<SubmitFoodActivity> {
|
||||||
putExtra(SubmitDishActivity.GOODS_LIST, goodsList as Serializable)
|
putExtra(SubmitDishActivity.GOODS_LIST, goodsList as Serializable)
|
||||||
putExtra(SubmitDishActivity.FOOD_ITEM, food as Serializable)
|
putExtra(SubmitDishActivity.FOOD_ITEM, food as Serializable)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,8 +64,11 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
it.visible()
|
it.visible()
|
||||||
it.setImageResource(R.drawable.ic_setting)
|
it.setImageResource(R.drawable.ic_setting)
|
||||||
it.setOnClickListener {
|
it.setOnClickListener {
|
||||||
startActivity<DeviceSettingActivity> {
|
// startActivity<DeviceSettingActivity> {
|
||||||
putExtra(DeviceSettingActivity.COOK_MODE, 2)
|
// putExtra(DeviceSettingActivity.COOK_MODE, 2)
|
||||||
|
// }
|
||||||
|
startActivity<DeviceConfigActivity> {
|
||||||
|
putExtra(DeviceConfigActivity.COOK_MODE, 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, backAction = {
|
}, backAction = {
|
||||||
@@ -116,7 +119,8 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
val item = list[position]
|
val item = list[position]
|
||||||
if (item.isCooking) {
|
if (item.isCooking) {
|
||||||
//烹饪中,跳到称熟重页面
|
//烹饪中,跳到称熟重页面
|
||||||
context.startActivity<SubmitDishActivity> {
|
// context.startActivity<SubmitDishActivity> {
|
||||||
|
context.startActivity<SubmitFoodActivity> {
|
||||||
putExtra(
|
putExtra(
|
||||||
SubmitDishActivity.FOOD_ITEM,
|
SubmitDishActivity.FOOD_ITEM,
|
||||||
item as Serializable
|
item as Serializable
|
||||||
|
|||||||
@@ -54,8 +54,11 @@ class SelectDishActivity : BaseActivity() {
|
|||||||
it.visible()
|
it.visible()
|
||||||
it.setImageResource(R.drawable.ic_setting)
|
it.setImageResource(R.drawable.ic_setting)
|
||||||
it.setOnClickListener {
|
it.setOnClickListener {
|
||||||
startActivity<DeviceSettingActivity> {
|
// startActivity<DeviceSettingActivity> {
|
||||||
putExtra(DeviceSettingActivity.COOK_MODE, 1)
|
// putExtra(DeviceSettingActivity.COOK_MODE, 1)
|
||||||
|
// }
|
||||||
|
startActivity<DeviceConfigActivity> {
|
||||||
|
putExtra(DeviceConfigActivity.COOK_MODE, 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, backAction = {
|
}, backAction = {
|
||||||
|
|||||||
@@ -0,0 +1,440 @@
|
|||||||
|
package com.shuwei.dish.match.ui
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.util.SparseArray
|
||||||
|
import android.util.SparseIntArray
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.core.util.forEach
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import com.aithings.Weigher
|
||||||
|
import com.google.gson.reflect.TypeToken
|
||||||
|
import com.shuwei.dish.match.R
|
||||||
|
import com.shuwei.dish.match.adapter.SeasoningCellTool
|
||||||
|
import com.shuwei.dish.match.adapter.TextCellAdapter
|
||||||
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
|
import com.shuwei.dish.match.databinding.ActivitySubmitDishBinding
|
||||||
|
import com.shuwei.dish.match.databinding.ActivitySubmitFoodBinding
|
||||||
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
|
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
|
import com.shuwei.dish.match.http.HttpUtil
|
||||||
|
import com.shuwei.dish.match.http.UrlConfig
|
||||||
|
import com.shuwei.dish.match.utils.DataUtil
|
||||||
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
|
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
||||||
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
|
import com.shuwei.dish.match.utils.ext.toJsonString
|
||||||
|
import com.shuwei.dish.match.utils.ext.toType
|
||||||
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
|
|
||||||
|
@SuppressLint("UseSparseArrays")
|
||||||
|
class SubmitFoodActivity : BaseActivity() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG = "SubmitDishActivity"
|
||||||
|
const val FOOD_ITEM = "foodItem"
|
||||||
|
const val GOODS_LIST = "goodsList"
|
||||||
|
}
|
||||||
|
|
||||||
|
private lateinit var binding: ActivitySubmitFoodBinding
|
||||||
|
|
||||||
|
private var food: FoodRecord? = null
|
||||||
|
private var goodsList: MutableList<CookFoodGoodsEntity>? = null
|
||||||
|
|
||||||
|
private var isCooking = false
|
||||||
|
|
||||||
|
private val cookFoodEntity by lazy {
|
||||||
|
CookFoodEntity().apply {
|
||||||
|
food?.let {
|
||||||
|
foodId = it.foodId ?: ""
|
||||||
|
foodName = it.foodName
|
||||||
|
cookMode = it.cookMode
|
||||||
|
dinnerType = it.dinnerType
|
||||||
|
}
|
||||||
|
canteenId = BaseApp.canteenId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("unchecked_cast", "DEPRECATION")
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
binding = ActivitySubmitFoodBinding.inflate(layoutInflater)
|
||||||
|
setContentView(binding.root)
|
||||||
|
initViewModel()
|
||||||
|
setHeaderBackground()
|
||||||
|
intent.extras?.apply {
|
||||||
|
food = getSerializable(FOOD_ITEM) as FoodRecord?
|
||||||
|
Log.d(TAG, "onCreate: cookMode=${food?.cookMode}")
|
||||||
|
isCooking = food?.isCooking ?: false
|
||||||
|
if (isCooking) {
|
||||||
|
//烹饪中,从本地查询数据
|
||||||
|
loadSeasoningFromLocal()
|
||||||
|
} else {
|
||||||
|
//非烹饪中,从菜品主辅材配置页面带入数据
|
||||||
|
goodsList = getSerializable(GOODS_LIST) as MutableList<CookFoodGoodsEntity>?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setTitleBar(titleBarAction = {
|
||||||
|
it.visible()
|
||||||
|
}, titleAction = {
|
||||||
|
it.text = food?.foodName
|
||||||
|
}, rightIconActon = {
|
||||||
|
it.gone()
|
||||||
|
it.setImageResource(R.drawable.ic_setting)
|
||||||
|
it.setOnClickListener {
|
||||||
|
//startActivity<DeviceSettingActivity>()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
addViewListener()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadSeasoningFromLocal() {
|
||||||
|
appViewModel.getCookFoodGoodsList(foodId = food!!.foodId!!, cookMode = food!!.cookMode) { it ->
|
||||||
|
goodsList = mutableListOf()
|
||||||
|
//设置主辅材数据
|
||||||
|
goodsList?.addAll(it.filter { goods -> goods.materialType != 3 })
|
||||||
|
|
||||||
|
//获取调料数据并展示
|
||||||
|
val filterList: List<SeasoningEntity>? = it.filter { goods -> goods.materialType == 3 }
|
||||||
|
.map { entity ->
|
||||||
|
SeasoningEntity().also { se ->
|
||||||
|
se.goodsId = entity.goodsId
|
||||||
|
se.goodsName = entity.goodsName
|
||||||
|
se.goodsOrRelationCode = entity.goodsOrRelationCode
|
||||||
|
se.relateionType = entity.relateionType
|
||||||
|
se.materialType = entity.materialType
|
||||||
|
se.allEdible = entity.allEdible
|
||||||
|
se.useWeight = entity.useWeight
|
||||||
|
se.popularName = entity.popularName
|
||||||
|
se.canteenId = entity.canteenId
|
||||||
|
se.relateionType_dictText = entity.relateionType_dictText
|
||||||
|
se.foodId = entity.foodId
|
||||||
|
se.sort = entity.sort
|
||||||
|
se.pageType = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
filterList?.toMutableList()?.let { cellData ->
|
||||||
|
loadTextCell(cellData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private lateinit var seasoningList: List<SeasoningEntity>
|
||||||
|
// private var isFirstSave = true
|
||||||
|
// fun updateSeasoningList(list: MutableList<SeasoningEntity>) {
|
||||||
|
// if (isFirstSave) {
|
||||||
|
// val json = list.toJsonString()
|
||||||
|
// val typeToken = object : TypeToken<List<SeasoningEntity>>() {}
|
||||||
|
// seasoningList = json.toType(typeToken = typeToken)
|
||||||
|
// isFirstSave = false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
private val seasoningArray by lazy {
|
||||||
|
SparseArray<Double>()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private val firstGoodsArray by lazy {
|
||||||
|
SparseArray<Int>()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addViewListener() {
|
||||||
|
addWeightListener()
|
||||||
|
binding.btnWeightClear.setOnClickListener { Weigher.tareTwo(1) }
|
||||||
|
|
||||||
|
binding.btnCook.clickWithDebounce {
|
||||||
|
cook()
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.btnSubmit.clickWithDebounce {
|
||||||
|
if (cookFoodEntity.foodWeight <= 0.toDouble()) {
|
||||||
|
toast("未识别到菜品熟重")
|
||||||
|
return@clickWithDebounce
|
||||||
|
}
|
||||||
|
submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addWeightListener() {
|
||||||
|
WeightUtil.addWeightListener(getWeight = { address, state, weight ->
|
||||||
|
if (address == 1) {
|
||||||
|
cookFoodEntity.foodWeight = weight.toDouble()
|
||||||
|
binding.tvTotalWeight.text = "${weight / 1000f}"
|
||||||
|
}
|
||||||
|
val firstWeight = firstGoodsArray.get(address, null)
|
||||||
|
if (firstWeight == null) {
|
||||||
|
//未设置数据
|
||||||
|
firstGoodsArray.put(address, weight)
|
||||||
|
return@addWeightListener
|
||||||
|
}
|
||||||
|
var realUseWeight = firstWeight - weight
|
||||||
|
realUseWeight = if (realUseWeight > 0) realUseWeight else 0
|
||||||
|
seasoningArray.put(address, realUseWeight.toDouble())
|
||||||
|
|
||||||
|
refreshSeasoningWeight()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
private fun refreshSeasoningWeight() {
|
||||||
|
if (seasoningItems.isEmpty()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
seasoningItems.let { items ->
|
||||||
|
weightRelateArray.forEach { key, value ->
|
||||||
|
items[key].useWeight =
|
||||||
|
(seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setGridData(seasoningItems)
|
||||||
|
// binding.rvSeasoning.adapter?.let { adapter ->
|
||||||
|
// if (adapter is TextCellAdapter) {
|
||||||
|
// adapter.list.let { items ->
|
||||||
|
// weightRelateArray.forEach { key, value ->
|
||||||
|
// items[key].useWeight =
|
||||||
|
// (seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// adapter.notifyDataSetChanged()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getCookingSeasoning(address: Int): Double {
|
||||||
|
if (isCooking.not()) return 0.toDouble()
|
||||||
|
if (seasoningItems.isEmpty()) return 0.toDouble()
|
||||||
|
val weight = seasoningItems[weightRelateArray2.get(address)].useWeight ?: 0.toDouble()
|
||||||
|
//Log.i(TAG, "getCookingSeasoning: weight[${address}]=$weight,seasoningList=${seasoningList.toJsonString()}")
|
||||||
|
return weight
|
||||||
|
}
|
||||||
|
|
||||||
|
private val weightRelateArray2 by lazy {
|
||||||
|
SparseIntArray().apply {
|
||||||
|
weightRelateArray.forEach { key, value ->
|
||||||
|
put(value, key)
|
||||||
|
// if (value == 3) {
|
||||||
|
// put(3, 14)
|
||||||
|
// } else {
|
||||||
|
// put(value, key)
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val weightRelateArray by lazy {
|
||||||
|
DataUtil.getWeighAddressArray()
|
||||||
|
}
|
||||||
|
|
||||||
|
// private fun prepareData(acton: () -> Unit) {
|
||||||
|
//
|
||||||
|
// //只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题
|
||||||
|
// val seasoningJson = realSeasoningData.toJsonString()
|
||||||
|
// val typeToken = object : TypeToken<List<CookFoodGoodsEntity>>() {}
|
||||||
|
// val tempSeasoningList = seasoningJson.toType(typeToken = typeToken)
|
||||||
|
// goodsList?.addAll(tempSeasoningList)
|
||||||
|
// acton()
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
private fun cook() {
|
||||||
|
if (food == null || goodsList.isNullOrEmpty()) {
|
||||||
|
toast("未获取到菜品或构成信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val realSeasoningData = seasoningItems
|
||||||
|
//(binding.rvSeasoning.adapter as TextCellAdapter).list
|
||||||
|
if (realSeasoningData.isEmpty() && !isCooking) {
|
||||||
|
toast("未获取到调料信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) {
|
||||||
|
toast("还未设置调料信息,请去设置页面操作")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
showLoading()
|
||||||
|
//只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题
|
||||||
|
val seasoningJson = realSeasoningData.toJsonString()
|
||||||
|
val typeToken = object : TypeToken<List<CookFoodGoodsEntity>>() {}
|
||||||
|
val tempSeasoningList = seasoningJson.toType(typeToken = typeToken)
|
||||||
|
goodsList?.addAll(tempSeasoningList)
|
||||||
|
cookFoodEntity.let {
|
||||||
|
it.dinnerType = when (it.dinnerType) {
|
||||||
|
"早餐" -> "1"
|
||||||
|
"午餐" -> "2"
|
||||||
|
"晚餐" -> "3"
|
||||||
|
else -> it.dinnerType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val isSamplingData = food!!.cookMode == 1
|
||||||
|
if (isSamplingData) {
|
||||||
|
//生成临时foodId,解决采样模式没有foodId,无法关联数据的问题
|
||||||
|
val tempFoodId = cookFoodEntity.foodId.ifBlank { "${System.currentTimeMillis()}" }
|
||||||
|
cookFoodEntity.foodId = tempFoodId
|
||||||
|
}
|
||||||
|
//全部设置同一foodId
|
||||||
|
goodsList?.forEach {
|
||||||
|
it.foodId = cookFoodEntity.foodId
|
||||||
|
}
|
||||||
|
//保存菜品-保存主辅料调料
|
||||||
|
appViewModel.saveCookFoodAndGoods(
|
||||||
|
cookMode = food!!.cookMode,
|
||||||
|
entity = cookFoodEntity,
|
||||||
|
list = goodsList,
|
||||||
|
onFinish = {
|
||||||
|
runOnUiThread {
|
||||||
|
dismissLoading()
|
||||||
|
jumpPage(isSamplingData, true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun submit() {
|
||||||
|
if (food == null || goodsList.isNullOrEmpty()) {
|
||||||
|
toast("未获取到菜品或构成信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val realSeasoningData = seasoningItems
|
||||||
|
if (realSeasoningData.isEmpty() && !isCooking) {
|
||||||
|
toast("未获取到调料信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) {
|
||||||
|
toast("还未设置调料信息,请去设置页面操作")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
showLoading()
|
||||||
|
//只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题
|
||||||
|
val seasoningJson = realSeasoningData.toJsonString()
|
||||||
|
val typeToken = object : TypeToken<List<CookFoodGoodsEntity>>() {}
|
||||||
|
val tempSeasoningList = seasoningJson.toType(typeToken = typeToken)
|
||||||
|
tempSeasoningList.forEach { entity ->
|
||||||
|
val realWeight = entity.useWeight ?: 0.toDouble()
|
||||||
|
val filterData = goodsList?.firstOrNull { it.goodsId == entity.goodsId }
|
||||||
|
//确保重量大于0,且无重复数据
|
||||||
|
if (realWeight > 0.toDouble() && filterData == null) {
|
||||||
|
goodsList?.add(entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cookFoodEntity.let {
|
||||||
|
it.stFoodInfoConstituteList = this@SubmitFoodActivity.goodsList
|
||||||
|
it.dinnerType = when(it.dinnerType) {
|
||||||
|
"1" -> "早餐"
|
||||||
|
"2" -> "午餐"
|
||||||
|
"3" -> "晚餐"
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val isSamplingData = food!!.cookMode == 1
|
||||||
|
if (isSamplingData) {
|
||||||
|
//采样模式没有foodId
|
||||||
|
cookFoodEntity.foodId = ""
|
||||||
|
goodsList?.forEach { it.foodId = "" }
|
||||||
|
}
|
||||||
|
val json = cookFoodEntity.toJsonString()
|
||||||
|
Log.d(TAG, "submit: json=$json")
|
||||||
|
HttpUtil.postJson(
|
||||||
|
url = UrlConfig.SUBMIT_DISH,
|
||||||
|
json = json,
|
||||||
|
doSuccess = {
|
||||||
|
Log.d(TAG, "submit: postJson=$it")
|
||||||
|
submitSuccess(isSamplingData)
|
||||||
|
}, doFailure = { code, msg ->
|
||||||
|
Log.d(TAG, "submit: postJson:code=$code,msg=$msg")
|
||||||
|
toast(msg)
|
||||||
|
dismissLoading()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun submitSuccess(isSamplingData: Boolean) {
|
||||||
|
if (food?.foodId.isNullOrBlank()) {
|
||||||
|
//本地无删除数据直接跳转页面
|
||||||
|
dismissLoading()
|
||||||
|
jumpPage(isSamplingData, false)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//删除本地数据
|
||||||
|
appViewModel.deleteCookFoodAndGoods(
|
||||||
|
cookMode = food!!.cookMode,
|
||||||
|
foodId = food!!.foodId!!
|
||||||
|
) {
|
||||||
|
dismissLoading()
|
||||||
|
jumpPage(isSamplingData, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun jumpPage(isSampling: Boolean, isCooking: Boolean) {
|
||||||
|
if (isSampling) {
|
||||||
|
startActivity<SamplingListActivity> {
|
||||||
|
putExtra(SelectDishActivity.IS_COOKING, isCooking)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
startActivity<SelectDishActivity> {
|
||||||
|
putExtra(SelectDishActivity.IS_COOKING, isCooking)
|
||||||
|
putExtra(SelectDishActivity.DINNER_TYPE, food?.dinnerType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private lateinit var appViewModel: AppViewModel
|
||||||
|
|
||||||
|
private fun initViewModel() {
|
||||||
|
val db = BaseApp.instance!!.database
|
||||||
|
val factory =
|
||||||
|
AppFactory(AppRepository(db.appDao()))
|
||||||
|
appViewModel =
|
||||||
|
ViewModelProvider(this, factory)[AppViewModel::class.java]
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
if (isCooking.not()) {
|
||||||
|
//烹饪中使用本地数据,未烹饪则使用默认的调料配置数据
|
||||||
|
appViewModel.loadSeasoning {
|
||||||
|
Log.d(TAG, "onResume: loadSeasoning:${it.toJsonString()}")
|
||||||
|
loadTextCell(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private var seasoningItems = mutableListOf<SeasoningEntity>()
|
||||||
|
private fun loadTextCell(list: MutableList<SeasoningEntity>) {
|
||||||
|
seasoningItems.clear()
|
||||||
|
seasoningItems.addAll(list)
|
||||||
|
initConfigData()
|
||||||
|
setGridData(list)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initConfigData() {
|
||||||
|
repeat(12) {num->
|
||||||
|
val firstOne = seasoningItems.firstOrNull {it.sort == num}
|
||||||
|
if (firstOne == null) {
|
||||||
|
seasoningItems.add(SeasoningEntity().also { it.sort = num })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setGridData(list: MutableList<SeasoningEntity>) {
|
||||||
|
val gridLayout = binding.include.root
|
||||||
|
list.forEach { entity ->
|
||||||
|
val tag = entity.sort.toString()
|
||||||
|
val child = gridLayout.findViewWithTag<TextView>(tag)
|
||||||
|
TextCellAdapter.loadCell(child, entity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -21,6 +21,7 @@ import com.shuwei.dish.match.http.UrlConfig
|
|||||||
import com.shuwei.dish.match.ui.PrepareCookActivity
|
import com.shuwei.dish.match.ui.PrepareCookActivity
|
||||||
import com.shuwei.dish.match.ui.SelectDishActivity
|
import com.shuwei.dish.match.ui.SelectDishActivity
|
||||||
import com.shuwei.dish.match.ui.SubmitDishActivity
|
import com.shuwei.dish.match.ui.SubmitDishActivity
|
||||||
|
import com.shuwei.dish.match.ui.SubmitFoodActivity
|
||||||
import com.shuwei.dish.match.utils.SwipeCallback
|
import com.shuwei.dish.match.utils.SwipeCallback
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
import com.shuwei.dish.match.utils.ext.toJsonString
|
||||||
@@ -59,7 +60,8 @@ class DishListFragment : Fragment() {
|
|||||||
val item = list[position]
|
val item = list[position]
|
||||||
if (item.isCooking) {
|
if (item.isCooking) {
|
||||||
//烹饪中,跳到称熟重页面
|
//烹饪中,跳到称熟重页面
|
||||||
context.startActivity<SubmitDishActivity> {
|
// context.startActivity<SubmitDishActivity> {
|
||||||
|
context.startActivity<SubmitFoodActivity> {
|
||||||
putExtra(
|
putExtra(
|
||||||
SubmitDishActivity.FOOD_ITEM,
|
SubmitDishActivity.FOOD_ITEM,
|
||||||
item as Serializable
|
item as Serializable
|
||||||
|
|||||||
@@ -16,13 +16,30 @@ object DataUtil {
|
|||||||
put(7, 7)
|
put(7, 7)
|
||||||
put(8, 8)
|
put(8, 8)
|
||||||
put(9, 5)
|
put(9, 5)
|
||||||
put(12, 4)
|
|
||||||
put(10, 3)
|
put(10, 3)
|
||||||
put(11, 3)
|
put(11, 4)
|
||||||
put(13, 3)
|
|
||||||
put(14, 3)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fun getWeighAddressArray(): SparseIntArray {
|
||||||
|
// return SparseIntArray().apply {
|
||||||
|
// put(0, 12)
|
||||||
|
// put(1, 13)
|
||||||
|
// put(2, 14)
|
||||||
|
// put(3, 9)
|
||||||
|
// put(4, 10)
|
||||||
|
// put(5, 11)
|
||||||
|
// put(6, 6)
|
||||||
|
// put(7, 7)
|
||||||
|
// put(8, 8)
|
||||||
|
// put(9, 5)
|
||||||
|
// put(12, 4)
|
||||||
|
// put(10, 3)
|
||||||
|
// put(11, 3)
|
||||||
|
// put(13, 3)
|
||||||
|
// put(14, 3)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -161,9 +161,9 @@ class AppViewModel(private val rep: AppRepository) : ViewModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteEmptySeasoning() {
|
fun deleteSeasoningBySort(sort: Int) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
rep.deleteEmptySeasoning()
|
rep.deleteSeasoningBySort(sort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,23 +174,30 @@ class AppViewModel(private val rep: AppRepository) : ViewModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateAll(list: MutableList<SeasoningEntity>) {
|
// fun updateAll(list: MutableList<SeasoningEntity>) {
|
||||||
viewModelScope.launch {
|
// viewModelScope.launch {
|
||||||
list.forEach {
|
// list.forEach {
|
||||||
rep.updateSeasoning(it)
|
// rep.updateSeasoning(it)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
fun saveSeasoning(entity: SeasoningEntity, block: () -> Unit) {
|
fun saveSeasoning(entity: SeasoningEntity, block: () -> Unit) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val seasoning = rep.getSeasoningBySort(entity.sort)
|
val list = rep.getSeasoningBySort(entity.sort)
|
||||||
if (seasoning == null) {
|
val size = list?.size?:0
|
||||||
rep.insertSeasoning(entity)
|
if (size == 1) {
|
||||||
|
rep.updateSeasoning(entity.also { it.id = list!![0].id })
|
||||||
block()
|
block()
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
rep.updateSeasoning(entity.also { it.id = seasoning.id })
|
if (size > 1) {
|
||||||
|
list?.forEach {
|
||||||
|
rep.deleteSeasoningBySort(it.sort)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entity.id = 0
|
||||||
|
rep.insertSeasoning(entity)
|
||||||
block()
|
block()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,151 @@
|
|||||||
|
<?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="@drawable/bg_other_page">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@drawable/shape_white_30_corners"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="106dp"
|
||||||
|
android:paddingStart="30dp"
|
||||||
|
android:paddingEnd="30dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:text="菜品模式设置"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvSetting"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end|center_vertical"
|
||||||
|
android:text="配置终端默认模式"
|
||||||
|
android:textColor="@color/gray_b4"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.divider.MaterialDivider
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@color/gray_eb" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/modeRadioGroup"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rbModeCook"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="190dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@color/white"
|
||||||
|
android:button="@null"
|
||||||
|
android:drawableEnd="@drawable/mode_select"
|
||||||
|
android:textSize="36sp"
|
||||||
|
tools:text="制作模式" />
|
||||||
|
|
||||||
|
<com.google.android.material.divider.MaterialDivider
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@color/gray_eb" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rbModeSampling"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="190dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@color/white"
|
||||||
|
android:button="@null"
|
||||||
|
android:drawableEnd="@drawable/mode_select"
|
||||||
|
android:textSize="36sp"
|
||||||
|
tools:text="采样模式" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.divider.MaterialDivider
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@color/gray_eb" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rbModeQuality"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="190dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:button="@null"
|
||||||
|
android:drawableEnd="@drawable/ic_dish_disable"
|
||||||
|
android:enabled="false"
|
||||||
|
android:textColor="@color/gray_b4"
|
||||||
|
android:textSize="36sp"
|
||||||
|
tools:text="品控模式" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:background="@drawable/shape_white_30_corners"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/seasoning_setting"
|
||||||
|
android:textColor="@color/black666"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginEnd="15dp"
|
||||||
|
android:text="@string/seasoning_setting2"
|
||||||
|
android:textColor="@color/gray_b4"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/include"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
layout="@layout/layout_grid"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -35,208 +35,4 @@
|
|||||||
tools:itemCount="3"
|
tools:itemCount="3"
|
||||||
tools:listitem="@layout/list_item_home_mode"/>
|
tools:listitem="@layout/list_item_home_mode"/>
|
||||||
|
|
||||||
<!-- <com.google.android.material.card.MaterialCardView-->
|
|
||||||
<!-- android:id="@+id/cardCook"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="180dp"-->
|
|
||||||
<!-- android:layout_marginStart="60dp"-->
|
|
||||||
<!-- android:layout_marginTop="60dp"-->
|
|
||||||
<!-- android:layout_marginEnd="60dp"-->
|
|
||||||
<!-- app:cardBackgroundColor="@color/white"-->
|
|
||||||
<!-- app:cardCornerRadius="30dp"-->
|
|
||||||
<!-- app:cardElevation="0dp"-->
|
|
||||||
<!-- app:rippleColor="#B0BEC5">-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:gravity="center_vertical"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="100dp"-->
|
|
||||||
<!-- android:layout_height="100dp"-->
|
|
||||||
<!-- android:layout_marginStart="40dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_mode_cook"-->
|
|
||||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
|
||||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
|
||||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginStart="40dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:gravity="start|center_vertical"-->
|
|
||||||
<!-- android:orientation="vertical">-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/mode_cook"-->
|
|
||||||
<!-- android:textColor="@color/mode_name"-->
|
|
||||||
<!-- android:textSize="36sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginTop="20dp"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/cook_mode_desc"-->
|
|
||||||
<!-- android:textColor="@color/mode_desc"-->
|
|
||||||
<!-- android:textSize="26sp" />-->
|
|
||||||
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="20dp"-->
|
|
||||||
<!-- android:layout_height="20dp"-->
|
|
||||||
<!-- android:layout_marginEnd="20dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_arrow_right"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
<!-- </com.google.android.material.card.MaterialCardView>-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.card.MaterialCardView-->
|
|
||||||
<!-- android:id="@+id/cardSampling"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_marginStart="35dp"-->
|
|
||||||
<!-- android:layout_marginTop="15dp"-->
|
|
||||||
<!-- android:layout_marginEnd="35dp"-->
|
|
||||||
<!-- app:cardBackgroundColor="@color/white"-->
|
|
||||||
<!-- app:cardCornerRadius="15dp"-->
|
|
||||||
<!-- app:cardElevation="0dp"-->
|
|
||||||
<!-- app:rippleColor="@color/ripple_color">-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:gravity="center_vertical"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="50dp"-->
|
|
||||||
<!-- android:layout_height="50dp"-->
|
|
||||||
<!-- android:layout_marginStart="20dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_mode_sampling"-->
|
|
||||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
|
||||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
|
||||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginStart="20dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:gravity="start|center_vertical"-->
|
|
||||||
<!-- android:orientation="vertical">-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/mode_sampling"-->
|
|
||||||
<!-- android:textColor="@color/mode_name"-->
|
|
||||||
<!-- android:textSize="18sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginTop="10dp"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/sampling_mode_desc"-->
|
|
||||||
<!-- android:textColor="@color/mode_desc"-->
|
|
||||||
<!-- android:textSize="13sp" />-->
|
|
||||||
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="20dp"-->
|
|
||||||
<!-- android:layout_height="20dp"-->
|
|
||||||
<!-- android:layout_marginEnd="20dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_arrow_right"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
<!-- </com.google.android.material.card.MaterialCardView>-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginTop="15dp"-->
|
|
||||||
<!-- android:text="@string/lock_remind"-->
|
|
||||||
<!-- android:textColor="@color/lock_remind"-->
|
|
||||||
<!-- android:textSize="13sp" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.card.MaterialCardView-->
|
|
||||||
<!-- android:id="@+id/cardQuality"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_marginStart="35dp"-->
|
|
||||||
<!-- android:layout_marginTop="15dp"-->
|
|
||||||
<!-- android:layout_marginEnd="35dp"-->
|
|
||||||
<!-- app:cardBackgroundColor="@color/white"-->
|
|
||||||
<!-- app:cardCornerRadius="15dp"-->
|
|
||||||
<!-- app:cardElevation="0dp"-->
|
|
||||||
<!-- app:rippleColor="@color/ripple_color">-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:gravity="center_vertical"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="50dp"-->
|
|
||||||
<!-- android:layout_height="50dp"-->
|
|
||||||
<!-- android:layout_marginStart="20dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_mode_quality"-->
|
|
||||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
|
||||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
|
||||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginStart="20dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:gravity="start|center_vertical"-->
|
|
||||||
<!-- android:orientation="vertical">-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/mode_quality"-->
|
|
||||||
<!-- android:textColor="@color/mode_name2"-->
|
|
||||||
<!-- android:textSize="18sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:layout_marginTop="10dp"-->
|
|
||||||
<!-- android:maxLines="1"-->
|
|
||||||
<!-- android:text="@string/quality_mode_desc"-->
|
|
||||||
<!-- android:textColor="@color/mode_desc2"-->
|
|
||||||
<!-- android:textSize="13sp" />-->
|
|
||||||
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:layout_width="20dp"-->
|
|
||||||
<!-- android:layout_height="20dp"-->
|
|
||||||
<!-- android:layout_marginEnd="20dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_lock"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
<!-- </com.google.android.material.card.MaterialCardView>-->
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
<?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="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:background="@drawable/bg_other_page">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@drawable/shape_white_30_corners"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvTitle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:text="@string/seasoning"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:textColor="@color/black666"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/include"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
layout="@layout/layout_grid"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@drawable/shape_white_30_corners"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="30dp"
|
||||||
|
android:paddingEnd="30dp">
|
||||||
|
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="120dp"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="熟重"
|
||||||
|
android:textColor="@color/black666"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/btnWeightClear"
|
||||||
|
android:layout_width="120dp"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:background="@drawable/shape_green_stroke"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="清零"
|
||||||
|
android:textColor="@color/dish_green"
|
||||||
|
android:textSize="28sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvTotalWeight"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:includeFontPadding="false"
|
||||||
|
android:text="0.00"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="90sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvWeightUnit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:includeFontPadding="false"
|
||||||
|
android:text="千克"
|
||||||
|
android:textColor="@color/black999"
|
||||||
|
android:textSize="32sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:layout_marginBottom="30dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/btnCook"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="90dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="制作"
|
||||||
|
android:background="@drawable/ripple_effect_light"
|
||||||
|
android:textColor="@color/dish_green"
|
||||||
|
android:textSize="32sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
<!-- android:background="@drawable/shape_green_stroke"-->
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/btnSubmit"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="90dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/ripple_effect_green"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="提交"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="32sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -0,0 +1,258 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.gridlayout.widget.GridLayout 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="725dp"
|
||||||
|
android:paddingStart="23dp"
|
||||||
|
android:paddingEnd="22dp"
|
||||||
|
android:paddingTop="30dp"
|
||||||
|
android:paddingBottom="20dp"
|
||||||
|
app:columnCount="3"
|
||||||
|
app:orientation="vertical"
|
||||||
|
app:rowCount="5">
|
||||||
|
|
||||||
|
<!-- 第1行 -->
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="0"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="0"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="0"
|
||||||
|
tools:text="0" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="1"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="1"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="0"
|
||||||
|
tools:text="1" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="2"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="2"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="0"
|
||||||
|
tools:text="2" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="3"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="0"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="1"
|
||||||
|
tools:text="3" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="4"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="1"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="1"
|
||||||
|
tools:text="4" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="5"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="2"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="1"
|
||||||
|
tools:text="5" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="6"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="0"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="2"
|
||||||
|
tools:text="6" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="7"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="1"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="2"
|
||||||
|
tools:text="7" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="8"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="2"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="2"
|
||||||
|
tools:text="8" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="9"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="0"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="3"
|
||||||
|
tools:text="9" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="120dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="11"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="0"
|
||||||
|
app:layout_columnWeight="1"
|
||||||
|
app:layout_row="4"
|
||||||
|
tools:text="11" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="255dp"
|
||||||
|
android:layout_marginStart="7dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@drawable/selector_text_cell"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:tag="10"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_column="1"
|
||||||
|
app:layout_columnSpan="2"
|
||||||
|
app:layout_gravity="fill_horizontal"
|
||||||
|
app:layout_row="3"
|
||||||
|
app:layout_rowSpan="2"
|
||||||
|
tools:text="10" />
|
||||||
|
|
||||||
|
</androidx.gridlayout.widget.GridLayout>
|
||||||
@@ -13,6 +13,8 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_margin="15dp"
|
android:layout_margin="15dp"
|
||||||
tools:text="椒盐"
|
tools:text="椒盐"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:ellipsize="end"
|
||||||
android:background="@drawable/shape_white_12_corners"/>
|
android:background="@drawable/shape_white_12_corners"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -8,6 +8,7 @@ junitVersion = "1.1.5"
|
|||||||
espressoCore = "3.5.1"
|
espressoCore = "3.5.1"
|
||||||
appcompat = "1.6.1"
|
appcompat = "1.6.1"
|
||||||
material = "1.10.0"
|
material = "1.10.0"
|
||||||
|
gridlayout = "1.1.0"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
||||||
@@ -16,6 +17,7 @@ androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "j
|
|||||||
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
||||||
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
||||||
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
|
||||||
|
androidx-gridlayout = { group = "androidx.gridlayout", name = "gridlayout", version.ref = "gridlayout" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
android-application = { id = "com.android.application", version.ref = "agp" }
|
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||||
|
|||||||
Reference in New Issue
Block a user