文章目錄
- Android Studio 透明狀態欄
- 透明狀態欄
- 改變狀態欄文字顏色
- 沉浸模式
Android Studio 透明狀態欄
最近正在學習使用Android Studio,發現默認的Hello World程式界面和我們平時使用的APP界面有很大的不同,多了Action Bar以及狀態欄,比較影響用戶體驗,于是我上網搜索了一下怎么實作透明的App狀態欄,在這里做一個記錄,
要求API 23以上,
透明狀態欄
//插入到OnCreate()中
if(Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
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.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
以下是效果圖

改變狀態欄文字顏色
我們發現由于背景是淺色的,狀態欄改為透明后狀態欄中的內容不好讀出,那么我們可以把狀態欄中的文字顏色改為深色
public void changeStatusBarTextColor(Window window, boolean isBlack) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = window.getDecorView();
int flags = 0;
if (isBlack) {
//更改文字顏色為深黑色
flags = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
else {
//更改文字顏色為淺色
flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
}
decor.setSystemUiVisibility(flags);
}
}
//記得呼叫,根據不同的背景色靈活呼叫函式
效果圖如下

可以看到,文字變成了深黑色,
沉浸模式
如果我們根本就不想要狀態欄的話,可以使用如下函式
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
}
效果圖如下,這時候需要滑動頂部才會顯示狀態欄

參考文獻:網上的資料,他人博客
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/281674.html
標籤:其他
上一篇:Android的即時通訊(db檔案無網路),建議肯定要學習
下一篇:Handler 中的奧秘
