Android(安卓)Studio引入Lambda以及介绍和简单实用
16lz
2021-01-25
一.studio中引入Lambda
依次点击File->Other Settings->Default Project Structure
JDK location确保当前项目实用的JDK版本是1.8
打开项目(Project)的build.gradle,在dependencies节点添加
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
打开项目(Module)的build.gradle在根节点添加
apply plugin: 'me.tatarka.retrolambda'
在android接点添加
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}
二.使用lambda表达式的三种写法
当我们在Android开发中,去写一个线程或者button的点击事件时,写完之后使用代码折叠功能,可以看到如下预览
这个其实就是Lambda表达式的写法,对于我们开发来说,不会去关心这个类以及方法
只会关心这个方法内的代码,所以其他的多余代码就显得多余了。
1.第一种方式,无参数+语句(代码块):使用于匿名内部类中方法无参数的情况
public void testNombal(){ //传统写法 myHandler.postDelayed(new Runnable() { @Override public void run() { Log.e("TAG","lambda"); } },1000);}//Lambda表达式写法public void testLambda(){ myHandler.postDelayed(() -> Log.e("TAG","lambda"),1000);}
2.第二种方式,有参数+语句:适用于内部类中方法只有一个参数的情况
/** * 第二种方式,有参数+语句:使用于匿名内部类方法只有一个参数的情况 * 方法参数 -> 语句 * 活 * 方法参数 ->代码块 *//** * 传统写法 */findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("TAG","test"); }});/** * 使用lambda表达式 */findViewById(R.id.button3).setOnClickListener(v-> Log.e("TAG","test"));
3.第三种方式,有参数+代码块:适用于匿名内部类中方法不只一个参数的情况
/** * 第三种方式,有参数+代码块:适用于匿名内部类中方法不止一个参数的情况 * (参数1,参数2) -> 语句 * 或 * (参数1,参数2)-> {代码块} */CheckBox checkBox = findViewById(R.id.checkbox);checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.e("TAG","test"); }});checkBox.setOnCheckedChangeListener((buttonView,isChecked) -> { Log.e("TAG","test"); Log.e("TAG","test"+isChecked);});
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android(安卓)Studio中编译时遇到Finished with non-zero exit v
- 【小知识点总结】保存android日志logcat到文件中
- Android(安卓)studio常用设置和快捷键
- 【Android(安卓)开发教程】ListView的扩展功能
- 安装android-ndk-1.5_r1遇到的问题及解决方法
- [安卓开发Android][叠层 层叠 卡片效果]RecyclerView与CardView
- android抽屉SlidingDrawer——错误显示
- android Handler Looper,MessageQueue消息机制原理