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

网页设计网站怎么做ui设计培训一般多少钱

网页设计网站怎么做,ui设计培训一般多少钱,网络营销策略的演变,韩国怎样才能出线文章目录 学习JetPack Compose资源前言:预览界面的实现Compose组件的布局管理一、Row和Colum组件(LinearLayout)LinearLayout(垂直方向 → Column)LinearLayout(水平方向 → Row) 二、相对布局 …

文章目录

  • 学习JetPack Compose资源
  • 前言:
  • 预览界面的实现
  • Compose组件的布局管理
    • 一、Row和Colum组件(LinearLayout)
      • `LinearLayout`(垂直方向 → `Column`)
      • `LinearLayout`(水平方向 → `Row`)
    • 二、相对布局 `FrameLayout` → Box
    • 三、`RelativeLayout` → **`ConstraintLayout`** 或 **`Box`**
        • 1. 用 `ConstraintLayout` 实现相对定位
        • 2. 用 `Box` 实现简单相对布局
    • 五、`GridLayout` → **`LazyVerticalGrid`** 或自定义行/列
        • 1. 网格布局
    • 六、`TableLayout` → **嵌套 `Row` 和 `Column`**
    • 七、`ScrollView` → **`Modifier.verticalScroll`** 或 **`LazyColumn`**
        • 1. 简单滚动
        • 2. 惰性滚动(大数据集用 `LazyColumn`)
    • 八、`Space` → **`Spacer`**
    • 九、`include` 标签 → **`@Composable` 函数**
        • 1. 定义可复用组件
      • 总结对比表

学习JetPack Compose资源

学习资源:JetPack Compose博物馆

前言:

在JetPack Compose博物馆中,对于compose的讲解较为详细,我这篇笔记主要是记录自己不懂和不理解的知识点,可能会重复,也可能有其他的,学习Compose布局一般都是从传统XML布局中进行转换的,接下来开始学习不同布局的Compose组件。

预览界面的实现

1、在传统的XML文件中,都是可以一边填写代码一边查看页面,在Compose如何实现呢?
首先,对一个无参的方法添加@Preview和@Composable的注解,如下图所示

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {ChainOfCustodyTheme {Text(text = "Hello Android!",modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.Center), // 内容居中)}
}

2、上述的图标分别为Code 、Split、Design,选择Split就可以看到分屏显示,默认为左右分屏,再次点击Split图标可以切换为上下分屏。

在这里插入图片描述

3、在添加注解的方法中,有个小图标,点击可直接在设备中运行该方法,不需要全部运行了。如下图所示在这里插入图片描述

Compose组件的布局管理

一、Row和Colum组件(LinearLayout)

看字面意思可知,Row对应XML布局中LinearLayout的水平布局,Colum对应XML布局中LinearnLayout的垂直布局

LinearLayout(垂直方向 → Column

基本用法:

@Composable
fun VerticalList() {Column(modifier = Modifier.fillMaxWidth().padding(16.dp),verticalArrangement = Arrangement.SpaceEvenly // 垂直分布方式) {Text("Item 1")Text("Item 2")Text("Item 3")}
}

等效于:

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextView ... /><TextView ... /><TextView ... />
</LinearLayout>

LinearLayout(水平方向 → Row

权重分配

@Composable
fun HorizontalWeight() {Row(modifier = Modifier.fillMaxWidth()) {Text(text = "Left",modifier = Modifier.weight(1f) // 占剩余空间的1/3.background(Color.Gray))Text(text = "Right",modifier = Modifier.weight(2f) // 占剩余空间的2/3.background(Color.LightGray))}
}

等效于

<LinearLayoutandroid:layout_width="match_parent"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_weight="1" .../><TextViewandroid:layout_width="0dp"android:layout_weight="2" .../>
</LinearLayout>

二、相对布局 FrameLayout → Box

叠加元素

@Composable
fun OverlayElements() {Box(modifier = Modifier.fillMaxSize()) {Image(painter = painterResource(R.drawable.background),contentDescription = null,modifier = Modifier.matchParentSize())Button(onClick = { /* ... */ },modifier = Modifier.align(Alignment.BottomEnd) // 右下角对齐) {Text("Action")}}
}

等效于

<FrameLayout ...><ImageView ... /><Buttonandroid:layout_gravity="bottom|end" ... />
</FrameLayout>

三、RelativeLayoutConstraintLayoutBox

使用ConstraintLayout需要额外添加依赖,注意需要和传统ConstrainLayout区分开来
依赖添加:

implementation("androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha13")
1. 用 ConstraintLayout 实现相对定位
@Composable
fun RelativePositioning() {ConstraintLayout(modifier = Modifier.fillMaxWidth()) {val (button, text) = createRefs()Button(onClick = { /* ... */ },modifier = Modifier.constrainAs(button) {start.linkTo(parent.start)top.linkTo(parent.top)}) { Text("Button") }Text(text = "Next to Button",modifier = Modifier.constrainAs(text) {start.linkTo(button.end, margin = 16.dp)top.linkTo(button.top)})}
}
2. 用 Box 实现简单相对布局
Box(modifier = Modifier.fillMaxSize()) {Text("Center", modifier = Modifier.align(Alignment.Center))Text("Top Start", modifier = Modifier.align(Alignment.TopStart))
}

五、GridLayoutLazyVerticalGrid 或自定义行/列

1. 网格布局

直接调用组件LazyVerticalGrid既可以完成实现

LazyVerticalGrid(columns = GridCells.Fixed(2), // 2列modifier = Modifier.fillMaxWidth()
) {items(10) { index ->Card(modifier = Modifier.padding(8.dp).aspectRatio(1f)) {Box(modifier = Modifier.background(Color.LightGray)) {Text("Item $index", modifier = Modifier.align(Alignment.Center))}}}
}

六、TableLayout嵌套 RowColumn

@Composable
fun TableExample() {Column(modifier = Modifier.padding(16.dp)) {// 表头行Row(modifier = Modifier.fillMaxWidth()) {Text(text = "Header 1",modifier = Modifier.weight(1f).padding(8.dp))Text(text = "Header 2",modifier = Modifier.weight(2f).padding(8.dp))}Divider(color = Color.Black, thickness = 1.dp)// 数据行Row(modifier = Modifier.fillMaxWidth()) {Text(text = "Data 1",modifier = Modifier.weight(1f).padding(8.dp)) Text(text = "Data 2",modifier = Modifier.weight(2f).padding(8.dp))}}
}

七、ScrollViewModifier.verticalScrollLazyColumn

1. 简单滚动
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())
) {repeat(50) { index ->Text("Item $index", modifier = Modifier.padding(8.dp))}
}
2. 惰性滚动(大数据集用 LazyColumn
LazyColumn {items(1000) { index ->Text("Item $index", modifier = Modifier.padding(8.dp))}
}

八、SpaceSpacer

Row {Text("Left")Spacer(modifier = Modifier.weight(1f)) // 占满剩余空间Text("Right")
}

九、include 标签 → @Composable 函数

1. 定义可复用组件
@Composable
fun Header(title: String) {Text(text = title,style = MaterialTheme.typography.h4,modifier = Modifier.padding(16.dp))
}// 在父布局中调用
Column {Header("Settings")// 其他内容...
}


总结对比表

传统布局Compose 替代方案关键特性
LinearLayout(垂直)ColumnverticalArrangement 控制垂直间距
LinearLayout(水平)RowhorizontalArrangement 控制水平间距
FrameLayoutBoxalign 控制子项对齐方式
RelativeLayoutConstraintLayout通过 linkTo 定义约束关系
GridLayoutLazyVerticalGrid固定列数或自适应列宽
TableLayout嵌套 RowColumn通过 weight 实现单元格比例
ScrollViewModifier.verticalScroll简单滚动内容
ListView/RecyclerViewLazyColumn/LazyRow惰性加载 + 自动复用
SpaceSpacer空白占位
include@Composable 函数直接调用自定义组件

文章转载自:

http://2jU5qFYH.zwfgh.cn
http://umvCZwWJ.zwfgh.cn
http://0KSLxTZB.zwfgh.cn
http://VozWXfhG.zwfgh.cn
http://RvjsbfMb.zwfgh.cn
http://Ze9KUmeU.zwfgh.cn
http://aUMLPLS0.zwfgh.cn
http://7r7VDHRo.zwfgh.cn
http://jEQepBcO.zwfgh.cn
http://5npNEyZT.zwfgh.cn
http://17D4kwo6.zwfgh.cn
http://3RU23UGv.zwfgh.cn
http://zzEgxbMI.zwfgh.cn
http://XdHytb9h.zwfgh.cn
http://kBEjQomc.zwfgh.cn
http://CsuoVTZY.zwfgh.cn
http://4NvnbUbt.zwfgh.cn
http://LHlnwKaR.zwfgh.cn
http://YcQI9dqr.zwfgh.cn
http://VkTD8Jot.zwfgh.cn
http://XOJFhDGs.zwfgh.cn
http://ztYXxOhO.zwfgh.cn
http://PESVsvdR.zwfgh.cn
http://vR61UX6J.zwfgh.cn
http://xyfRbWCD.zwfgh.cn
http://ITuJ9ON1.zwfgh.cn
http://TGQ9XGkY.zwfgh.cn
http://eW1Y0Hgj.zwfgh.cn
http://hA2fMbhC.zwfgh.cn
http://laSHlKCM.zwfgh.cn
http://www.dtcms.com/wzjs/767709.html

相关文章:

  • 做三方网站多少钱成都企业网站建站
  • 做网站很挣多少钱网络对企业管理的影响
  • 学习做网站大概多久时间seo自动排名软件
  • 企业网站带商城源码加盟微信小程序代理
  • 淘宝客网站做的好的seo 360
  • 国企公司网站制作电子商务网站建设与维护03
  • 类qq留言网站建设学做蛋糕什么网站
  • 郑州网站开发技术wordpress编辑文字空白卡主
  • 如何在网站上显示百度权重无极网站设计
  • 免费自助建站全系统2021年年度关键词
  • 美容会所网站模板下载网站建设的实施制作阶段包括
  • 专注成都网站建设及推广东莞大岭山俪仁妇产医院
  • html购物网站怎么做菏泽网站建设费用
  • 做视频网站要什么格式好建设部安全事故通报网站
  • 阿里巴巴网站建设销售网站开发 开题报告
  • wap建站模板房屋设计装修软件免费
  • 网站制作推广wordpress 注册角色
  • 网站如何做邮箱订阅号电子商务网站设计原理名词解释
  • 建设部网站官工程质量手册成品网站设计网站
  • 信息时代网站建设的重要性网站的惩罚期要怎么做
  • 网站建设方案范例网站备案和备案的区别吗
  • 苏州设计网页网站梧州网站建设推荐
  • 有创意做网站找投资怀来住房和城乡建设局网站
  • wamp建设网站大致步骤wordpress安装双seo插件
  • 一般做网站哪家好住房和城乡建设厅官方网站
  • 弄一个网站手机人才网怎么投简历
  • 做简单的html网站wordpress博客名字
  • 东方城乡与住房建设部网站国外网站dns在线解析
  • 下载的网站模版怎么用服装织梦网站源码
  • 联盟文明网站建设有新突破北京网站建设方案托管