当前位置: 首页 > news >正文

怎么自己编码做网站新媒体销售好做吗

怎么自己编码做网站,新媒体销售好做吗,婚庆公司联系电话,wordpress没有文章导航一、列表和动画 列表和动画在应用内随处可见。在本课中#xff0c;您将学习如何利用 Compose 轻松创建列表并添加有趣的动画效果。 1、创建消息列表 只包含一条消息的聊天略显孤单#xff0c;因此我们将更改对话#xff0c;使其包含多条消息。您需要创建一个可显示多条消…一、列表和动画 列表和动画在应用内随处可见。在本课中您将学习如何利用 Compose 轻松创建列表并添加有趣的动画效果。 1、创建消息列表 只包含一条消息的聊天略显孤单因此我们将更改对话使其包含多条消息。您需要创建一个可显示多条消息的 Conversation 函数。对于此用例请使用 Compose 的 LazyColumn 和 LazyRow。这些可组合项只会呈现屏幕上显示的元素因此对于较长的列表使用它们会非常高效。 Composable fun Conversation(messages: ListMessage) {LazyColumn {items(messages.size) { index -MessageCard(messages[index])}} }Preview(showBackground true) Composable fun PreviewConversation() {Compose_DemoTheme {Conversation(messages SampleData.conversationSample)} }object SampleData{val conversationSample listOf(Message(Lexi,Test...Test,,,Test,,,),Message(Lexi,只包含一条消息的聊天略显孤单。),Message(Lexi,因此我们将更改对话使其包含多条消息。您需要创建一个可显示多条消息的 Conversation 函数),Message(Lexi,对于此用例请使用 Compose 的 LazyColumn 和 LazyRow。这些可组合项只会呈现屏幕上显示的元素因此对于较长的列表使用它们会非常高效),Message(Lexi,在此代码段中),Message(Lexi,您可以看到 LazyColumn 包含一个 items 子项),Message(Lexi,它接受 List 作为参数并且其 lambda 会收到我们命名为 message 的参数可以随意为其命名该参数是 Message 的实例),Message(Lexi,简而言之系统会针对提供的 List 的每个项调用此 lambda),Message(Lexi,将示例数据集复制到您的项目中以便快速引导对话),) }在此代码段中您可以看到 LazyColumn 包含一个 items 子项。它接受 List 作为参数并且其 lambda 会收到我们命名为 index的参数可以随意为其命名该参数是 List的index。简而言之系统会针对提供的 List 的每个项调用此 lambda。将示例数据集复制到您的项目中以便快速引导对话。 2、在展开消息时显示动画效果 对话变得更加有趣了。是时候添加动画效果了您将添加展开消息以显示更多内容的功能同时为内容大小和背景颜色添加动画效果。为了存储此本地界面状态您需要跟踪消息是否已展开。为了跟踪这种状态变化您必须使用 remember 和 mutableStateOf 函数。 可组合函数可以使用 remember 将本地状态存储在内存中并跟踪传递给 mutableStateOf 的值的变化。该值更新时系统会自动重新绘制使用此状态的可组合项及其子项。这称为重组。 通过使用 Compose 的状态 API如 remember 和 mutableStateOf系统会在状态发生任何变化时自动更新界面。 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState) // enableEdgeToEdge()setContent {Compose_DemoTheme {Conversation(messages SampleData.conversationSample)}}} }Composable fun Conversation(messages: ListMessage) {LazyColumn {items(messages.size) { index -MessageCard(messages[index])}} }Composable fun MessageCard(msg: Message) {Row(modifier Modifier.padding(all 8.dp)) {Image(painter painterResource(id R.drawable.ic_android_logo),contentDescription Contact profile picture,modifier Modifier.size(40.dp).clip(CircleShape).border(1.5.dp, MaterialTheme.colorScheme.primary, CircleShape))Spacer(modifier Modifier.width(8.dp))//We keep track if the message is expanded or not in this//variablevar isExpanded by remember { mutableStateOf(false) }Column(modifier Modifier.clickable { isExpanded !isExpanded }) {Text(text msg.author,color MaterialTheme.colorScheme.secondary,style MaterialTheme.typography.titleSmall)Spacer(modifier Modifier.width(4.dp))Surface(shape MaterialTheme.shapes.medium, shadowElevation 1.dp) {Text(text msg.body,modifier Modifier.padding(all 4.dp),// If the message is expanded, we display all its content// otherwise we only display the first linemaxLines if (isExpanded) Int.MAX_VALUE else 1,style MaterialTheme.typography.bodyMedium)}}} }注意您需要添加以下导入内容才能正确使用 Kotlin 的委托属性语法by 关键字。按 AltEnter 或 OptionEnter 即可添加这些内容。 import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue 3、更改消息内容的背景颜色 现在您可以根据点击消息时消息的 isExpanded 状态更改消息内容的背景颜色。您将使用 clickable 修饰符来处理可组合项上的点击事件。您会为背景颜色添加动画效果使其值逐步从 MaterialTheme.colorScheme.surface 更改为 MaterialTheme.colorScheme.primary反之亦然而不只是切换 Surface 的背景颜色。为此您将使用 animateColorAsState 函数。最后您将使用 animateContentSize 修饰符顺畅地为消息容器大小添加动画效果 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState) // enableEdgeToEdge()setContent {Compose_DemoTheme {Conversation(messages SampleData.conversationSample)}}} }Composable fun Conversation(messages: ListMessage) {LazyColumn {items(messages.size) { index -MessageCard(messages[index])}} }Composable fun MessageCard(msg: Message) {Row(modifier Modifier.padding(all 8.dp)) {Image(painter painterResource(id R.drawable.ic_android_logo),contentDescription Contact profile picture,modifier Modifier.size(40.dp).clip(CircleShape).border(1.5.dp, MaterialTheme.colorScheme.primary, CircleShape))Spacer(modifier Modifier.width(8.dp))//We keep track if the message is expanded or not in this//variablevar isExpanded by remember { mutableStateOf(false) }val surfaceColor by animateColorAsState(if (isExpanded) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.surface,)Column(modifier Modifier.clickable { isExpanded !isExpanded }) {Text(text msg.author,color MaterialTheme.colorScheme.secondary,style MaterialTheme.typography.titleSmall)Spacer(modifier Modifier.width(4.dp))Surface(shape MaterialTheme.shapes.medium,shadowElevation 1.dp,color surfaceColor,modifier Modifier.animateContentSize().padding(1.dp)) {Text(text msg.body,modifier Modifier.padding(all 4.dp),// If the message is expanded, we display all its content// otherwise we only display the first linemaxLines if (isExpanded) Int.MAX_VALUE else 1,style MaterialTheme.typography.bodyMedium)}}} }二、后续步骤 恭喜您已完成 Compose 教程您已高效地构建了一个简单的聊天界面该界面显示包含图片和文字的可展开动画消息列表使用 Material Design 原则设计添加了深色主题且具有预览功能所有内容只需不到 100 行代码 以下是您目前为止所学的内容 定义可组合函数在可组合项中添加不同的元素使用布局可组合项构建界面组件使用修饰符扩展可组合项创建高效列表跟踪状态以及修改状态在可组合项上添加用户互动在展开消息时显示动画效果 Compose官方中文课程 Jetpack Compose 官方使用入门
http://www.hyszgw.com/news/109066.html

相关文章:

  • 个体户怎么做购物网站php 快速网站开发
  • 建设工程网站有哪些内容东丽手机网站建设
  • 英文站 wordpress想学计算机怎么入门
  • 购物网站中加减数目的怎么做WordPress商品相册
  • 地方门户网站赚钱用钢铁侠做网站
  • 厦门做网站优化公司公司网站模板下载
  • 菜鸟必读 网站被入侵后需做的检测 2wordpress解决新浪图床
  • 网站怎么更改域名网站建设完成以后应该怎样备份
  • 全网影视vip网站建设学校网站的建设费用吗
  • 网站开发的经济可行性分析网站开发有几种类型
  • 做淘宝的网站有哪些内容创建网站的基本流程
  • 网站建设的评分细则甘肃省建设厅网站首页绿色建筑
  • 导航网站没有内页没有了在线玩小游戏网页版
  • 发不了软文的网站怎么做关键词优化硬件开发
  • 静态网站入侵教程长治一般做一个网站需要多少钱
  • 网站与app的区别做抖音风的网站
  • 网站安全性怎么做wordpress防止频繁搜索
  • 石家庄手机模板建站有哪些学校的网站做的好
  • 用什么语言能写网站吗灯饰网站源码
  • 免费的h5制作网站wordpress搬家后图片不显示
  • php网站建设设计制作方案网站开发语言php5.1
  • 设计网站用什么软件免费设计logo在线生成
  • 做网站网站代理违法吗电商网站建设图片
  • 网站改版后百度不收录如何办网站 论坛
  • 学校风采网站建设需求怎么做企业网站推广的方法
  • 做盗版电影网站吗建设网站用哪种语言
  • 高端医院网站建设班级信息网站建设的现状
  • 深圳外贸响应式网站建设wordpress网站属于什么网站吗
  • 宝安专业网站建设企业网站分析案例
  • 重庆的网站设计公司价格宜昌市建设厅官方网站