|
|
|
@ -1,3 +1,7 @@
|
|
|
|
|
/*
|
|
|
|
|
* 应用主Activity
|
|
|
|
|
* 负责设置全屏沉浸效果,适配系统状态栏和导航栏
|
|
|
|
|
*/
|
|
|
|
|
package net.micode.notes;
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
@ -8,17 +12,38 @@ import androidx.core.graphics.Insets;
|
|
|
|
|
import androidx.core.view.ViewCompat;
|
|
|
|
|
import androidx.core.view.WindowInsetsCompat;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 应用主Activity
|
|
|
|
|
* 实现全屏沉浸效果,使应用内容能够延伸到系统状态栏和导航栏区域
|
|
|
|
|
*/
|
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Activity创建时调用的生命周期方法
|
|
|
|
|
* 设置全屏沉浸效果并处理窗口Insets
|
|
|
|
|
*
|
|
|
|
|
* @param savedInstanceState 保存的实例状态,如果Activity是重新创建的
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
|
|
// 启用全屏沉浸效果,允许内容延伸到系统状态栏和导航栏区域
|
|
|
|
|
EdgeToEdge.enable(this);
|
|
|
|
|
|
|
|
|
|
// 设置Activity布局
|
|
|
|
|
setContentView(R.layout.activity_main);
|
|
|
|
|
|
|
|
|
|
// 设置窗口Insets监听器,处理系统窗口边界
|
|
|
|
|
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
|
|
|
|
|
// 获取系统状态栏和导航栏的Insets(边距)
|
|
|
|
|
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
|
|
|
|
|
|
|
|
|
|
// 将Insets应用到主视图的padding中,确保内容不会被系统UI遮挡
|
|
|
|
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
|
|
|
|
|
|
|
|
|
// 返回处理后的Insets,供其他视图继续使用
|
|
|
|
|
return insets;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|