Android Studio引入Lambda以及介绍和简单实用

一.studio中引入Lambda

依次点击File->Other Settings->Default Project Structure

JDK location确保当前项目实用的JDK版本是1.8

Android Studio引入Lambda以及介绍和简单实用_第1张图片

打开项目(Project)的build.gradle,在dependencies节点添加

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

Android Studio引入Lambda以及介绍和简单实用_第2张图片

打开项目(Module)的build.gradle在根节点添加

apply plugin: 'me.tatarka.retrolambda'

在android接点添加

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

Android Studio引入Lambda以及介绍和简单实用_第3张图片

二.使用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);
});

你可能感兴趣的:(android)