Android笔记(二):JetPack Compose定义移动界面概述

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Android笔记(二):JetPack Compose定义移动界面概述,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、JetPack Compose组件概述

JetPack Compose是Google公司在2021年正式推出的声明式UI工具包。Compose库用于开发原生Android应用界面。它取代传统XML文件配置界面,不需要界面编辑工具,而是采用强大Kotlin API以及函数搭建移动应用界面,代码量更少,更简单。JetPack Componse库需要在Android Studio Flamingo及其以上版本,创建Empty Activity 模板应用就可以实现。
JetPack Compose工具包搭建界面比较简单,学习起来也比较容易。虽然Kotlin的代码量很大,但是与传统的XML布局搭建界面相比较,就小得多。值得注意地是,JetPack Compose工具包是纯粹利用Kotlin API来实现的,无法转换为Java代码来实现。

二、组合函数和可预览函数

2.1 组合函数

可组合函数是在函数前增加@Composable注解来定义。JetPack Compose是在可组合函数中可以嵌套多个其他可组合函数定义界面层次。

@Composable fun 函数名([参数列表]) {
//函数体
}

例如:定义一个带有图标和文字的按钮。

@Composable
fun Greeting() {
    val context = LocalContext.current
    Box(contentAlignment= Alignment.Center){
        //定义按钮
        Button(onClick={
            Toast.makeText(context,"显示第一个Compose",Toast.LENGTH_LONG).show()
        }){
            //定义一行
            Row(verticalAlignment = Alignment.CenterVertically){
                //定义文本
                Text(
                    text = "点击",
                    fontSize = 30.sp
                )
                //定义图标
                Icon(imageVector = Icons.Filled.Face,
                     tint = Color.White,
                     contentDescription="空")
            }
        }
    }
}

在主活动MainActivity中调用组合函数,代码如下:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ForCourseWeek4Theme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    Greeting()
                }
            }
        }
    }
}

运行结果如下图所示:
在这里插入图片描述

2.2 可预览函数

如果组合函数没有任何参数,这时可以在这种组合函数前加上再增加@Perview注解,就声明一个预览函数。可以在Android Studio的Design视图显示预览函数代码组成的界面。可单击按钮,将预览函数定义界面部署到模拟器显示界面。当有多个预览函数时,会生成多个按钮,根据需要选择实现模拟器预览界面。
修改上述代码,代码如下:

@Preview(showBackground = true)
@Composable
fun Greeting() {
    val context = LocalContext.current
    Box(contentAlignment= Alignment.Center){
        //定义按钮
        Button(onClick={
            Toast.makeText(context,"显示第一个Compose",Toast.LENGTH_LONG).show()
        }){
            //定义一行
            Row(verticalAlignment = Alignment.CenterVertically){
                //定义文本
                Text(
                    text = "点击",
                    fontSize = 30.sp
                )
                //定义图标
                Icon(imageVector = Icons.Filled.Face,
                     tint = Color.White,
                     contentDescription="空")
            }
        }
    }
}

定义为可预览函数,可以在编辑器的Design视图中显示可预览函数的界面设计,如下图红色箭头所示:
在这里插入图片描述
也可以直接在模拟器中运行可预览函数,查看运行结果,类似下图,执行红色箭头所示的按钮:
在这里插入图片描述
预览函数与在活动Activity在模拟器调用的显示效果略有不同,因为上述的可预览函数没有定义宽度和高度。

三、Modifier修饰符

Modifier起到组件属性配置的工具。Modifier调用属性配置的函数,仍会返回Modifier对象,因此可以对Modifier对象链式调用的为组件设置样式。修饰符可以修饰或扩充可组合项,执行以下操作:

  • 更改可组合项的大小、布局、行为和外观
  • 添加信息,如无障碍标签
  • 处理用户输入
  • 添加高级互动,如使元素可点击、可滚动、可拖动或可缩放

修饰符是标准的 Kotlin 对象。可以通过调用具体Modifier 对象来创建修饰符
常见的修饰符:

Modifier.background:设置被修饰组件背景色
Modifier.fillMaxSize、Modifier.fillMaxWidth、Modifier.fillMaxHeight:设置被修饰组件填充父空间、填满宽度、填满高度
Modifier.wrapContentSize、Modifier.wrapContentWidth、Modifier.wrapContentHeight:设置被填充组件设置成按照组件本身的大小、组件的宽度、组件的高度
Modifier.size:设置被修饰组件的大小

Modifier.offset:设置移动的偏移量

Modifier.border:设置边框 Modifier.padding:设置内边距(放在border 前)、外边距(放在border后)
修饰符函数的顺序非常重要。由于每个函数都会对上一个函数返回的 Modifier 进行更改,因此顺序会影响最终结果。
已知如下代码,代码最后设置边距padding,此时表示设置内边距:

@Composable
fun Greeting() {
    Column(modifier = Modifier
        .fillMaxWidth()
        .wrapContentHeight()
        .background(Color.Yellow)
        .padding(24.dp)
    ) {
        Text(text = "Hello,")
        Text(text = "Android")
    }
}

运行结果如下:
在这里插入图片描述

将上述代码调整样式设置,先设置边距padding,表示设置外边距,代码如下:

@Composable
fun Greeting() {
    Column(modifier = Modifier
        .padding(24.dp)
        .background(Color.Yellow)
        .fillMaxWidth()
        .wrapContentHeight()
    ) {
        Text(text = "Hello,")
        Text(text = "Android")
    }
}

此时,运行结果发生了变化,如下图所示:
在这里插入图片描述
”Jetpack Compose 教程“ https://developer.android.google.cn/jetpack/compose/tutorial?hl=zh-cn

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/195549.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!