From e7a6ab4fd835d768fc1c3e374681bfdd37e981c5 Mon Sep 17 00:00:00 2001 From: Roman Nurik Date: Mon, 28 Oct 2013 11:00:57 -0400 Subject: [PATCH] Add Android 4.4 Immersive Mode DevByte sample code. Change-Id: I3515e2742a4b8285f7e3f7c214af1d43dde605a0 --- .../devbytes/ui/ImmersiveMode/build.gradle | 39 ++++++ .../src/main/AndroidManifest.xml | 50 ++++++++ .../android/immersive/ImmersiveActivity.java | 117 ++++++++++++++++++ .../immersive/ImmersiveStickyActivity.java | 49 ++++++++ .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11345 bytes .../ic_launcher_translucent_actionbar.png | Bin 0 -> 3624 bytes .../main/res/layout/immersive_activity.xml | 50 ++++++++ .../res/layout/immersive_sticky_activity.xml | 23 ++++ .../src/main/res/layout/include_content.xml | 31 +++++ .../src/main/res/values/colors.xml | 20 +++ .../src/main/res/values/strings.xml | 22 ++++ .../src/main/res/values/styles.xml | 36 ++++++ 12 files changed, 437 insertions(+) create mode 100644 samples/devbytes/ui/ImmersiveMode/build.gradle create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/AndroidManifest.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveActivity.java create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveStickyActivity.java create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher.png create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher_translucent_actionbar.png create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/layout/immersive_activity.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/layout/immersive_sticky_activity.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/layout/include_content.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/values/colors.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/values/strings.xml create mode 100644 samples/devbytes/ui/ImmersiveMode/src/main/res/values/styles.xml diff --git a/samples/devbytes/ui/ImmersiveMode/build.gradle b/samples/devbytes/ui/ImmersiveMode/build.gradle new file mode 100644 index 000000000..da6ff3598 --- /dev/null +++ b/samples/devbytes/ui/ImmersiveMode/build.gradle @@ -0,0 +1,39 @@ +/* + * Copyright 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:0.6.+' + } +} +apply plugin: 'android' + +repositories { + mavenCentral() +} + +android { + compileSdkVersion 19 + buildToolsVersion "18.0.1" + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 19 + } +} diff --git a/samples/devbytes/ui/ImmersiveMode/src/main/AndroidManifest.xml b/samples/devbytes/ui/ImmersiveMode/src/main/AndroidManifest.xml new file mode 100644 index 000000000..b4a35321f --- /dev/null +++ b/samples/devbytes/ui/ImmersiveMode/src/main/AndroidManifest.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveActivity.java b/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveActivity.java new file mode 100644 index 000000000..8fdde0853 --- /dev/null +++ b/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveActivity.java @@ -0,0 +1,117 @@ +/* + * Copyright 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.immersive; + +import android.app.Activity; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +public class ImmersiveActivity extends Activity { + private static final int INITIAL_HIDE_DELAY = 300; + + private View mDecorView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.immersive_activity); + + final View controlsView = findViewById(R.id.fullscreen_content_controls); + final View contentView = findViewById(R.id.fullscreen_content); + + mDecorView = getWindow().getDecorView(); + mDecorView.setOnSystemUiVisibilityChangeListener( + new View.OnSystemUiVisibilityChangeListener() { + @Override + public void onSystemUiVisibilityChange(int flags) { + boolean visible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; + controlsView.animate() + .alpha(visible ? 1 : 0) + .translationY(visible ? 0 : controlsView.getHeight()); + } + }); + contentView.setClickable(true); + final GestureDetector clickDetector = new GestureDetector(this, + new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onSingleTapUp(MotionEvent e) { + boolean visible = (mDecorView.getSystemUiVisibility() + & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; + if (visible) { + hideSystemUI(); + } else { + showSystemUI(); + } + return true; + } + }); + contentView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + return clickDetector.onTouchEvent(motionEvent); + } + }); + + showSystemUI(); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + + // When the window loses focus (e.g. the action overflow is shown), + // cancel any pending hide action. When the window gains focus, + // hide the system UI. + if (hasFocus) { + delayedHide(INITIAL_HIDE_DELAY); + } else { + mHideHandler.removeMessages(0); + } + } + + private void hideSystemUI() { + mDecorView.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_LOW_PROFILE + | View.SYSTEM_UI_FLAG_IMMERSIVE); + } + + private void showSystemUI() { + mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); + } + + private final Handler mHideHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + hideSystemUI(); + } + }; + + private void delayedHide(int delayMillis) { + mHideHandler.removeMessages(0); + mHideHandler.sendEmptyMessageDelayed(0, delayMillis); + } +} diff --git a/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveStickyActivity.java b/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveStickyActivity.java new file mode 100644 index 000000000..d6dfd3695 --- /dev/null +++ b/samples/devbytes/ui/ImmersiveMode/src/main/java/com/example/android/immersive/ImmersiveStickyActivity.java @@ -0,0 +1,49 @@ +/* + * Copyright 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.immersive; + +import android.app.Activity; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +public class ImmersiveStickyActivity extends Activity { + private View mDecorView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.immersive_sticky_activity); + mDecorView = getWindow().getDecorView(); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus) { + mDecorView.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); + } + } +} diff --git a/samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher.png b/samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f47fc320315ea5670634f359821e34485ae458c4 GIT binary patch literal 11345 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 TnW@Cr00000NkvXXu0mjf*0-ML literal 0 HcmV?d00001 diff --git a/samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher_translucent_actionbar.png b/samples/devbytes/ui/ImmersiveMode/src/main/res/drawable-xxhdpi/ic_launcher_translucent_actionbar.png new file mode 100644 index 0000000000000000000000000000000000000000..bf344ad8638202051930a5c2aa07af737d29a9f1 GIT binary patch literal 3624 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 z + + + + + + + + + + +