|
|
|
@ -0,0 +1,48 @@
|
|
|
|
|
package net.micode.notes; // 指定代码所属的包名
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle; // 导入Bundle类,用于传递和保存状态数据
|
|
|
|
|
|
|
|
|
|
import androidx.activity.EdgeToEdge; // 导入边缘到边缘功能类,支持沉浸式布局
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity; // 导入AppCompat活动基类,提供兼容性支持
|
|
|
|
|
import androidx.core.graphics.Insets; // 导入Insets类,用于表示窗口插入区域的尺寸
|
|
|
|
|
import androidx.core.view.ViewCompat; // 导入视图兼容工具类,提供跨版本视图功能
|
|
|
|
|
import androidx.core.view.WindowInsetsCompat; // 导入窗口插入兼容类,处理窗口插入事件
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 应用主活动类
|
|
|
|
|
* 负责应用的主界面展示和初始化工作
|
|
|
|
|
*/
|
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 活动创建时调用的方法
|
|
|
|
|
* 进行布局初始化和窗口插入事件处理
|
|
|
|
|
* @param savedInstanceState 保存的活动状态,如果活动是重新创建的
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState); // 调用父类的onCreate方法
|
|
|
|
|
|
|
|
|
|
// 启用边缘到边缘功能,允许内容延伸到系统状态栏和导航栏区域
|
|
|
|
|
EdgeToEdge.enable(this);
|
|
|
|
|
|
|
|
|
|
// 设置活动的内容视图为activity_main布局
|
|
|
|
|
setContentView(R.layout.activity_main);
|
|
|
|
|
|
|
|
|
|
// 为id为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;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|