几天前, Groovy 2.4发布了 。 主要新闻之一是Groovy现在正式支持Android应用程序开发。 为了了解其工作原理,我使用了Groovy为Android创建一个小的ToDo列表示例应用程序。 在本文中,我将展示使用Groovy创建Android应用程序所需的步骤以及Groovy如何简化Android应用程序的开发。
以下屏幕显示了用Groovy编写的示例应用程序。 您可以在GitHub上找到完整的源代码。
在Android上运行Groovy
首先,我们需要已经包含最新版本的Android SDK的Android Studio 。 去年,默认的Android环境从Eclipse和Ant更改为Android Studio(基于IntelliJ构建)和Gradle。
要在Android上运行Groovy,我们将需要Gradle插件,因此请确保您没有使用基于Eclipse / Ant的旧开发工具。
我们在Android Studio中创建一个新的Android项目,并将以下行添加到我们的构建文件中:
顶级构建文件( <project> /build.gradle ):
buildscript {
..
dependencies {
..
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.5'
}
}
应用程序构建文件( <project> /app/build.gradle ):
apply plugin: 'com.android.application'
// apply Groovy Android plugin after the standard Android plugin
apply plugin: 'groovyx.grooid.groovy-android'
dependencies {
..
compile 'org.codehaus.groovy:groovy:2.4.0:grooid'
}
Groovy Android Gradle插件的源代码和文档可在GitHub上找到 。
这就是我们需要的所有配置,现在我们可以直接转到Groovy代码。
请注意,Groovy代码文件需要放置在src / main / groovy中,而不是src / main / java中。 将Groovy文件添加到src / main / java将不起作用!
用Groovy开发Android应用程序的方式与使用Java完全相同。 由于Groovy具有Java互操作性,因此您可以像使用Java一样使用和扩展Android类。
改善Android Studio中的Groovy体验
Android Studio已经包含Groovy插件。 因此,您可以立即获得Groovy语法支持。
但是,您可能会错过从上下文菜单创建新Groovy类的选项。 幸运的是,这可以在Android Studio中轻松配置。 您只需要创建一个新的文件模板( 设置>文件和代码模板 ),然后添加以下模板代码:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
class ${NAME} {
}
现在,您可以使用上下文菜单快速创建新的Groovy类:
您可能还需要研究此插件 , 该插件可以解决在Groovy中重写超类方法时无法自动完成的问题。 感谢@ arasthel92 ,他告诉了我这个插件。
运行Groovy应用程序
运行Groovy应用程序与运行Java应用程序相同。 我们可以简单地按一下Android Studio中的运行 (或调试 )按钮,然后将应用程序部署到连接(或仿真)的设备上。
很棒的事情是Groovy调试器可以直接使用。 我们可以从Android Studio调试正在运行的Groovy应用程序。
伟大的部分
Groovy的好处是它减少了您需要编写大量代码的行。 它的动态特性还使您摆脱了使用Android时通常需要进行的所有类型转换。
一个示例可以在ToDoListActivity.onResume()中找到。 在这种方法中,Android ListAdapter的数据被修改。 使用Java,它看起来像这样:
ArrayAdapter<ToDo> adapter = (ArrayAdapter<ToDo>) getListAdapter();
ToDoApplication application = (ToDoApplication) getApplication()
adapter.clear()
adapter.addAll(application.getToDos());
adapter.notifyDataSetChanged()
使用Groovy,我们可以像这样简单地重写它:
listAdapter.clear()
listAdapter.addAll(application.toDos)
listAdapter.notifyDataSetChanged()
Groovy的闭包是使用Android时非常方便的另一个功能。
要将点击侦听器添加到按钮,您需要在Java中编写类似的内容
Button button = (Button) findViewById(R.id.newTodoButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
void onClick(View v) {
...
}
});
使用Groovy只是
def button = findViewById(R.id.newTodoButton)
button.onClickListener = {
...
}
有关完整的示例,请参见CreateNewTodoActivity 。
注意运行时错误
动态语言通常会增加您在运行时发现的错误数量。 根据要构建的应用程序,这可能是一个严重的问题。 较大的应用程序可能需要大量的部署时间(该应用程序需要打包,通过USB复制到设备,在设备上安装和启动)。
Groovy的@CompileStatic批注可用于解决此问题。 它可以用来静态编译您的Groovy代码的一部分,以减少运行时错误:
@CompileStatic
class ToDoListActivity extends ListActivity {
..
}
@CompileStatic的缺点是(显然)您不能再使用Groovy的动态功能。
快速总结
使Groovy在Android上运行非常容易。 由于Groovy与Java具有互操作性,因此在同一应用程序中混合Groovy和Java也非常容易。 实际上,Android Studio中的Groovy集成比我预期的要好(但是,仍然需要一些手动调整)。
翻译自: https://www.javacodegeeks.com/2015/02/creating-android-apps-groovy-2-4.html
本文介绍了如何使用Groovy 2.4为Android开发应用程序,包括设置Android Studio、配置Gradle,以及Groovy在Android开发中的优势和注意事项。Groovy的动态特性减少了代码量,简化了如数据适配器更新和事件监听等任务,但可能增加运行时错误。





被折叠的 条评论
为什么被折叠?



