最近公司項目中要求寫一個視頻直播錄像及視頻觀看的功能,額,就本能地去看了一波當下主流的一些視頻類APP,發如今愛奇藝等播放器中,在播放視頻的時候都是fullScreen的,而這個在各大手遊中也體現的比較多。html
額,這個其實不算技術層次,可是爲了咱們的用戶體驗,咱們不能不把每個細節都作好,同時,這也是追妹祕訣哦~android
因而樓主就採用了愛奇藝這樣的設計風格,打算隱去系統標題欄和ActionBar。這裏就跟你們分享一下這個如何實現,你們能夠根據狀況採納。app
1)首先咱們來看看簡單的一張圖片是怎樣顯示的。代碼很簡單,咱們只對Xml上放一張大圖。ide
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="com.example.nanchen.fullscreendemo.MainActivity"> 8 9 <ImageView 10 android:layout_width="match_parent" 11 android:layout_height="match_parent" 12 android:scaleType="centerCrop" 13 android:src="@drawable/test"/> 14 </RelativeLayout>
額,顯示就很常規啦。spa
2)咳咳!搞什麼飛機,我只想看美女,給我那麼多我不須要的東西作什麼?好嘛,來實現全屏,隱去系統標題欄,簡單一句代碼。設計
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 // 實現全屏,去掉系統標題欄,適合於遊戲、電影等沉浸式體驗 7 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); 8 }
運行一下:code
3)咳咳,別把時間給弄丟了呀,我想像餓了麼同樣還要看到時間。哼,要是看美女看久了,沒注意時間被媳婦兒發現了可就很差了。視頻
好嘛,那就把系統時間放出來嘛,其實也很簡單啦,可是目前只支持SDK在21以上哦。下面兩種方式均可以。xml
1 if (VERSION.SDK_INT >= 21) { 2 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 3 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); 4 getWindow().setStatusBarColor(Color.TRANSPARENT); 5 }
1 //另一種方式 2 if (VERSION.SDK_INT >= 21) { 3 getWindow().getDecorView().setSystemUiVisibility( 4 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 5 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 6 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 7 ); 8 getWindow().setStatusBarColor(Color.TRANSPARENT); 9 getWindow().setNavigationBarColor(Color.TRANSPARENT); 10 }
看看效果。htm
4)哎,要是能夠想看的時候顯示,不想看的時候隱藏就行了。
也能夠呀。
1 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 2 | View.SYSTEM_UI_FLAG_FULLSCREEN);
運行。
小夥伴也許會想:靠,樓主你這什麼審美,這一閃一閃的是啥?這樣還不如上一個好,簡直是影響我看美女的心情。哎,關了關了。誰會這麼腦殘這樣弄。
5)話說心急吃不了熱豆腐,我親愛的小夥伴你別方,咱們還沒帶來重磅呢,app的沉浸式用戶體驗!!!
爲了實現出沉浸式效果,隱去沒必要要的系統控件影響咱們的即視感,可是小夥伴,你酌情使用,畢竟沉浸式體驗除了在電影,手遊,在其餘行業貌似還用的相對較少,不過無論用不用,你仍是先收藏一個唄,實現就簡單了,重寫onWindowFocusChanged方法。
1 /** 2 * 真正的沉浸式體驗,適用於SDK>=19 3 * 能夠拉出導航欄 4 */ 5 @Override 6 public void onWindowFocusChanged(boolean hasFocus) { 7 super.onWindowFocusChanged(hasFocus); 8 if (hasFocus && VERSION.SDK_INT >= 19) { 9 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 10 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 11 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 12 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 13 | View.SYSTEM_UI_FLAG_FULLSCREEN 14 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 15 ); 16 } 17 }
見證奇蹟:小夥伴必定會發現,這個一下拉就能夠把系統導航欄弄出來,又不影響體驗,又沒影響美觀,這也是真正的沉浸式體驗。
額,喜歡的小夥伴,就動動你的小手點個贊吧,咱們在碼農之餘,美女仍是不可少矣!
轉載的小夥伴請在醒目位置附上本文連接:http://www.cnblogs.com/liushilin/p/5799381.html