亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

Android Studio 全屏沉浸式透明狀態欄效果的實現

瀏覽:2日期:2022-09-21 14:52:34

如何實現?1.)首先實現全屏

第一種:繼承主題特定主題

在Android API 19以上可以使用****.TranslucentDecor***有關的主題,自帶相應半透明效果,Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor兩種主題為新增加的,所以要新建values-v19文件夾并創建styles文件添加如下代碼

<style name='AppBaseTheme' parent='android:Theme.Holo.Light.NoActionBar.TranslucentDecor'> <!-- Customize your theme here. --></style>

第二種:在activity中采用代碼的方式

Android 4.4以上可以添加如下代碼

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明狀態欄window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明導航欄window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}

Android 5.0 以上也可以使用下面的代碼實現全屏

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);}

2.)解決狀態欄占位問題

第一種:主題添加如下設置

<item name='android:fitsSystemWindows'>true</item>

第二種:activity layout根目錄添加下面代碼

android:fitsSystemWindows='true'

第三種:通過Java代碼設置

rootview.setFitsSystemWindows(true);

3.)狀態欄導航欄設置背景色

4.4以上的可以采用修改contentView的背景色,或者動態添加一個view到contentView上

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明狀態欄window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明導航欄window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);//設置contentview為fitsSystemWindowsViewGroup contentView = (ViewGroup) findViewById(android.R.id.content);View childAt = contentView.getChildAt(0);if (childAt != null) {childAt.setFitsSystemWindows(true);}//給statusbar著色View view = new View(this);view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(this)));view.setBackgroundColor(color);contentView.addView(view);}

動態獲取StatusBarHeight函數如下

/** * 獲取狀態欄高度 * * @param context context * @return 狀態欄高度 */ private static int getStatusBarHeight(Context context) { // 獲得狀態欄高度 int resourceId = context.getResources().getIdentifier('status_bar_height', 'dimen', 'android'); return context.getResources().getDimensionPixelSize(resourceId); }

動態獲取NavigationBarHeight函數如下

/** * 獲取導航欄高度 * * @param context context * @return 導航欄高度 */ public static int getNavigationBarHeight(Context context) { int resourceId = context.getResources().getIdentifier('navigation_bar_height', 'dimen', 'android'); return context.getResources().getDimensionPixelSize(resourceId); }

4.)貼出整體java代碼實現方式

private void initWindows() { Window window = getWindow(); int color = getResources().getColor(R.color.wechatBgColor); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //設置狀態欄顏色 window.setStatusBarColor(color); //設置導航欄顏色 window.setNavigationBarColor(getResources().getColor(R.color.footerBgColor)); ViewGroup contentView = ((ViewGroup) findViewById(android.R.id.content)); View childAt = contentView.getChildAt(0); if (childAt != null) { childAt.setFitsSystemWindows(true); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明狀態欄 window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明導航欄 window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //設置contentview為fitsSystemWindows ViewGroup contentView = (ViewGroup) findViewById(android.R.id.content); View childAt = contentView.getChildAt(0); if (childAt != null) { childAt.setFitsSystemWindows(true); } //給statusbar著色 View view = new View(this); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(this))); view.setBackgroundColor(color); contentView.addView(view); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && useStatusBarColor) {//android6.0以后可以對狀態欄文字顏色和圖標進行修改 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } }

到此這篇關于Android Studio 全屏沉浸式透明狀態欄效果的文章就介紹到這了,更多相關Android Studio 全屏沉浸式透明狀態欄內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 天天噜夜夜操 | 亚洲精品一区二区三区第四页 | 草草影院第一页yycccom | 国产网友自拍 | 男女配种猛烈免费视频 | 精品欧美一区二区在线观看欧美熟 | 99久久精品免费看国产一区二区 | 在线成人97观看 | 国产欧美成人免费观看视频 | 国产精品大片天天看片 | 毛片网站大全 | 欧美精品午夜毛片免费看 | 国产视频一区二区三区四区 | 国内精品自产拍在线观看91 | 欧美一区二区三区免费高 | 国产精品欧美亚洲韩国日本 | 91精品91久久久久久 | 欧美精品国产制服第一页 | 国产在视频线在精品 | 亚洲视频在线观看免费视频 | 国产一区二区免费在线 | 欧美成人网7777视频 | 99久久99这里只有免费费精品 | 日本美女黄色一级片 | 久草在线视频免费看 | 国产精品视频免费一区二区三区 | www色午夜 | 国产精品亚洲一区二区三区在线观看 | 中文日韩字幕 | 欧美一区二区不卡视频 | 永久免费毛片手机版在线看 | 91精品国产乱码久久久久久 | 高清国产美女一级a毛片录 高清国产亚洲va精品 | 色婷婷激婷婷深爱五月老司机 | 91精品宅男在线观看 | 久久性妇女精品免费 | 国产成人久久精品二区三区 | 全免费毛片在线播放 | 曰本女同互慰高清在线观看 | 黄毛片一级毛片 | 女黄人东京手机福利视频 |