Android实现启动页的全屏处理方案
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) {//...}}
评论
