|
|
package net.micode.notes;
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
|
import androidx.activity.EdgeToEdge;
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
import androidx.core.graphics.Insets;
|
|
|
import androidx.core.view.ViewCompat;
|
|
|
import androidx.core.view.WindowInsetsCompat;
|
|
|
|
|
|
/**
|
|
|
* 应用主入口类,负责初始化应用界面和基础配置
|
|
|
* <p>
|
|
|
* 核心职责:
|
|
|
* <ul>
|
|
|
* <li>作为应用的启动Activity,处理应用初始化逻辑</li>
|
|
|
* <li>配置边缘到边缘(EdgeToEdge)显示模式</li>
|
|
|
* <li>设置窗口Insets监听器,适配系统状态栏和导航栏</li>
|
|
|
* </ul>
|
|
|
* <p>
|
|
|
* 设计意图:
|
|
|
* <ul>
|
|
|
* <li>提供简洁的主界面入口,将具体功能委托给其他组件</li>
|
|
|
* <li>适配Android 11+的边缘到边缘显示特性</li>
|
|
|
* <li>确保界面在不同设备上的正确显示</li>
|
|
|
* </ul>
|
|
|
* <p>
|
|
|
* 继承关系:
|
|
|
* <ul>
|
|
|
* <li>直接继承自{@link androidx.appcompat.app.AppCompatActivity},使用 AppCompat 库提供的兼容特性</li>
|
|
|
* </ul>
|
|
|
*
|
|
|
* @author Micode Team
|
|
|
* @since 1.0.0
|
|
|
*/
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
|
|
|
/**
|
|
|
* 初始化Activity,设置布局和窗口配置
|
|
|
* <p>
|
|
|
* 业务逻辑:
|
|
|
* <ul>
|
|
|
* <li>调用父类onCreate方法完成基础初始化</li>
|
|
|
* <li>启用边缘到边缘显示模式,充分利用屏幕空间</li>
|
|
|
* <li>设置Activity布局为activity_main</li>
|
|
|
* <li>注册窗口Insets监听器,动态调整视图内边距以适配系统UI</li>
|
|
|
* </ul>
|
|
|
* <p>
|
|
|
* 与其他类的交互:
|
|
|
* <ul>
|
|
|
* <li>使用{@link EdgeToEdge}工具类启用边缘到边缘显示</li>
|
|
|
* <li>通过{@link ViewCompat}设置窗口Insets监听器</li>
|
|
|
* <li>与系统UI框架交互,获取系统状态栏和导航栏的尺寸</li>
|
|
|
* </ul>
|
|
|
*
|
|
|
* @param savedInstanceState 保存的实例状态,用于恢复Activity状态
|
|
|
*/
|
|
|
@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;
|
|
|
});
|
|
|
}
|
|
|
} |