Jetpack(七)Compose 认识<1>

作者: zcwfeng | 来源:发表于2021-02-18 00:16 被阅读0次
截屏2021-02-17 17.28.05.png
  • [compose.animation]

在其Jetpack Compose应用程序中制作动画,以丰富用户体验。

  • [compose.compiler]

转换@Composable函数并使用Kotlin编译器插件启用优化。

  • [compose.foundation]

编写具有可立即使用的构建基块的Jetpack Compose应用程序,并扩展基础以构建您自己的设计系统。

  • [compose.material]

使用可立即使用的Material Design组件构建Jetpack Compose UI。 这是Compose的更高级别的入口点,旨在提供与www.material.io中描述的组件匹配的组件。

  • [compose.runtime]

Compose编程模型和状态管理的基本构建模块,以及Compose Compiler插件所针对的核心运行时。

  • [compose.ui]

与设备进行交互所需的撰写用户界面的基本组件,包括布局,图形和输入。

Composable functions

用Android Studio创建Compose工程,选择Empty Compose Activity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyDemoTheme {
                // A surface container using the 'background' color from the theme
                Surface(color = MaterialTheme.colors.background) {
                    Greeting("Android")
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(text = "Hello $name!")
}

@Preview(showBackground = false)
@Composable
fun DefaultPreview() {
    MyDemoTheme {
        Greeting("Android")
    }
}

material a text element

都是基于函数的编程,所以Text对应Text() function.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Text("Hello world!")
        }
    }
}

定义 composable function

可组合函数只能在其他可组合函数的范围内调用。 要使函数可组合,请添加@Composable批注。

Preview your function in Android Studio
添加@Preview标签在@Composable 之前

之前开发使用xml编辑布局类似,我们习惯编写边预览,可以有效率的提高我们编写简单UI的速度。而且在这里可以达到UI 单元测试的目的。目前还不算稳定,个人认为是未来的一个趋势。用过Flutter的UI编程,可感觉到风格十分接近,而且很适合Kotlin的使用和Jetpack混合。不然就没有意义了,所以从各个方面和官网描述看,值得上手。

截屏2021-02-17 17.56.35.png

上面是Preview预览,其实和我们正常写没简单到哪里,但是业务逻辑多,就能看出来封装和测试的遍历和方便,第一个HelloWorld 跑起来就是这样。继续更新,保持前进。

留下几个问题,之后解答

  1. 为什么不给Text直接设置背景色,而是包在Surface里面

因为Surface是Material Design里面的东西,Surface是一个平面,并赋予了很多性质,比如设置了高度,Surface就会有阴影出现

  1. 如果不想用Material Design自己写,如何做?

  2. Compose如何设置点击监听器

Jetpack前面部分基础知识分享:

Jetpack(一)Lifecycle和LiveData
JetPacks之Lifecycles原理
JetPack之 LifeCycle LiveData

Jetpack(二)之DataBinding

Jetpack(三) 之 Room 与 ViewModel
Jetpack 之 ViewModel 原理

Jetpack (四) 之 Navigation
Jetpack Navigation 原理浅析

JetPack (五)之 Paging 分页库

Jetpack(六) 之 WorkManager
Jetpack WorkManager 原理

相关文章

网友评论

    本文标题:Jetpack(七)Compose 认识<1>

    本文链接:https://www.haomeiwen.com/subject/ahzixltx.html