Android实现启动页的全屏处理方案
龙旋
共 3113字,需浏览 7分钟
· 2021-04-22
Activity全屏处理
Activity的状态栏透明化
方案一:Activity全屏处理
在登录页的主题中设置为全屏,并且设置Window的背景为启动图片。
主题的父类是Theme.AppCompat.NoActionBar,
所以也隐藏掉了ActionBar。
<!--欢迎页面theme-->
<style name="app_welcome_theme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/app_welcome_bg</item>
<item name="android:windowFullscreen">true</item>
</style>
/**
* 隐藏状态栏
*/
publi void hideStatusBar(Activity activity) {
if (activity != null && !activity.isFinishing()) {
WindowManager.LayoutParams attrs = activity.getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
activity.getWindow().setAttributes(attrs);
}
}
public class WelcomeActivity extends BaseActivity() {
//跳转到主页
private void goHome() {
hideStatusBar(this);
startActivity(this, HomeActivity.class);
finish();
}
}
方案二:Activity的状态栏透明化
<!--欢迎页面theme-->
<style name="app_welcome_theme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/app_welcome_bg</item>
</style>
/**
* 设置状态栏透明
*/
public void setStatusBarTranslucent(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.setNavigationBarColor(Color.BLACK);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
View decorView = window.getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
//透明着色
window.setStatusBarColor(Color.TRANSPARENT);
}
}
public class WelcomeActivity extends BaseActivity() {
public void onCreate(Bundle savedInstanceState) {
//透明化状态栏
setStatusBarTranslucent(this);
}
}
修复方案
android:windowTranslucentStatus:透明掉状态栏,设置为true,状态栏有阴影,false则无阴影。
android:statusBarColor:设置状态栏颜色为透明色。
<!--欢迎页面theme-->
<style name="app_welcome_theme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/app_welcome_bg</item>
<!-- 透明掉状态栏,设置为true,状态栏有阴影,false则无阴影 -->
<item name="android:windowTranslucentStatus">false</item>
<!-- 设置状态栏颜色为透明色 -->
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
public class WelcomeActivity extends BaseActivity() {
public void onCreate(Bundle savedInstanceState) {
//...
}
}
评论
Android 12:全新的App启动动画!
BATcoder技术群,让一部分人先进大厂大家好,我是刘望舒,腾讯TVP,著有三本业内知名畅销书,连续四年蝉联电子工业出版社年度优秀作者,百度百科收录的资深技术专家。前华为架构师,现大厂技术总监。想要加入 BATco...
刘望舒
0
Android导航栏适配的实现
和你一起终身学 习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、前言二、导航栏的处理三、 修改StatusHostLayout方案四、总结 一、前言 在之前的文章中,大家比较关注宿主侵入的方式...
程序员Android
0
Android 相机启动流程笔记
和你一起终身学 习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Camera 框架介绍: Camera的框架分为Kernel部分和hal部分,其中kernel部分主要有两块: image sensor driver,负责具...
程序员Android
0