Merge "One-time-only compatibility mode explanation dialog." into honeycomb-mr2

This commit is contained in:
Daniel Sandler
2011-06-15 06:10:32 -07:00
committed by Android (Google) Code Review
7 changed files with 125 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2011, 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.
*/
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@drawable/compat_mode_help_bg"
>
<TextView
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="160dp"
android:layout_marginTop="80dp"
android:textSize="60sp"
android:maxLines="1"
android:shadowRadius="8"
android:shadowColor="#FF000000"
android:text="@string/compat_mode_help_header"
/>
<ImageView
android:id="@+id/diagram"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="160dp"
android:layout_marginTop="80dp"
android:layout_centerInParent="true"
android:src="@drawable/compat_mode_help_diagram"
/>
<TextView
android:id="@+id/explanation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="80dp"
android:layout_marginRight="240dp"
android:layout_alignLeft="@id/header"
android:layout_alignParentBottom="true"
android:shadowRadius="4"
android:shadowColor="#FF000000"
android:textSize="28sp"
android:text="@string/compat_mode_help_body"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="80dp"
android:layout_alignBottom="@id/explanation"
android:layout_alignParentRight="true"
android:src="@drawable/compat_mode_help_icon"
/>
<Button
android:id="@+id/button"
android:layout_width="208dp"
android:layout_height="48dp"
android:layout_alignLeft="@id/header"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:textSize="28sp"
android:text="@android:string/ok"
/>
</RelativeLayout>

View File

@@ -150,4 +150,10 @@
<!-- Checkbox label for application compatibility mode OFF (normal mode on tablets).
[CHAR LIMIT=25] -->
<string name="compat_mode_off">Stretch to fill screen</string>
<!-- Compatibility mode help screen: header text. [CHAR LIMIT=50] -->
<string name="compat_mode_help_header">Compatibility Zoom</string>
<!-- Compatibility mode help screen: body text. [CHAR LIMIT=150] -->
<string name="compat_mode_help_body">When an app was designed for a smaller screen, a zoom control will appear by the clock.</string>
</resources>

View File

@@ -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);
}

View File

@@ -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) {