适用于的Android Hello World Kotlin应用程序
Kotlin已成为Android开发的推荐和官方语言。
在本教程中,我们将学习如何在Kotlin中创建Hello World Android应用。
创建Android Hello World Kotlin应用
您需要安装Android Studio和JDK版本6或者更高版本才能构建和运行android应用程序。
如果您不了解Android Studio,请先阅读本教程,然后再继续。
让我们通过启动Android Studio开始构建Hello World Android应用。
程序包名称命名将应用程序名称附加到域名的相反名称。
请注意,我们已经选中了包括Kotlin支持,因此默认的类最初是用Kotlin(.kt)编写的。
将项目的路径设置为您喜欢的任何内容! (我是这样做的)。
在下一个屏幕中选择目标Android设备。
您可以根据需要设置最低SDK版本。
以下是当前可用的Android OS版本:
- Android 1.0和1.1未公开命名。
- Cupcake: Android 1.5
- Donut: Android 1.6
- Eclair: Android 2.0–2.1
- Froyo: Android 2.2
- Gingerbread: Android 2.3
- Honeycomb: Android 3.0–3.2
- Ice Cream Sandwich: Android 4.0
- Jelly Bean: Android 4.1–4.3
- KitKat: Android 4.4
- Lollipop: Android 5.0–5.1
- Marshmallow: 6.0
- Nougat: Android 7.0
- Oreo: Android 8.0
选择活动类型
从下一个屏幕中选择活动类型。
注意:"活动"就是您在应用程序的单个屏幕上看到的任何内容(至少是在较高层次上显示的内容)。
我们现在选择一个空的活动。
您可以在下一个屏幕中自定义活动名称和等效的布局文件名称,如下所示。
布局文件通常挂接到活动,并用于显示活动的UI。
布局文件是用XML编写的。
Kotlin Android App项目结构
平台加载后,以下是您应该看到的项目结构。
项目目录的内容
我们应用程序的核心逻辑位于应用程序模块app | src |主要
java文件夹中包含类(具有讽刺意味的是,现在存在一个kotlin类文件!)。
为了提高项目结构的可读性,您始终可以创建一个kotlin文件夹,其中保留了所有Kotlin类文件。res文件夹包含应用程序的资源。
对于资源,我们的意思是:drawable:Drawable是可以在屏幕上绘制的东西。
它可以是图像或者矢量资产。
在以上项目结构中,有两个drawable文件夹:drawable和drawable-v24。
在drawable-v24中设置的图像,矢量和SVG资产将用于Android API级别等于或者大于24的设备。
换句话说,如果两个文件夹中都存在相同的文件名,则对于24以上的API级别,将使用drawable-v24文件。
另外,我们可以为不同的屏幕密度创建不同的可绘制文件夹。
" drawable-ldpi"," drawable-mdpi"," drawable-hdpi"," drawable-xhdpi"," drawable-xxhdpi"分别用于低,中,高,超高,超高密度。
layout:layout文件夹包含用于应用程序的视图和布局的xml文件。
mipmap:mipmap文件夹专门用于存储应用启动器图标。
在其他情况下,它类似于可绘制的文件夹。values文件夹包含以下xml文件:styles.xml:它定义"活动"及其子组件的样式和主题
colors.xml:它定义了最终将在UI内容中使用的调色板
strings.xml:在此处输入经过编码的字符串。
可以使用定义的键名来访问它们。dimens.xml:我们在此处定义页边距,文本和其他视图大小。
建议使用标准尺寸。AndroidManifest.xml文件包含与应用程序相关的基本信息。
活动名称,权限,服务等均在此处声明。
它可以轻松地称为应用程序的蓝图。Gradle是通用构建工具。
应用程序模块的build.gradle是一个构建脚本,其中包含构建应用程序所需的依赖项和插件。
根build.gradle包含项目中所有模块(包括app模块)所需的依赖项。Proguard:proguard-rules.pro文件位于项目的根目录中。
它用于两个主要目的:代码和资源的缩减以最大程度地减少APK大小:ProGuard可以进行代码缩减,ProGuard可以从您的应用程序中检测并删除未使用的类,字段,方法和属性,包括从包含的库中删除那些类,字段,方法和属性。
我们可以在每个构建变体专用的proguard-rules文件内指定规则。
总之,它优化了字节码并删除了未使用的资源代码混淆:Proguard有助于混淆您的代码,从而使您的代码难以进行反向工程,从而使其安全。
androidTest和test文件夹应包含用于对应用程序进行单元测试的代码。
androidTest和测试文件夹之间的区别
androidTest文件夹包含与Android Framework相关的单元测试代码。
测试文件夹包含涉及纯java/kotlin类的单元测试代码。
Android Hello World Kotlin代码
让我们看看布局文件(即" activity_main.xml")的样子:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="net.androidly.helloworldkotlin.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" </android.support.constraint.ConstraintLayout>
ConstraintLayout充当父视图,其中可以相对于彼此的约束位置放置子视图。
我们将在以后的教程中详细介绍它。
TextView是显示字符串的视图。
上面的XML显示在布局文件的文本编辑器中。
我们还可以通过下面提供的设计编辑器查看和安排用户界面。
通过从边列拖动按钮,我们在上述布局中添加了按钮。
我们已经修复了约束,使其位于TextView下方。
不用担心这些事情现在是否已经过去。
我们将在以后的教程中分别介绍这些内容。
让我们看一下MainActivity.kt文件,如下所示。
package net.androidly.helloworldkotlin import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } }
在Kotlin中,默认情况下,类是public和final的,因此指定关键字class
就足够了。
注意:要将一个类指定为非最终类,我们需要将其称为开放类。
与Java不同,Kotlin没有extend关键字。
取而代之的是冒号。
AppCompatActivity派生自Activity类,它支持向后兼容。
这样,当前代码就可以在装有旧版Android设备的设备上运行。
AppCompatActivity允许使用ActionBar和其他特定于Material Design的实现,例如工具列等。
在Kotlin中,功能是使用关键字fun
定义的。
活动将加载到屏幕上并通过使用布局文件调用功能setContentView来显示布局的onCreate函数。
注意:R.java文件是一个自动生成的文件,其中包含res文件夹中存在的所有资源的资源ID。
将视图从布局链接到活动
您是否注意到我们要为activity_main.xml布局文件中的TextView和Button设置一个ID?我们将在Kotlin活动类中使用相同的内容访问它们。
与Java中的Activity不同,Kotlin Activity类不需要findViewById方法来绑定Activity中的视图。
要访问Kotlin活动中的布局元素,我们需要在顶部添加以下导入行:
import kotlinx.android.synthetic.main.activity_main.*
我们添加了一项功能,可在单击按钮时更改TextView中显示的文本,如下所示:
package net.androidly.helloworldkotlin import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { textView.setText("Hello World With Kotlin") } } }
看起来比Java等效项简明扼要,如下所示:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textView.setText("Hello World with Kotlin is better"); } }); } }
在Kotlin代码中,无需声明视图或者覆盖onClick方法接口。
此外,不需要分号!
运行我们的Hello World应用程序
我们可以在USB连接的设备或者仿真器上运行该应用程序。
点击工具列上的运行按钮,将显示一个窗口,供您选择要在其上运行的设备:
如果尚未创建,请创建一个虚拟设备。
准备就绪后,该项目将在您的设备上构建并运行。
以下是在设备上运行时应用程序的输出。
要在智能手机上启用USB调试,请执行以下操作:设置>关于手机。
选项卡内部编号7次以激活开发人员模式。
您将可以在设置中找到"开发人员选项"。
继续并从那里启用USB调试。