こんにちはKID.Aです。
Kitkatがリリースされてからもう1カ月近くたってますね。
ラボではあまりKitkatのネタを紹介していないので、これから少しずつ紹介できたらいいと思います。それではAndroid 4.4から追加されたAPIの紹介をしていきます。
フルスクリーンの説明
今まで、下記のようなシステムバーとナビゲーションバー(赤丸箇所)をSYSTEM_UI_FLAG_HIDE_NAVIGATIONとSYSTEM_UI_FLAG_FULLSCREENを使って隠すことはできました。
下記の画像はSYSTEM_UI_FLAG_HIDE_NAVIGATIONとSYSTEM_UI_FLAG_FULLSCREENを使用した場合です。
しかし、1点でもタップすると、すぐにシステムバーとナビゲーションバーが再表示されてしました。
それが、タッチされても再表示しないAPIが追加されました。これで全画面のアプリが作れるようになりました。
immersive full-screen mode
KitkatからSYSTEM_UI_FLAG_IMMERSIVEという定数が追加になりました。これを使用することで、タップしてもシステムバーとナビゲーションバーが表示せずにタッチイベントを受け取れるようになりました。ユーザは画面の内側からスワイプして、システムバーとナビゲーションバーを再表示できます。一度再表示なったシステムバーとナビゲーションバーは再度、非表示になることはありません。
一定時間経過した場合に、非表示にするにはSYSTEM_UI_FLAG_IMMERSIVE_STICKYを使用します。
実装
実装と挙動に関してみていきます。
- SYSTEM_UI_FLAG_IMMERSIVE
View decor = this.getWindow().getDecorView(); decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE);
(挙動)
(赤字の部分をスワイプする以外の操作では再表示されない)
- SYSTEM_UI_FLAG_IMMERSIVE_STICKY
View decor = this.getWindow().getDecorView(); decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
(挙動)
一定時間経過
これでフルスクリーンで動くアプリを作れるようになりますので、画面いっぱいにコンテンツを表示した場合はぜひとも利用して下さい。