android沉浸式的实现
生活随笔
收集整理的這篇文章主要介紹了
android沉浸式的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
愛奇藝將整個屏幕作為影視的展示區,用戶在看電影的時候眼中就只會有電影的內容,這樣就不會被其他一些無關的東西所分心。
這才是沉浸式模式的真正含義,而所謂的什么沉浸式狀態欄純粹就是在瞎叫,完全都沒搞懂“沉浸式” 這三個字是什么意思
過于老的系統根本就沒有提供沉浸式體驗的支持,安卓4.1之后才支持沉浸式的效果!!!@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mScrollView.setScrollViewListener(this); initListeners(); //透明導航欄 if (Build.VERSION.SDK_INT >= 21) { View decorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(option); getWindow().setNavigationBarColor(Color.TRANSPARENT); getWindow().setStatusBarColor(Color.TRANSPARENT); } ????ActionBar actionBar = getSupportActionBar(); ????actionBar.hide();
}
這里使用了SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,
表示會讓應用的主體內容占用系統導航欄的空間,然后又調用了setNavigationBarColor()方法將導航欄設置成透明色
效果是這樣的
然而真正的沉浸式是這樣的
當你確定要使用沉浸式模式, 那么只需要重寫Activity的onWindowFocusChanged()方法, 然后加入如下邏輯即可: @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); } }界面默認情況下是全屏的,狀態欄和導航欄都不會顯示。
而當我們需要用到狀態欄或導航欄時,只需要在屏幕頂部向下拉,
或者在屏幕右側向左拉,
狀態欄和導航欄就會顯示出來,此時界面上任何元素的顯示或大小都不會受影響。
過一段時間后如果沒有任何操作,狀態欄和導航欄又會自動隱藏起來,
重新回到全屏狀態。
這就是最標準的沉浸式模式。
總結
以上是生活随笔為你收集整理的android沉浸式的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scroller类源码解析及其应用(一)
- 下一篇: laravel会话控制和缓存操作