作者:TimeFine
一、为啥学习Compose
学习Compose一开始我是拒绝的,因为习惯改变太大,写xml挺好的为啥要卷Compose?
后来看了郭霖大佬的文章 写给初学者的Jetpack Compose教程,为什么要学习Compose?
觉得大佬说的有道理:
1、写xml的方式必然是会被淘汰的,因为它太落后了。
2、虽然xml中可以用include,但是其实非常多的组件我们并没有复用,比如14sp的TextView,xml中到处都是,写多了也很烦,而Compose中声明式UI,控件可以极大的复用。
3、Compose已经趋于稳定,是时候学习一下了。
4、本来想深入Flutter,但发现招聘网站上招Flutter的太少了,于是目光转向了Compose。
二、第一个Compose应用
Compose导的包比较多,一开始建议创建新工程,这样一步到位简单一些,如下:
创建工程的时候选择其中一个,我选择的是第一个。
等项目创建好后,可以看到导入了如下的包:
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version" <-------这里
implementation "androidx.compose.material:material:$compose_version" <-------这里
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" <-------这里
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" <-------这里
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" <-------这里
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" <-------这里
}
compose_version
变量并不是抽出来的,而是系统自动生成的,整个Android应用的环境如下:
//应用的版本
minSdk 21 //最低版本21
targetSdk 33 //最高版本33
buildscript {
ext {
compose_version = '1.4.3' //Compose版本
}
}// Top-level build f