该笔记基于《第一行代码Android》(第三版),代码在Android Studio (Bumblebee 2021.1.1 Patch3)上运行。
安卓App目录下常用内容
| 名称 | 属性 |
| AndroidTest | 编写AndroidTest测试用例,可对项目进行自动化测试 |
| Java | 放置Java/Kotlin代码(自动生成MainActivity) |
| res | 资源目录(drawable - 图片;layout - 布局;values - 字符,mipmap - 图标) |
| AndroidManifest.xml | 配置文件,可以给程序添加权限声明 |
| test | 编写Unit Test测试用例 |
| .gitignore | 用于将app模块内指定的目录或文件排除在版本控制外 |
| build.gradle | app模块的gradle构建脚本,指定多项目构建相关的配置 |
| proguard-rules.pro | 用于制定项目代码的混淆 |
日志工具Log(android.util.Log)
| 名称 | 属性 |
| Log.v() | 打印最为琐碎,意义最小的日志信息。对应级别verbose, 是Android中级别最低的一种。 |
| Log.d() | 打印一些调试信息(对调试程序和分析问题有益)。对应级别为debug,高于verbose。 |
| Log.i() | 打印较为重要的数据(如可以帮助分析用户行为的数据)。对应级别info,高于debug。 |
| Log.w() | 打印警告信息,提示程序可能会有的潜在风险。对应warn,高于info。 |
| Log.e() | 打印程序中的错误信息,如程序进入了catch语句。对应级别为error。 |
class MainActivity: AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d("MainActivity","onCreate execute")
//Log.d("tag:用于对打印信息进行过滤","msg:想要打印的内容")
}
}
变量
| 关键字 | 含义 |
| val(value) | 声明不可变的变量 |
| var(varialbe) | 声明可变的变量 |
P.S. 优先使用val来声明变量,当val无法满足需求时使用var
函数
//e.g.
fun largerNumber(num1:Int, num2:Int):Int{
return max(num1,num2)
}
//e.g.
fun largerNumber2(num1:Int,num2:Int,num3:Int): Int = max(max(num1,num2),num3)
条件语句(If,When)
If:
//写法1
fun largerNumber(num1:Int, num2:Int):Int{
var value = 0
if (num1 >num2) {
value = num1
} else {
value = num2
}
return value
}
//写法2
fun largerNumber(num1:Int, num2:Int):Int{
val value = if (num1 >num2) {
num1
} else {
num2
}
return value
}
//写法3
fun largerNumber(num1:Int, num2:Int):Int{
return if(num1 > num2) {
num1
} else {
num2
}
}
//写法4
fun largerNumber(num1:Int, num2:Int) = if (num1>num2){
num1
} else {
num2
}
//写法5
fun largerNumber(num1:Int,num2:Int) = if(num1 >num2) num1 else num2
When:
//精确匹配
//带参数
fun getScore(name:String) = when (name) {
//匹配值 -> {执行逻辑}
"Tom" -> 86
"Jim" -> 77
"Jack" -> 99
else -> 0
}
//不带参数
fun getScore(name:String) = when {
name == "Tom" -> 86
name =="Jim" -> 77
name =="Jack" -> 99
else -> 0
}
//以特定内容开头的均为某一值
fun getScore(name:String) = when{
name.startsWith( "Tom") -> 86
name =="Jim" -> 77
name =="Jack" -> 99
else -> 0
}
//类型匹配
fun getScore(number:Number) {
when(number) {
is Int -> println("number is Int")
is Double -> println("number is double")
else -> println("not support")
}
}