1、添加模拟器展示
This commit is contained in:
shenzuqiang 2026-02-28 18:39:31 +08:00
parent 32a4827eb1
commit b8365373fd
7 changed files with 101 additions and 20 deletions

View File

@ -4,10 +4,10 @@
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2026-02-28T08:59:56.877010800Z">
<DropdownSelection timestamp="2026-02-28T10:08:53.722874Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=Y5DELZR46DZTCI9D" />
<DeviceId pluginId="PhysicalDevice" identifier="serial=JRBI89BIE6AI5TG6" />
</handle>
</Target>
</DropdownSelection>

View File

@ -5,6 +5,12 @@ import kotlinx.serialization.Serializable
@Serializable
class ConfigEntity {
@SerializedName("client.version.upgrade") //版本更新
var versionEntity: VersionEntity? = null
@SerializedName("client.uni.version.upgrade") //小程序模拟器
var uniVersionEntity: List<UniVersionEntity>? = emptyList()
@SerializedName("client.popup.display") //显示开关控制
var popupConfig: PopupConfigEntity? = null
@ -14,9 +20,6 @@ class ConfigEntity {
@SerializedName("client.weixin.open.appid") //微信appid
var wxAppId: String = ""
@SerializedName("client.version.upgrade") //版本更新
var versionEntity: VersionEntity? = null
@SerializedName("client.weixin.share") //微信分享
var wxShareEntity: WxShareEntity? = null
@ -29,19 +32,4 @@ class ConfigEntity {
@SerializedName("client.login.type") //登录方式
var loginType: List<String>? = emptyList()
@SerializedName("client.ad.switch") //广告总开关
var adSwitch: Boolean = false
@SerializedName("client.service.phone") //客服电话
var servicePhoneList: List<String> = emptyList()
@SerializedName("client.chatwarning") //聊天安全提示
var chatWarning: String? = null
@SerializedName("client.travel.ad") //聊天安全提示
val travelAd: List<String> = emptyList()
// 圈子-顶部banner占位图配置
@SerializedName("client.team.ad") //聊天安全提示
val teamAd: List<String> = emptyList()
}

View File

@ -0,0 +1,17 @@
package com.img.rabbit.bean.response
import kotlinx.serialization.Serializable
@Serializable
class UniVersionEntity(
var version: String = "",
var url: String = "",
var last_version_force: String = "",
var force: Boolean = false,
var title: String = "",
var description: String = "",
var unimp_id: String = "",
var unimp_type: String = "",
var icon: String = "",
)

View File

@ -10,11 +10,13 @@ import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize
@ -31,6 +33,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
@ -43,7 +46,9 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import coil3.compose.AsyncImage
import com.img.rabbit.R
import com.img.rabbit.provider.storage.PreferenceUtil
import com.img.rabbit.route.ScreenRoute
import com.img.rabbit.viewmodel.GeneralViewModel
@ -78,6 +83,7 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
Column(
modifier = Modifier
.background(Color.White)
.fillMaxSize()
){
Image(
@ -98,6 +104,72 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
)
.verticalScroll(scrollState)
){
val uniVersionConfig = PreferenceUtil.getUserConfig()?.config?.uniVersionEntity
if(uniVersionConfig?.isNotEmpty() == true){
val uniVersionSize = uniVersionConfig.size
//模拟器
Image(
painter = painterResource(id = R.mipmap.ic_home_title_0_mock),
contentDescription = null,
contentScale = ContentScale.Crop,
modifier = Modifier
.wrapContentWidth()
.padding(start = 16.dp, end = 16.dp, top = 12.dp)
)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 16.dp, top = 12.dp)
){
Box(
modifier = Modifier
.wrapContentWidth()
.weight(1f)
.clickable(
indication = null,
interactionSource = remember { MutableInteractionSource() }
) {
// 处理点击事件
Toast.makeText(context, "微信模拟器", Toast.LENGTH_SHORT).show()
}
) {
AsyncImage(
model = uniVersionConfig[0].icon,
contentDescription = "微信模拟器图标",
contentScale = ContentScale.FillWidth,
modifier = Modifier.fillMaxWidth().aspectRatio(168/96f),
fallback = painterResource(id = R.mipmap.ic_wx_mock),
error = painterResource(id = R.mipmap.ic_wx_mock)
)
}
Box(modifier = Modifier.width(7.dp))
Box(
modifier = Modifier
.wrapContentWidth()
.weight(1f)
.clickable(
indication = null,
interactionSource = remember { MutableInteractionSource() }
) {
// 处理点击事件
Toast.makeText(context, "支付宝模拟器", Toast.LENGTH_SHORT).show()
}
) {
if(uniVersionSize>1){
AsyncImage(
model = uniVersionConfig[1].icon,
contentDescription = "支付宝模拟器",
contentScale = ContentScale.FillWidth,
modifier = Modifier.fillMaxWidth().aspectRatio(168/96f),
fallback = painterResource(id = R.mipmap.ic_alipay_mock),
error = painterResource(id = R.mipmap.ic_alipay_mock)
)
}
}
}
}
//选尺寸制作
Image(
painter = painterResource(id = R.mipmap.ic_home_title_1_size),
@ -132,6 +204,7 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
){
Image(
painter = painterResource(id = R.mipmap.ic_home_size_bg),
modifier = Modifier.fillMaxWidth().aspectRatio(166/68f),
contentDescription = null,
)
@ -181,6 +254,7 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
){
Image(
painter = painterResource(id = R.mipmap.ic_home_size_bg),
modifier = Modifier.fillMaxWidth().aspectRatio(166/68f),
contentDescription = null,
)
@ -232,6 +306,7 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
){
Image(
painter = painterResource(id = R.mipmap.ic_home_size_bg),
modifier = Modifier.fillMaxWidth().aspectRatio(166/68f),
contentDescription = null,
)
@ -281,6 +356,7 @@ fun HomeScreen(navController: NavHostController,generalViewModel: GeneralViewMod
){
Image(
painter = painterResource(id = R.mipmap.ic_home_size_bg),
modifier = Modifier.fillMaxWidth().aspectRatio(166/68f),
contentDescription = null,
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB