Android开发基础知识详解
课程代码
https://github.com/BellyBook/ChunxiangClassCode-Android
ComposeUI中的尾随闭包
ComposeUI中的尾随lambda是Kotlin的一个重要特性,可以让代码更简洁优雅。
- Name
基本概念
- Type
- concept
- Description
- 函数的最后一个参数是lambda表达式
- 可以在括号外编写lambda
- 提高代码可读性
- Compose UI广泛使用
- Name
使用场景
- Type
- usage
- Description
- 界面组件定义
- 点击事件处理
- 状态管理
- 布局组合
ComposeUI尾随闭包示例
// 普通的lambda写法
Button(
onClick = { println("Clicked") }
) {
Text("Click Me")
}
// 常见的Compose组件示例
Column {
Text("Hello")
Button(onClick = { /*处理点击*/ }) {
Text("Click")
}
}
// LaunchedEffect示例
LaunchedEffect(key1 = true) {
// 协程作用域
delay(1000L)
println("延迟执行")
}
Android Manifest详解
AndroidManifest.xml是应用程序的配置文件。
- Name
重要配置
- Type
- config
- Description
- 应用权限声明
- 组件注册
- 应用属性设置
- 系统要求
- Name
常见元素
- Type
- elements
- Description
- application
- activity
- service
- receiver
AndroidManifest.xml示例
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- 权限声明 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.MyApp">
<!-- 主Activity -->
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
res文件夹详解
res文件夹包含应用程序的所有资源文件。
- Name
常用目录
- Type
- directories
- Description
- layout
- drawable
- values
- mipmap
- Name
资源类型
- Type
- resources
- Description
- 字符串资源
- 颜色资源
- 尺寸资源
- 主题样式
res资源使用示例
// 在Compose中使用资源
@Composable
fun ResourceDemo() {
Column {
// 使用字符串资源
Text(
text = stringResource(R.string.hello_world),
color = colorResource(R.color.primary)
)
// 使用尺寸资源
Spacer(modifier = Modifier.height(
dimensionResource(R.dimen.spacing_medium)
))
// 使用图片资源
Image(
painter = painterResource(R.drawable.my_image),
contentDescription = null
)
}
}
// res/values/strings.xml示例
// <?xml version="1.0" encoding="utf-8"?>
// <resources>
// <string name="app_name">我的应用</string>
// <string name="hello_world">你好,世界!</string>
// </resources>
// res/values/colors.xml示例
// <?xml version="1.0" encoding="utf-8"?>
// <resources>
// <color name="primary">#FF6200EE</color>
// <color name="secondary">#FF03DAC5</color>
// </resources>