Android Studio默认使用Lambda表达式是会报错的,即使你使用的是java 8,为了在android studio中使用lambda表达式,我们必须借助一个插件retrolambda ,该插件将java 8中的lambda表达式特性兼容到java 5。使用它也很简单。

首先先项目根目录下的build.gradle中加入

classpath 'me.tatarka:gradle-retrolambda:3.2.0'

最终整个文件会像这样子

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.2.3'        classpath 'me.tatarka:gradle-retrolambda:3.2.0'    }}allprojects {    repositories {        jcenter()    }}

然后再module目录下的build.gradle中使用插件,加入

apply plugin: 'me.tatarka.retrolambda'

并且在android节点下加入

    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }

最终整个文件就像这样子

apply plugin: 'com.android.application'apply plugin: 'me.tatarka.retrolambda'android {    compileSdkVersion 22    buildToolsVersion "22.0.1"    defaultConfig {        applicationId "cn.edu.zafu.rxdemo"        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:22.2.0'}

现在让我们试试lambda表达式,就拿View的点击事件做实验吧。

在使用lambda表达式之前是这样子的

btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {          Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show()      }});

使用了lambda表达式之后是这样子的

btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(v -> Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show());

好了,运行一下项目,如果点击按钮出现了Toast说明你成功了,但是如果你运行出现ClassNotFound的错误的话clean一下项目,再编译运行,就能成功运行了。

怎么样,有没有发现代码精简了许多。这篇文章算是开始RxJava(RxAndroid)的学习之路的第一篇博文吧,毕竟RxJava大量使用了lambda表达式特性。虽然也可以不用lambda表达式,但是使用了lambda表达式后会显得代码特别精简。

更多相关文章

  1. Github开源Android资源整理(十一)优秀项目
  2. android Parcelable项目中的应用
  3. 《Gradle 权威指南》读书笔记——第七章 Android Gradle 插件
  4. Android引入项目作为依赖(module)
  5. Android - 实训项目总结
  6. Android 项目快速更改包名的方法
  7. Android 进阶——Android Studio 项目结构详细述及Gradle脚本语
  8. Android Studio 导入 Gradle 项目
  9. 模仿android新浪微博手机客户端项目

随机推荐

  1. Android修改Gallery页面布局
  2. 3.EditText
  3. Android布局属性说明
  4. android:layout_centerHorizontal="true"
  5. Android编程: MVC模式、应用的生命周期
  6. android--RelativeLayout布局的一些理解
  7. android:text 文字阴影设置
  8. Android百分比布局:PercentFrameLayout
  9. android支付宝首页、蚂蚁森林效果、视频
  10. Android(安卓)xml资源文件中@、@android: