跳至主要內容

入门

chanchaw大约 2 分钟android

概述

所有 activity 在文件 app/src/main/AndroidManifest.xml 中注册在标签 application 下(以 activity 包裹)

Android Studio 通过右键创建 activity 时连带创建的 xml 文件默认使用 androidx.constraintlayout.widget.ConstraintLayout ,在其中使用多个控件会有报错,可以修改为使用 LinearLayout,例如下面代码的第二行

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/username"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:id="@+id/btn"
        android:layout_marginTop="10dp"
        android:text="点击我"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints" />

</LinearLayout>

android 中的 activity 作为类似 web 中的一个页面,但是只是作为页面的逻辑层,视图层一般在 app/src/main/res/layout 下,在 activity 中绑定视图文件 *.xml ,例如下面代码中通过 setContentView 绑定 Mainactivity 的视图 xml 文件

package com.xdf.firstnative;

import android.os.Bundle;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        // 代码控制控件
        TextView tv = findViewById(R.id.username);
        tv.setText("cc");
    }
}

新建 activity

通过下面方法创建新 activity,通过点击按钮打开该页面的方法参见 控件/Button.md 中绑定点击事件的代码

点击按钮打开activity

参见 控件/Button.md 中介绍的按钮点击事件的使用方法

关闭当前activity

在当前页面的控件绑定点击事件中使用方法 finish

package com.xdf.firstnative.activity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.xdf.firstnative.R;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_second);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        //#region 绑定文本点击事件
        TextView tv = findViewById(R.id.username);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        //#endregion
    }
}