Android studio中怎么操作python中的lambda函数

学习笔记(40)
更新:现在已经可以不使用第三方库,直接在android studio 中使用Lambda。至于具体如何操作:
步骤如下:
在app/build.gradle 的android节点下面的defaultconfig下面添加一行jackOptions.enabled = true
2. 点击 android studio 的菜单栏上面的sync now按钮
3. 等同步完成,就可以在.java文件里面写出new Thread(()-& Log.e("Tag","Hello World!")).start();这样的代码了。
此方法得以执行可能与compileSdkVersion 25有关,为了避免不能使用。我在这里贴出我的app/build.gradle的全部内容:
apply plugin: 'com.android.application'
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.pythoncat.java8"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions.enabled = true
buildTypes {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
testCompile 'junit:junit:4.12'
以下是使用第三方库来支持Lambda的方法。
如你所知,在Android开发中现在也是可以使用 Lambda表达式了。不过是因为的存在。
好了,经过我半天的摸索,我知道怎么去在 android studio中去使用gradle-retrolambda来进行Lambda表达式的使用了。
首先说明一下我的开发环境
如上,可以看到,我是as版本是2.1的。sdk是23的。
当然,这并不重要,只是想说明一下在最新的环境中如何去使用进行Lambda。
下面说明使用步骤:
1.使用as新建一个安卓工程。已经有的工程理论上同样适用
2.在工程已经准备完成之后,打开Project Structrue选项
如上,就是打开了Project Structrue。
3.选择Modules,一般就是app,然后选择Dependencies,点击”+”,选择Library dependency。这时会弹出一个输入选择对话框,然后在上面输入gradle-retrolambda,回车搜索,然后选择me.tatarka:gradle-retrolambda.XXXX。注意,这里的XXX是不同的版本号,以搜索结果为准。
4.然后,这一步很重要,就是在你的Project的build.gradle的节点dependencies下添加一行classpath 'me.tatarka:gradle-retrolambda:XXXXX'。同样这后面的XXXX依然取决于你之前的搜索结果。
5.在你的Module的build.gradle中添加如下信息:略!!!。具体需要添加的,可以看下面的完整.gradle文件
6.然后,放出我当前的项目中的.gradle文件
1.是Project的build.gradle文件
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha5'
classpath 'me.tatarka:gradle-retrolambda:3.2.5'/*这个需要添加*/
// NOTE: Do not place your applicati they belong
// in the individual module build.gradle files
allprojects {
repositories {
task clean(type: Delete) {
delete rootProject.buildDir
然后是Module的build.gradle
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.pythoncat.helloreactiveworld"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
buildTypes {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
repositories {
mavenCentral()
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
只要这两个.gradle文件对了,就可以安心使用retrolambda了。
最重要 的是的是:如果为了省事,可以将以上两个文件中注释说明需要添加的地方拷贝到自己的对应的.gradle文件中就可以直接使用Lambda了。
好吧,这个也许是的readme.md的中文版解释吧~
打完收工。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:87528次
积分:2166
积分:2166
排名:第17505名
原创:130篇
评论:17条
(5)(8)(16)(2)(5)(27)(2)(2)(3)(5)(1)(1)(1)(2)(1)(6)(3)(4)(9)(4)(15)(11)android(19)
随着的广泛使用,Android studio相关知识的掌握必不可少,比如:lambda。昨天在一个Android网站找lambda资料,看到一篇有关Android
studio中lambda的使用的文章,虽然写得比较简略,但是很实用,分享出来给大家一起看看,有兴趣的童鞋赶紧来围观吧~~
&&&&&& 熟悉Android的童鞋应该都清楚,在Java8发布以前,Android中是没法用lambda的,但Java8 发布以后,就可以用了。lambda提供了强大的函数式编程范式,下面结合RxJava和Retrolambda,来给大家展示展示lambda的强大,实现方式如下:
1、下载安装jdk8(windows版本)
配置JAVA8_HOME到环境变量中
配置%JAVA8_HOME%\bin到PATH
2、创建Android工程
创建过程就不在这里多说
配置JDK Location,File-&Project Structure-&SDK Location ,如图:
3、 配置RxJava
在app的build.gradle-&dependencies中,增加如下引用
compile 'io.reactivex:rxandroid:1.1.0'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
compile 'io.reactivex:rxjava:1.1.0'
这样,项目里就引入了RxJava和RxAndroid
4、配置retrolambda
1) 增加classpath
在Project的buildscript-&dependencies中增加classpath
classpath 'me.tatarka:gradle-retrolambda:3.2.4'
2) 增加plugin
在app module的build.gradle中增加plugin
apply plugin: 'me.tatarka.retrolambda'
3) 增加compileOptions
在app module的build.gradle-&android中增加compileOptions
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
以上就是Android studio中使用lambda的相关知识,希望可以帮助大家更好的使用Android studio。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:32901次
排名:千里之外
原创:25篇
转载:32篇
(2)(3)(1)(3)(1)(1)(1)(1)(1)(3)(5)(7)(17)(11)&nbsp&#8250&nbsp&nbsp&#8250&nbsp
android studio中使用lambda表达式
1.下载jdk82.在build.gradle中添加依赖,这会使用retrolambda来编译Java代码buildscript {
//开始加入
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.1.0'
//结束插入
}3.应用插件声明:apply plugin:'me.tatarka.retrolambda'4.&加入compileOptions,这会让IDE使用用JAVA8语法解析compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}5.&指定将源码编译的级别,,使用下列代码,会将代码编译到兼容1.6的字节码格式retrolambda {
javaVersion JavaVersion.VERSION_1_6
}6.使用最简单的点击事件尝试一下。v.setOnClickListener(v1 -& Toast.makeText(getActivity(), "clicked", Toast.LENGTH_LONG).show());5056人阅读
android(31)
尊重他人的劳动成果,转载请标明出处:, 本文出自:【gengqiquan的博客】
Java8出来有段时间了,一直对lambda蠢蠢欲动。但是由于Android缺少SDK的支持,一直不能如愿使用。如今SDK24版本出来了。添加了对Java8的支持,终于可以使用了。特此给大家分享下接入Java教程。
教程基于Androidstudio。
首先要做的是更新Android的SDK至24。然后下载JDK1.8,安装,配置好环境变量。
更改项目中的jdk引用,如下图
在project的build.gradle里添加
buildscript {
repositories {
mavenCentral()
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
// NOTE: Do not place your applicati they belong
// in the individual module build.gradle files
在要使用Java8 的model的build.gradle里添加
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
完成以上步骤就可以在项目中使用Java8特性编写代码了,AndroidN的SDK里内置了一些实现了@FunctionalInterface注解的接口。比如点击事件原来我们是这样调用
mContentView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
支持了Java8 后我们可以这样调用
mContentView.setOnClickListener((v)-&{
//do somethings
怎么样?代码是不是简洁了许多?
也可以自己定义@FunctionalInterface注解的接口,比如我们的 里面的登录验证回调接口中,不支持lambda的调用方式为
LoginUtil.checkLogin(mContext, new LoginUtil.LoginForCallBack() {
public void callBack() {
支持lambda后的调用方式为
LoginUtil.checkLogin(mContext, () -& {
// do somethings
区别只是我们的登录回调接口中加上了@FunctionalInterface注解
@FunctionalInterface
public interface LoginForCallBack {
void callBack();
看一段利用builder模式且支持lambda的网络请求代码
new HttpUtil.Builder("favorite_authorized/del")
.Version()
.Params(sortMap_)
.Params("carId", sb.toString())
.CacheTime("3600*24")
.Success((s) -& {
BaseModel model = new BaseModel(s);
//set data
.Error((v) -& {
ToastUtil.showShort(mContext,(String)v[1]);
是不是神清气爽?实乃杀人越货、装逼编码的利器啊
我建了一个QQ群(群号:),用于大家讨论交流Android技术问题,有兴趣的可以加下,大家一起进步。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:297404次
积分:2511
积分:2511
排名:第14633名
原创:36篇
评论:79条
(1)(1)(3)(1)(1)(1)(2)(5)(6)(2)(6)(2)(2)(1)(2)&nbsp&#8250&nbsp&nbsp&#8250&nbsp
Lambda for Android
原文出处:&Lambda,是我去年学习RxJava时知道的,它让代码看起来更加简洁,但个人认为代码的可读性差了很多,因此一直没有去深入学习。什么是lambdalambda是一种匿名表达式,retrolambda使得Android能使用lambda特性,举个例子:view.setOnClickListener(new&View.OnClickListener()&{
&&&&&&&&&&&&@Override
&&&&&&&&&&&&public&void&onClick(View&v)&{
&&&&&&&&&&&&&&&&&Log.d(&wxl&,&&retrolambda&test&);
&&&&&&&&&&&&}
});使用 lambdaview.setOnClickListener(
v&-&&Log.d(&wxl&,&&retrolambda&test&));Android如何使用这里是使用的gradle插件,这样就可以在代码中使用lambda了。Android Studio配置Retrolambdalambda需要安装JDK8,下载最新版本build.gradlebuildscript&{
&&&&repositories&{
&&&&&&&&jcenter()
&&&&dependencies&{
&&&&&&&&classpath&'com.android.tools.build:gradle:1.5.0'
&&&&&&&&classpath&'me.tatarka:gradle-retrolambda:3.2.4'//加上这句依赖,这会使用retrolambda来编译Java代码
}app/build.gradleapply&plugin:&'com.android.application'
apply&plugin:&'me.tatarka.retrolambda'//加上这句加,入plugin声明
&&&&compileOptions&{//使用JAVA8语法解析
&&&&&&&&sourceCompatibility&JavaVersion.VERSION_1_8
&&&&&&&&targetCompatibility&JavaVersion.VERSION_1_8
retrolambda&{//指定将源码编译的级别,使用下列代码,会将代码编译到兼容1.6的字节码格式
&&&&javaVersion&JavaVersion.VERSION_1_6
}Android Studio自动生成lambda当配置Retrolambda成功后,Android Studio会有提示,按Alt+Enter键点击替换,这样就能自动生成,使用lambda了。到这里我就可以洗洗睡了,也很晚了,但为什么可以这样写呢,还是来简单了解lambda语法吧。lambda语法简介基本格式input&-&&bodyintput种类无输入 void() -& bodynew&Thread(new&Runnable()&{
&&&&&&&&&&&&@Override
&&&&&&&&&&&&public&void&run()&{
&&&&&&&&&&&&&&&&Log.d(&wxl&,&&retrolambda&test&);
&&&&&&&&&&&&}
&&&&&&&&});使用 lambdanew&Thread(()&-&&Log.d(&wxl&,&&retrolambda&test&));一个参数输入x -& bodyview.setOnClickListener(new&View.OnClickListener()&{
&&&&&&&&&&&&@Override
&&&&&&&&&&&&public&void&onClick(View&v)&{
&&&&&&&&&&&&&&&&&Log.d(&wxl&,&&retrolambda&test&);
&&&&&&&&&&&&}
});使用 lambdaview.setOnClickListener(
v&-&&Log.d(&wxl&,&&retrolambda&test&));多个参数输入(x, y) -& x +List&String&&names&=&Arrays.asList(&peter&,&&anna&,&&mike&,&&xenia&);
Collections.sort(names,&new&Comparator&String&()&{
&&&&&&&&&&&&@Override
&&&&&&&&&&&&public&int&compare(String&a,&String&b)&{
&&&&&&&&&&&&&&&&return&pareTo(a);
&&&&&&&&});
for&(String&name&:&names)&{
&&&&&Log.d(&wxl&,&name);
}使用 lambdaList&String&&names&=&Arrays.asList(&peter&,&&anna&,&&mike&,&&xenia&);
Collections.sort(names,&(a,&b)&-&&pareTo(a));
for&(String&name&:&names)&{
&&&&&Log.d(&wxl&,&name);
}不省略型e(int x, int y) -& x +body 种类什N都不做() -& {}单行不需要有返回值,单行可省略{}(x, y) -& x +单行需要有返回值(x, y) -& x + y//注意没有分号结尾Observable.just(&Hello&,&&RxJava&)
&&&&&&&&&&.map(new&Func1&String,&String&()&{
&&&&&&&&&&&&&&&&&&&&@Override
&&&&&&&&&&&&&&&&&&&&public&String&call(String&s)&{
&&&&&&&&&&&&&&&&&&&&&&&&return&s.toUpperCase();
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&});使用 lambdaObservable.just(&Hello&,&&RxJava&)
&&&&&&&&&&.map(s&-&&s.toUpperCase());多行不需要有返回值(x, y) -&{x&x;y&y;}多行需要有返回值(x, y) -&{x&x;y&y;return x +}&
上一篇: 上一篇文章讲述了Retrofit的简单使用,这次我们学习一下Retrofit的各种HTTP请求. Retrofit基础 在Retrofit中使用注解的方式来区分请求类型.比如 @GET() 表示一个GET请求,括号中的内容为请求的地址. 格式 含义 @GET 表示这是一个GET请求 @POST 表示这个一个POS
下一篇: 假设这样一种场景,我们在利用github api开发一个app,在user界面,我既要用github api请求user,又要列举user下的event数据,为此,我准备使用 Retrofit来做网络请求,首先写好 interfaces publicinterfaceGitHubUser{@GET(users/{user})ObservableJsonObje

我要回帖

更多关于 python中的lambda 的文章

 

随机推荐