package com.example.myapplication

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.myapplication.ui.theme.MyApplicationTheme

//定义一个名为 MainActivity 的类,并继承 ComponentActivity 类。
//ComponentActivity是Android提供的一种向下兼容的Activity,可以使Activity在不同系统版本中的功能保持一致性
  //Activity是Android系统提供的一个基类,所有自定义的Activity必须继承它或者它的子类才拥有Activity的特性
    //AppCompatActivity是Activity的子类
class MainActivity : ComponentActivity() {
    /*
    onCreate 方法是 Activity 的生命周期方法之一
    它是应用启动时第一个被调用的方法,用来进行初始化工作,比如设置内容视图、初始化变量、设置点击事件等。
     */
    //savedInstanceState: Bundle?这是onCreate方法的一个参数,用于在Activity被重新创建时传递之前保存的状态数据。
    //Bundle对象是Android中用来在不同组件(如Activity、Fragment、Service等)之间传递数据的一种机制。

    /*
    重写onCreat方法,为什么要先调用父类的方法?
    这是因为父类的onCreate方法包含了Activity初始化的基本逻辑和设置
    如果不调用它,可能会导致Activity的某些功能无法正常工作
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        //父类的onCreate方法会处理传入的savedInstanceState参数,用于恢复Activity之前保存的状态
        // 如果不调用父类的方法,可能会导致恢复状态的逻辑无法执行,从而丢失数据。
        super.onCreate(savedInstanceState)
        /*
        enableEdgeToEdge() 是 Android 中的一种 API 方法
        用于启用边缘到边缘(Edge-to-Edge)的布局
        它允许应用内容扩展到屏幕的整个显示区域,包括状态栏和导航栏
        这种布局模式可以用来创建更加沉浸式的用户体验。
         */
        enableEdgeToEdge()
        //setContent {}:这个函数用来设置Compose的UI内容。
        //setContent 是一个扩展函数,用于在 ComponentActivity 中设置 Compose 布局。它取代了传统的 setContentView 方法。
        setContent {
            //MyApplicationTheme {}:应用的主题。
            //(MyApplicationTheme 是一个自定义的 Composable 函数,用于设置应用的主题。)
            MyApplicationTheme {
                //Scaffold {}:一个用于实现基础布局结构的容器。
                //Scaffold 是一个 Compose 布局组件,提供了应用的基础布局结构,如顶部栏、底部栏、浮动按钮等。
                //modifier = Modifier.fillMaxSize():设置Scaffold填满整个屏幕。
                //innerPadding:Scaffold的内边距。
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Greeting(
                        name = "Android",
                        modifier = Modifier.padding(innerPadding)
                    )
                }
            }
        }
    }
}

//Greeting是一个Composable函数,用于显示一段文本。
//@Composable:注解表示这是一个Composable函数。
//Modifier 是 Compose 中一个强大的工具,用于描述和组合 UI 元素的修饰符
// 例如,可以使用 Modifier 设置元素的大小、填充、边距、对齐方式等。
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    //Text:一个用于显示文本的Compose组件。
    Text(
        text = "Hello $name!",
        modifier = modifier
    )
}

//@Preview:注解用于在Android Studio中预览Compose的UI。
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
    MyApplicationTheme {
        Greeting("Android")
    }
}

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐