最近开始学习使用kotlin来进行安卓开发,过程中整理出常用的写法
1、定义全局对象不初始化 例如:
private lateinit var mAudioManager : AudioManager //lateinit是关键,表示延迟初始化
2、继承与接口实现 例如:
MyExoPlayerActivity : AppCompatActivity(),OnOperationListener{}
类似于java :
MyExoPlayerActivity extends AppCompatActivity implements OnOperationListener{}
3、var表示可变变量,val表示不可变变量类似java中的final
4、接口回调有两种常用方式 例如:
第一种,回调接口只有一个方法,如setOnClickListener的参数OnClickListener回调监听中只有onClick(View v)一个方法,则可以直接是使用
setOnClickListener{it:View//里面写点击后要做的事情,相当于onClick(View v)方法,it就是v}
第二种,回调接口有多个方法,如setOnScrollListener的参数OnScrollListener含有onScrollStateChanged(AbsListView view, int scrollState)以及onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)两个方法,则可以
setOnScrollListener(object : AbsListView.OnScrollListener{ //鼠标右击这里然后点击弹出栏Generate再点击Implement Methods即可找到对应实现方法})
5、空判断
对于声明可为空的参数如(list: ArrayList<String>?)类型后面加?表示可为空,在使用时进行空判断处理,有两种处理方式
第一种字段后面加!!像java一样抛出异常如list!!.size
第二种字段后面加?为空不做处理直接返回null,或配合?:做空判断处理
list?.size?:0 //表示若为空时返回0,不为空返回list.size
类似java
list != null ? list.size : 0
6、when表达式常用
kotlin没有switch,用when代替,常用方式
when(参数,可以为任意类型){
条件1 -> {}
条件2 -> {}
...
}
7、数组常用方式
var list = arrayListOf("1","2","3")
8、let,with,run函数,可以省略对象名的重复书写,如一个对象user
class user{
public string name = ”li“
public string sex = ”man“
}
里含有属性名name和sex,赋值时需
user.name = ”li“
user.sex = ”man“
若用let函数,则可以
var user = User().let {
it.name = "li"
it.sex = "nan"
}
若用with函数,则可以
var user = User()
with(user){
name = ”li“
sex = ”man“
}
若用run函数,则可以
var user = User().run { //相比let省了it,相比with少了传参数
name = "li"
sex = "nan"
}
also函数相当于let函数,apply函数相当于run函数,只不过他们最后会return user,而上面函数不会
9、跳转activity
startActivity(Intent(context,XXXActivity::class.java))
10、一个类中的匿名内部类需指定为 inner class才能使用该类的全局变量
11、在string中使用$字符读取字段值 例如:
var mOldX = 1
var string = "mOldX = $mOldX”
则 string输出值为 mOldX = 1
12、经过const修饰的常量,才是java中理解的常量
const val LEVEL_LOW = 1;
等于Java,没加const修饰相当于每final
public static final LEVEL_LOW = 1;