diff --git a/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png b/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png
new file mode 100644
index 0000000000000..d1d32a470f0b0
Binary files /dev/null and b/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png differ
diff --git a/packages/SystemUI/res/drawable/compat_mode_help_diagram.png b/packages/SystemUI/res/drawable/compat_mode_help_diagram.png
new file mode 100644
index 0000000000000..e2122313bc55e
Binary files /dev/null and b/packages/SystemUI/res/drawable/compat_mode_help_diagram.png differ
diff --git a/packages/SystemUI/res/drawable/compat_mode_help_icon.png b/packages/SystemUI/res/drawable/compat_mode_help_icon.png
new file mode 100644
index 0000000000000..03bbef9c06a28
Binary files /dev/null and b/packages/SystemUI/res/drawable/compat_mode_help_icon.png differ
diff --git a/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml b/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml
new file mode 100644
index 0000000000000..df3c5a3a402d6
--- /dev/null
+++ b/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 973a4b2849ed5..8945da5828d94 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -150,4 +150,10 @@
Stretch to fill screen
+
+
+ Compatibility Zoom
+
+
+ When an app was designed for a smaller screen, a zoom control will appear by the clock.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java
index 05eafe866955c..83e8c96f8064b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java
@@ -26,6 +26,8 @@ public class Prefs {
public static final String DO_NOT_DISTURB_PREF = "do_not_disturb";
public static final boolean DO_NOT_DISTURB_DEFAULT = false;
+ public static final String SHOWN_COMPAT_MODE_HELP = "shown_compat_mode_help";
+
public static SharedPreferences read(Context context) {
return context.getSharedPreferences(Prefs.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 412cfc7944c12..eef440c59c9c3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import android.animation.LayoutTransition;
import android.animation.ObjectAnimator;
import android.app.ActivityManagerNative;
+import android.app.Dialog;
import android.app.PendingIntent;
import android.app.Notification;
import android.app.StatusBarManager;
@@ -35,6 +36,7 @@ import android.inputmethodservice.InputMethodService;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.LayerDrawable;
+import android.provider.Settings;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -1005,8 +1007,43 @@ public class TabletStatusBar extends StatusBar implements
// See above re: lights-out policy for legacy apps.
if (windowVisible) setLightsOn(true);
- // XXX: this is broken: http://b/4603422
mCompatModeButton.refresh();
+ if (mCompatModeButton.getVisibility() == View.VISIBLE) {
+ if (! Prefs.read(mContext).getBoolean(Prefs.SHOWN_COMPAT_MODE_HELP, false)) {
+ showCompatibilityHelp();
+ }
+ }
+ }
+
+ private void showCompatibilityHelp() {
+ final View dlg = View.inflate(mContext, R.layout.compat_mode_help, null);
+ View button = dlg.findViewById(R.id.button);
+
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ WindowManagerImpl.getDefault().removeView(dlg);
+ }
+ });
+
+ WindowManager.LayoutParams lp = mNotificationPanelParams = new WindowManager.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG,
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
+ | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
+ | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
+ PixelFormat.TRANSLUCENT);
+ lp.setTitle("CompatibilityModeDialog");
+ lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED
+ | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
+ lp.windowAnimations = com.android.internal.R.style.Animation_ZoomButtons; // simple fade
+
+ WindowManagerImpl.getDefault().addView(dlg, lp);
+
+ SharedPreferences.Editor editor = Prefs.edit(mContext);
+ editor.putBoolean(Prefs.SHOWN_COMPAT_MODE_HELP, true);
+ editor.apply();
}
public void setImeWindowStatus(IBinder token, int vis, int backDisposition) {