适用于的Android Hello World Kotlin应用程序

时间:2020-02-23 14:28:59  来源:igfitidea点击:

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调试。