2022 | 您所在的位置:网站首页 › 安卓开发字体颜色代码 › 2022 |
一、布局文件里面定义一个ImageView。 二、默认的显示效果如下,有状态栏和TitleBar。 三、去掉TitleBar的方法:src\main\AndroidManifest.xml文件里面用这个theme,可以看到状态栏背景是黑的。 android:theme="@style/Theme.AppCompat.NoActionBar"
三、把状态栏透明,图片是全屏显示了,如果设置代码成FLAG_FULLSCREEN ,就看不到状态栏里面的内容,图片全屏显示。效果如下。(状态栏不完全透明) getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//FLAG_FORCE_NOT_FULLSCREEN FLAG_FULLSCREEN FLAG_TRANSLUCENT_STATUS四、把状态栏背景完全透明。 public class MainActivity extends AppCompatActivity { public void setFullscreen(boolean isShowStatusBar, boolean isShowNavigationBar) { int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; if (!isShowStatusBar) { uiOptions |= View.SYSTEM_UI_FLAG_FULLSCREEN; } if (!isShowNavigationBar) { uiOptions |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; } getWindow().getDecorView().setSystemUiVisibility(uiOptions); //隐藏标题栏 // getSupportActionBar().hide(); setNavigationStatusColor(Color.TRANSPARENT); } public void setNavigationStatusColor(int color) { //VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP if (Build.VERSION.SDK_INT >= 21) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setNavigationBarColor(color); getWindow().setStatusBarColor(color); } }
五、上面的效果是全屏显示了,但是状态栏的字体是白色的,非常难看,现在要把状态栏的字体改成黑色。显示的效果如下: private static void setAndroidNativeLightStatusBar(Activity activity, boolean dark) { View decor = activity.getWindow().getDecorView(); if (dark) { decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } else { decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); } }六、修改之后的代码 package com.giada.giadademo; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.View; import android.view.WindowManager; public class MainActivity extends AppCompatActivity { public void setFullscreen(boolean isShowStatusBar, boolean isShowNavigationBar) { int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; if (!isShowStatusBar) { uiOptions |= View.SYSTEM_UI_FLAG_FULLSCREEN; } if (!isShowNavigationBar) { uiOptions |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; } getWindow().getDecorView().setSystemUiVisibility(uiOptions); //隐藏标题栏 // getSupportActionBar().hide(); setNavigationStatusColor(Color.TRANSPARENT); } public void setNavigationStatusColor(int color) { //VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP if (Build.VERSION.SDK_INT >= 21) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setNavigationBarColor(color); getWindow().setStatusBarColor(color); } } private static void setAndroidNativeLightStatusBar(Activity activity, boolean dark) { View decor = activity.getWindow().getDecorView(); if (dark) { decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } else { decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setFullscreen(true, true); setAndroidNativeLightStatusBar(this, true); } }七、有价值的参考文章 Android沉浸式全屏讲解(状态栏、导航栏处理) - 简书 Android UI体验之全屏沉浸式透明状态栏效果 - 谢青 - 博客园 Android透明状态栏与状态栏文字颜色更改 - 简书 android全屏透明状态栏的坑 - 简书 |
CopyRight 2018-2019 实验室设备网 版权所有 |