Jetpack Compose,потратьте много времени на рисование пользовательского интерфейса.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Jetpack Compose,потратьте много времени на рисование пользовательского интерфейса.

Сообщение Anonymous »

Ссылка на мой проект: текст
Нажмите кнопку «Тест» на левой панели навигации и потратьте много времени на рисование «TestApplyView».

Код: Выделить всё

@Composable
fun TestView(testViewModel: TestViewModel) {
val navController = rememberNavController()

Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {

Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 10.dp)
.background(Color.White)
) {
TopTabBar(text = "Apply", R.mipmap.ic_home_view_barrel, onClick = { navController.navigate("Apply") })
TopTabBar(text = "Test", R.mipmap.ic_home_view_barrel, onClick = { navController.navigate("Test") })
TopTabBar(text = "Record", R.mipmap.ic_home_view_barrel, onClick = { navController.navigate("Record") })
TopTabBar(text = "Report", R.mipmap.ic_home_view_barrel, onClick = { navController.navigate("Report") })
}

NavHost(
navController = navController,
startDestination = "Apply"
) {
composable("Apply") { TestApplyView(viewModel = testViewModel) }
composable("Test") { Text("Test") }
composable("Record") { TestRecordView(testViewModel = testViewModel) }
composable("Report") { TestReportView() }
}
}
}
нажмите «Тест», создайте «TestApplyView»

Код: Выделить всё

@Composable
fun TestApplyView(viewModel: TestViewModel) {

Column(modifier = Modifier.fillMaxSize()) {
RackSelectView(viewModel = viewModel)
Row(
modifier = Modifier
.fillMaxSize()
.padding(top = 10.dp)
) {
TubeSelectView(modifier = Modifier.weight(2f))
Spacer(modifier = Modifier.width(10.dp))
ItemSelectView(modifier = Modifier.weight(1f))
}
}
}

Код: Выделить всё

@Composable
fun TubeSelectView(modifier: Modifier) {

val tubes = List(8) { it }

Column(
modifier = modifier
.fillMaxSize()
.background(Color.White)
.border(1.dp, color = Color.Black),
) {
Header()

LazyColumn(modifier = Modifier.weight(1f)) {
items(tubes, key = { it }) { tube ->
TubeItem(tubeIndex = tube + 1)
}
}

Footer()
}
}
@Composable
частное развлечение TubeItem(tubeIndex: Int) {

Код: Выделить всё

val context = LocalContext.current
val sampleTypes = listOf("血清", "血浆", "全血", "尿液")

Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {

Text(text = tubeIndex.toString(), fontSize = 24.sp, modifier = Modifier.weight(0.5f), textAlign = TextAlign.Center)

OutlinedTextField(
value = "",
onValueChange = {  },
modifier = Modifier
.weight(1.2f)
.padding(horizontal = 5.dp),
singleLine = true,
textStyle = TextStyle(fontSize = 18.sp, lineHeight = 24.sp, textAlign = TextAlign.Center)
)

OutlinedTextField(
value = "",
onValueChange = {  },
modifier = Modifier
.weight(2.5f)
.padding(horizontal = 5.dp),
singleLine = true,
textStyle = TextStyle(fontSize = 18.sp, lineHeight = 24.sp, textAlign = TextAlign.Center)
)

DropDownMenu(
modifier = Modifier
.weight(1f)
.padding(horizontal = 5.dp),
options = sampleTypes,
onItemSelected = {  }
)

DropDownMenu(
modifier = Modifier
.weight(1.2f)
.padding(horizontal = 5.dp),
options = sampleTypes,
onItemSelected = {  }
)

OutlinedTextField(
value = "",
onValueChange = {  },
modifier = Modifier
.weight(1f)
.padding(horizontal = 5.dp),
singleLine = true,
textStyle = TextStyle(fontSize = 18.sp, lineHeight = 24.sp, textAlign = TextAlign.Center)
)

OutlinedTextField(
value = "",
onValueChange = {  },
modifier = Modifier
.weight(1.8f)
.padding(horizontal = 5.dp),
singleLine = true,
textStyle = TextStyle(fontSize = 18.sp, lineHeight = 24.sp, textAlign = TextAlign.Center)
)

IconTubeDelete(
modifier = Modifier.width(60.dp),
size = 32.dp,
onClick = {
Toast.makeText(context, "delete1", Toast.LENGTH_SHORT).show()
}
)
}
}
Я обнаружил, что комментирование OutlinedTextField в элементе управления TubeItem ускоряет отрисовку интерфейса. OutlinedTextField снижает производительность устройства?
Я только начал работать с составом реактивного ранца и действительно не могу найти причину.
Помощьpppp

Подробнее здесь: https://stackoverflow.com/questions/792 ... to-draw-ui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»