公司开发的云游戏本来是基于浏览器,后来需求变动,打算先出来一个客户端,选择了android,刚好我以前又用过android,所以打算让我先写个Demo用来录入外设输入信息。
说明:个人用android开发已经是15年的时候了,那个时候最新的好像才4.4,5.0都在测试。浏览了下相关Android开发最近的更新,android studio 已经到3.4.1,android版本已经到9.0+,官方推荐的语言也已经从java到kotlin了。感慨技术发展的快的同时开始了边开发边学习,踩过了不少坑,但是上手也比较快。
先给一个正面向结论:
软件工程师注定要一直学习,不要感慨学校学习的技术太老,出去就过时,只有在学校打好基础,出了学校才能快速上手,不管语言如何变化,版本如何更新,基础基本都是互通的。
下面是干货,特此记录如下。
1控件不再需要绑定id,直接通过id调用,修改属性也不再需要get,set,通过对象名.调用就行,效果和private+get,set是一样的,如下:
TEXT_ID.text="hello"
其中TEXT_ID是文本控件的id,text是文本显示的内容属性,hello是要显示的内容,一行干掉n行代码。
2对于单行监听器代码,方法括号内属性不再需要new,也不需要通过注解调用,直接通过lambda表达式就可以调用,如果表达式左边的参数没有用到甚至能不写,如下:
button.setOnGenericMotionListener {
view, motionEvent -> false
}
这里写法比java起省略太多了,具体调用的方法是什么,可以进入android studio查看代码提示。
3对于多行监听器代码,基本写法如下,这里我也踩了不少坑,java版和kotlin版代码同时贴出:
java
Button btn;
btn = findViewById(R.id.button);
btn.setOnGenericMotionListener(new View.OnGenericMotionListener() {
@Override
public boolean onGenericMotion(View view, MotionEvent motionEvent) {
int what=motionEvent.getButtonState();
if(what==MotionEvent.BUTTON_PRIMARY)
Toast.makeText(MainActivity.this,"鼠标被点击",Toast.LENGTH_SHORT).show();
return false;
}
});
kotlin
button.setOnGenericMotionListener(
object :View.OnGenericMotionListener{
override fun onGenericMotion(p0: View?, p1: MotionEvent?): Boolean {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
val what = p1?.buttonState
if (what==MotionEvent.BUTTON_PRIMARY)
toast("鼠标被点击")
else
toast(what.toString())
}
}
)
注意比较不同,kotlin基本都是这种格式。
4Toast终极简化
新建文件,注意不是类是文件。然后写入如下代码:
fun Context.toast(message:String,length:Int=Toast.LENGTH_SHORT){
Toast.makeText(this,message,length).show()
}
然后通过如下代码就可以调用Toast了
toast("鼠标被点击")
就一行,是不是终极简单。