关于Android开发者文档中“构建首个应用”相关总结
关于Android开发者文档中“构建首个应用”相关总结

关于Android开发者文档中“构建首个应用”相关总结

重要的文件

app > java > com.example.myfirstapp > MainActivity

这是主 activity。它是应用的入口点。当您构建和运行应用时,系统会启动此 Activity 的实例并加载其布局。

app > res > layout > activity_main.xml

此 XML 文件定义了 activity 界面 (UI) 的布局。它包含一个 TextView 元素,其中具有“Hello, World!”文本

app > manifests > AndroidManifest.xml

清单文件描述了应用的基本特性并定义了每个应用组件。

Gradle Scripts > build.gradle

有两个使用此名称的文件:一个针对项目“Project: My First App”,另一个针对应用模块“Module: My_First_App.app”。每个模块均有自己的 build.gradle 文件,但此项目当前仅有一个模块。使用每个模块的 build.gradle 文件控制 Gradle 插件构建应用的方式。如需详细了解此文件,请参阅配置 build

构建简单的界面

Android 应用的界面 (UI) 以布局和微件的层次结构形式构建而成。布局是 ViewGroup 对象,即控制其子视图在屏幕上的放置方式的容器。微件是 View 对象,即按钮和文本框等界面组件。

ConstraintLayout 是一种布局,它根据同级视图和父布局的约束条件定义每个视图的位置。这样一来,使用扁平视图层次结构既可以创建简单布局,又可以创建复杂布局。这种布局无需嵌套布局。嵌套布局是布局内的布局(如上图所示),会增加绘制界面所需的时间。

Intent

Intent 是在相互独立的组件(如两个 activity)之间提供运行时绑定功能的对象。Intent 表示应用执行某项操作的意图。您可以使用 intent 执行多种任务,但在本课中,您的 intent 将用于启动另一个 activity。

在 MainActivity 中,添加 EXTRA_MESSAGE 常量和 sendMessage() 代码,如下所示:

const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    /** Called when the user taps the Send button */
    fun sendMessage(view: View) {
        val editText = findViewById<EditText>(R.id.editTextTextPersonName)
        val message = editText.text.toString()
        val intent = Intent(this, DisplayMessageActivity::class.java).apply {
            putExtra(EXTRA_MESSAGE, message)
        }
        startActivity(intent)
    }
}

sendMessage() 将发生以下情况:

  • Intent 构造函数会获取两个参数:Context 和 Class。首先使用 Context 参数,因为 Activity 类是 Context 的子类。在本例中,系统将 Intent, 传递到的应用组件的 Class 参数是要启动的 activity。
  • putExtra() 方法将 EditText 的值添加到 intent。Intent 能够以称为“extra”的键值对形式携带数据类型。您的键是一个公共常量 EXTRA_MESSAGE,因为下一个 activity 将使用该键检索文本值。为 intent extra 定义键时,最好使用应用的软件包名称作为前缀。这样可以确保这些键是独一无二的,这在您的应用需要与其他应用进行交互时会很重要。
  • startActivity() 方法将启动一个由 Intent 指定的 DisplayMessageActivity 实例。接下来,您需要创建该类。

关于apply,kotin中类的构造函数返回的对象有几个内置函数,其列表和作用如下:

也就是说,putExtra是intent对象的一个成员函数,apply是kotlin提供的一个语法糖。

创建第二个 activity

在此步骤中,您将修改第二个 activity 以显示第一个 activity 传递的消息。

在 DisplayMessageActivity 中,将以下代码添加到 onCreate() 方法中:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_display_message)
    
    // 从启动该activity的intent中获取EXTRA_MESSAGE(键)
    val message = intent.getStringExtra(EXTRA_MESSAGE)

    // 获取布局当中的textView,并将其中的text赋值为message。
    val textView = findViewById<TextView>(R.id.textView).apply {
        text = message
    }
}

添加向上导航功能

在您的应用中,不是主入口点的每个屏幕(所有不是主屏幕的屏幕)都必须提供导航功能,以便将用户引导至应用层次结构中的逻辑父级屏幕。为此,请在应用栏中添加向上按钮。

若要添加向上按钮,您需要在 AndroidManifest.xml 文件中声明哪个 activity 是逻辑父级。打开 app > manifests > AndroidManifest.xml 文件,找到 DisplayMessageActivity 的 <activity> 标记,然后将其替换为以下代码:

<activity android:name=".DisplayMessageActivity"
          android:parentActivityName=".MainActivity">
    <!-- 如果你支持的API level在15以下,则需要添加以下的meta-data标签 -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>

这当中关键的就是在activity标签中添加了android:parentActivityName属性。

参考文章

1.构建首个应用  |  Android 基本信息  |  Android Developers (google.cn)
2.巧用Kotlin:内置函数let、also、with、run、apply大大提高你的开发效率! – 云+社区 – 腾讯云 (tencent.com)

0 0 投票数
打个分吧!
订阅评论
提醒
guest
4 评论
最多点赞
最新 最旧
内联反馈
查看所有评论
4
0
希望看到您的想法,请您发表评论x