diff options
43 files changed, 388 insertions, 191 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 4fe9cef..a8ed132 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1442,9 +1442,10 @@ public class ActivityManager { public int getLauncherLargeIconDensity() { final Resources res = mContext.getResources(); final int density = res.getDisplayMetrics().densityDpi; + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return density; } @@ -1458,7 +1459,9 @@ public class ActivityManager { case DisplayMetrics.DENSITY_XHIGH: return DisplayMetrics.DENSITY_MEDIUM * 2; default: - return density; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(density*1.5f); } } @@ -1471,9 +1474,10 @@ public class ActivityManager { public int getLauncherLargeIconSize() { final Resources res = mContext.getResources(); final int size = res.getDimensionPixelSize(android.R.dimen.app_icon_size); + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return size; } @@ -1489,7 +1493,9 @@ public class ActivityManager { case DisplayMetrics.DENSITY_XHIGH: return (size * DisplayMetrics.DENSITY_MEDIUM * 2) / DisplayMetrics.DENSITY_XHIGH; default: - return size; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(size*1.5f); } } diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java index 5b8addf..dd9f337 100644 --- a/core/java/android/app/StatusBarManager.java +++ b/core/java/android/app/StatusBarManager.java @@ -56,6 +56,11 @@ public class StatusBarManager { | DISABLE_NOTIFICATION_ALERTS | DISABLE_NOTIFICATION_TICKER | DISABLE_SYSTEM_INFO | DISABLE_RECENT | DISABLE_HOME | DISABLE_BACK | DISABLE_CLOCK; + public static final int NAVIGATION_HINT_BACK_NOP = 1 << 0; + public static final int NAVIGATION_HINT_HOME_NOP = 1 << 1; + public static final int NAVIGATION_HINT_RECENT_NOP = 1 << 2; + public static final int NAVIGATION_HINT_BACK_ALT = 1 << 3; + private Context mContext; private IStatusBarService mService; private IBinder mToken = new Binder(); diff --git a/data/fonts/DroidSansFallback.ttf b/data/fonts/DroidSansFallback.ttf Binary files differindex ff97670..cfbc66a 100644 --- a/data/fonts/DroidSansFallback.ttf +++ b/data/fonts/DroidSansFallback.ttf diff --git a/data/fonts/DroidSansFallbackFull.ttf b/data/fonts/DroidSansFallbackFull.ttf Binary files differindex 03ceae5..0cacabe 100644 --- a/data/fonts/DroidSansFallbackFull.ttf +++ b/data/fonts/DroidSansFallbackFull.ttf diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index ba8dc5e..62d18ae 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -834,12 +834,6 @@ applications</span> <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/widget_design.html"> <span class="en">App Widget Design</span> </a></li> - <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/activity_task_design.html"> - <span class="en">Activity and Task Design</span> - </a></li> - <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/menu_design.html"> - <span class="en">Menu Design</span> - </a></li> </ul> </li> </ul> diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd index f8ca3f8..8e4528e 100644 --- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd +++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd @@ -3,6 +3,43 @@ parent.title=UI Guidelines parent.link=index.html @jd:body + + + +<div id="deprecatedSticker"> + <a href="#" + onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false"> + <strong>This doc is deprecated</strong></a> +</div> + + +<div id="naMessage" style="display:block"> +<div><p><strong>This document has been deprecated.</strong></p> + <p>For information about designing an activity structure and navigation, read the design guidelines +for <a href="{@docRoot}design/patterns/app-structure.html">App Structure</a> and +<a href="{@docRoot}design/patterns/navigation.html">Navigation</a>, or the developer guide +about <a +href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>.</p> + + <input style="margin-top:1em;padding:5px" type="button" + value="That's nice, but I still want to read this document" +onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" /> +</div> +</div> + + + + + + + + + + + + + + <div id="qv-wrapper"> <div id="qv"> diff --git a/docs/html/guide/practices/ui_guidelines/index.jd b/docs/html/guide/practices/ui_guidelines/index.jd index 3255275..24fb855 100644 --- a/docs/html/guide/practices/ui_guidelines/index.jd +++ b/docs/html/guide/practices/ui_guidelines/index.jd @@ -39,26 +39,6 @@ at a glance, on a user's Home screen. These design guidelines describe how to design widgets that fit with others on the Home screen. They include links to graphics files and templates that will make your designer's life easier.</dd> </dl> - <dl> - <dt><a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html">Activity and Task Design Guidelines</a> </dt> - <dd>Activities are the basic, independent building blocks of applications. - As you design your application's UI and feature set, you are free to - re-use activities from other applications as if they were yours, - to enrich and extend your application. These guidelines - describe how activities work, illustrates them with examples, and - describes important underlying principles and mechanisms, such as - multitasking, activity reuse, intents, the activity stack, and - tasks. It covers this all from a high-level design perspective. -</dd> - <dt><a href="{@docRoot}guide/practices/ui_guidelines/menu_design.html">Menu Design Guidelines</a> </dt> - <dd>Android applications make use of Option menus and Context menus - that enable users to perform operations and navigate to other parts - of your application or to other applications. These guidelines describe - the difference between Options anontext menus, how to arrange - menu items, when to put commands on-screen, and other details about - menu design. -</dd> -</dl> diff --git a/docs/html/guide/practices/ui_guidelines/menu_design.jd b/docs/html/guide/practices/ui_guidelines/menu_design.jd index 7576b6c..b4e2ea7 100644 --- a/docs/html/guide/practices/ui_guidelines/menu_design.jd +++ b/docs/html/guide/practices/ui_guidelines/menu_design.jd @@ -2,7 +2,38 @@ page.title=Menu Design Guidelines parent.title=UI Guidelines parent.link=index.html @jd:body + + + + +<div id="deprecatedSticker"> + <a href="#" + onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false"> + <strong>This doc is deprecated</strong></a> +</div> + + +<div id="naMessage" style="display:block"> +<div><p><strong>This document has been deprecated.</strong></p> + <p>For design guidelines about adding user actions and other options, read the design guidelines +for <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a> or the developer guide about +<a href="{@docRoot}guide/topics/ui/menus.html">Menus</a>.</p> + + <input style="margin-top:1em;padding:5px" type="button" + value="That's nice, but I still want to read this document" +onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" /> +</div> +</div> + + + + + + + + + <div id="qv-wrapper"> <div id="qv"> diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt index 182e958..3f65999 100644 --- a/docs/html/sitemap.txt +++ b/docs/html/sitemap.txt @@ -160,8 +160,6 @@ http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html http://developer.android.com/guide/practices/ui_guidelines/icon_design_dialog.html http://developer.android.com/guide/practices/ui_guidelines/icon_design_list.html http://developer.android.com/guide/practices/ui_guidelines/widget_design.html -http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html -http://developer.android.com/guide/practices/ui_guidelines/menu_design.html http://developer.android.com/guide/practices/design/performance.html http://developer.android.com/guide/practices/design/responsiveness.html http://developer.android.com/guide/practices/design/seamlessness.html diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime.png Binary files differindex 3071fb3..3071fb3 100644 --- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 4757125..0000000 --- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime.png Binary files differindex 72b5ffe..72b5ffe 100644 --- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 0cd05a3..0000000 --- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_default.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime.png Binary files differindex 7f05602..7f05602 100644 --- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_default.png +++ b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime.png diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png Binary files differdeleted file mode 100644 index 3e59c8d..0000000 --- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_back_ime_pressed.png +++ /dev/null diff --git a/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml b/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml deleted file mode 100644 index 248496d..0000000 --- a/packages/SystemUI/res/drawable/ic_sysbar_back_ime.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2008 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_pressed="true" android:drawable="@drawable/ic_sysbar_back_ime_pressed" /> - <item android:drawable="@drawable/ic_sysbar_back_ime_default" /> -</selector> - diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar.xml b/packages/SystemUI/res/layout-sw600dp/status_bar.xml index b96c357..2308bf0 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar.xml @@ -54,7 +54,7 @@ android:clipToPadding="false" > <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" @@ -62,7 +62,7 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_home" systemui:keyCode="3" @@ -70,14 +70,14 @@ systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_recent" android:contentDescription="@string/accessibility_recent" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" - android:layout_width="80dip" + android:layout_width="@dimen/navigation_menu_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml index 111f9a4..8e231d0 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar_recent_panel.xml @@ -32,7 +32,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentBottom="true" - android:paddingBottom="@*android:dimen/status_bar_height" + android:layout_marginBottom="@*android:dimen/status_bar_height" android:clipToPadding="false" android:clipChildren="false"> @@ -69,13 +69,12 @@ </FrameLayout> - <View android:id="@+id/recents_dismiss_button" - android:layout_width="80px" + <com.android.systemui.recent.StatusBarTouchProxy + android:id="@+id/status_bar_touch_proxy" + android:layout_width="match_parent" android:layout_height="@*android:dimen/status_bar_height" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" - android:background="@drawable/ic_sysbar_back_ime" - android:contentDescription="@string/status_bar_accessibility_dismiss_recents" /> diff --git a/packages/SystemUI/res/layout/navigation_bar.xml b/packages/SystemUI/res/layout/navigation_bar.xml index d19fd81..ef2996e 100644 --- a/packages/SystemUI/res/layout/navigation_bar.xml +++ b/packages/SystemUI/res/layout/navigation_bar.xml @@ -49,7 +49,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_back" systemui:keyCode="4" @@ -64,7 +64,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/home" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_home" systemui:keyCode="3" @@ -80,7 +80,7 @@ android:visibility="invisible" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/recent_apps" - android:layout_width="80dp" + android:layout_width="@dimen/navigation_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_recent" android:layout_weight="0" @@ -88,7 +88,7 @@ android:contentDescription="@string/accessibility_recent" /> <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu" - android:layout_width="40dp" + android:layout_width="@dimen/navigation_menu_key_width" android:layout_height="match_parent" android:src="@drawable/ic_sysbar_menu" systemui:keyCode="82" diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 9fc2256..447229d 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -25,11 +25,11 @@ <string name="status_bar_please_disturb_button" msgid="3345398298841572813">"Benachrichtigungen zeigen"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Aus Liste entfernen"</string> <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"App-Info"</string> - <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Keine kürzlich geöffneten Apps"</string> - <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Kürzlich geöffnete Apps schließen"</string> + <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Keine neuen Apps"</string> + <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Kürzlich verwendete Apps schließen"</string> <plurals name="status_bar_accessibility_recent_apps"> - <item quantity="one" msgid="5854176083865845541">"1 kürzlich geöffnete App"</item> - <item quantity="other" msgid="1040784359794890744">"%d kürzlich geöffnete Apps"</item> + <item quantity="one" msgid="5854176083865845541">"1 kürzlich verwendete App"</item> + <item quantity="other" msgid="1040784359794890744">"%d kürzlich verwendete Apps"</item> </plurals> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Keine Benachrichtigungen"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Aktuell"</string> @@ -76,7 +76,7 @@ <string name="accessibility_back" msgid="567011538994429120">"Zurück"</string> <string name="accessibility_home" msgid="8217216074895377641">"Startbildschirm"</string> <string name="accessibility_menu" msgid="316839303324695949">"Menü"</string> - <string name="accessibility_recent" msgid="8571350598987952883">"Kürzlich geöffnete Apps"</string> + <string name="accessibility_recent" msgid="8571350598987952883">"Kürzlich verwendete Apps"</string> <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"Schaltfläche zum Ändern der Eingabemethode"</string> <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"Schaltfläche für Kompatibilitätszoom"</string> <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"Zoom auf einen größeren Bildschirm"</string> @@ -133,7 +133,7 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"4G-Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Mobile Daten deaktiviert"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Daten deaktiviert"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Sie haben die angegebenen Grenze für den Datenverbrauch erreicht."\n\n"Wenn Sie die Datennutzung erneut aktivieren, berechnet Ihr Mobilfunkanbieter unter Umständen zusätzliche Gebühren."</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Sie haben die angegebenen Grenze für die Datennutzung erreicht."\n\n"Wenn Sie die Datennutzung erneut aktivieren, berechnet Ihr Mobilfunkanbieter unter Umständen zusätzliche Gebühren."</string> <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Daten erneut aktivieren"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Keine Internetverbindung"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"WLAN verbunden"</string> diff --git a/packages/SystemUI/res/values-es-rUS-large/strings.xml b/packages/SystemUI/res/values-es-rUS-large/strings.xml index dd44b28..3f96e87 100644 --- a/packages/SystemUI/res/values-es-rUS-large/strings.xml +++ b/packages/SystemUI/res/values-es-rUS-large/strings.xml @@ -19,7 +19,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Eliminar todas"</string> + <string name="status_bar_clear_all_button" msgid="4661583896803349732">"Borrar todas"</string> <string name="notifications_off_title" msgid="1860117696034775851">"Notificaciones desactivadas"</string> <string name="notifications_off_text" msgid="1439152806320786912">"Toca aquí para volver a activar las notificaciones."</string> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 6b342e2..66f43df 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7164937344850004466">"IU del sistema"</string> - <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Eliminar"</string> + <string name="status_bar_clear_all_button" msgid="7774721344716731603">"Borrar"</string> <string name="status_bar_do_not_disturb_button" msgid="5812628897510997853">"No molestar"</string> <string name="status_bar_please_disturb_button" msgid="3345398298841572813">"Mostrar notificaciones"</string> <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Eliminar de la lista"</string> @@ -122,7 +122,7 @@ <skip /> <string name="accessibility_settings_button" msgid="799583911231893380">"Configuración del sistema"</string> <string name="accessibility_notifications_button" msgid="4498000369779421892">"Notificaciones"</string> - <string name="accessibility_remove_notification" msgid="3603099514902182350">"Eliminar notificación"</string> + <string name="accessibility_remove_notification" msgid="3603099514902182350">"Borrar notificación"</string> <string name="accessibility_gps_enabled" msgid="3511469499240123019">"GPS habilitado"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"Adquisición de GPS"</string> <string name="accessibility_tty_enabled" msgid="4613200365379426561">"TeleTypewriter habilitado"</string> @@ -133,11 +133,11 @@ <string name="data_usage_disabled_dialog_4g_title" msgid="4789143363492682629">"Datos de 4G inhabilitados"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="1046047248844821202">"Se inhabilitaron los datos móviles"</string> <string name="data_usage_disabled_dialog_title" msgid="2086815304858964954">"Datos inhabilitados"</string> - <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a activar datos."</string> - <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a activar datos"</string> + <string name="data_usage_disabled_dialog" msgid="3853117269051806280">"Alcanzaste el límite de uso de datos especificado."\n\n"Puede que tu operador te cobre por volver a habilitar datos."</string> + <string name="data_usage_disabled_dialog_enable" msgid="7729772039208664606">"Volver a habilitar datos"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"Sin conexión a Internet"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"Wi-Fi conectado"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"Buscando GPS"</string> <string name="gps_notification_found_text" msgid="4619274244146446464">"La ubicación se estableció por GPS"</string> - <string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string> + <string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 4bbd7c1..772c78d 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -65,7 +65,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Kuvatõmmise salvestamine ..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Kuvatõmmise salvestamine ..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"Kuvatõmmist salvestatakse."</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"Ekraanipilt on jäädvustatud."</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"Kuvatõmmis on jäädvustatud."</string> <string name="screenshot_saved_text" msgid="1152839647677558815">"Puudutage kuvatõmmise vaatamiseks."</string> <string name="screenshot_failed_title" msgid="705781116746922771">"Kuvatõmmist ei saanud jäädvustada."</string> <string name="screenshot_failed_text" msgid="8134011269572415402">"Kuvatõmmist ei saa salvestada. Mäluseade võib olla kasutuses."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 29d2d0d..8c87b26 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -115,7 +115,7 @@ <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"Edge"</string> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"Wi-Fi"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"Sem SIM."</string> - <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string> + <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Vínculo Bluetooth."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião."</string> <!-- String.format failed for translation --> <!-- no translation found for accessibility_battery_level (7451474187113371965) --> diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml index bb5a825..105a30e 100644 --- a/packages/SystemUI/res/values-rm/strings.xml +++ b/packages/SystemUI/res/values-rm/strings.xml @@ -39,10 +39,8 @@ <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Nagins avis"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"Actual"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Avis"</string> - <!-- no translation found for battery_low_title (2783104807551211639) --> - <skip /> - <!-- no translation found for battery_low_subtitle (1752040062087829196) --> - <skip /> + <!-- outdated translation 7923774589611311406 --> <string name="battery_low_title" msgid="2783104807551211639">"Connectar il chargiabattarias"</string> + <!-- outdated translation 7388781709819722764 --> <string name="battery_low_subtitle" msgid="1752040062087829196">"L\'accu è prest vid."</string> <!-- no translation found for battery_low_percent_format (1077244949318261761) --> <skip /> <!-- no translation found for invalid_charger (4549105996740522523) --> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 68ebb3f..44824a0 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -36,7 +36,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Уведомления"</string> <string name="battery_low_title" msgid="2783104807551211639">"Подключите зарядное устройство"</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Батарея разряжена."</string> - <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось <xliff:g id="NUMBER">%d%%</xliff:g>"</string> + <string name="battery_low_percent_format" msgid="1077244949318261761">"Осталось: <xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Зарядка через порт USB не поддерживается."\n"Используйте только зарядное устройство из комплекта поставки."</string> <string name="battery_low_why" msgid="7279169609518386372">"Расход заряда батареи"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index bcef166..8d89dff 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -26,7 +26,7 @@ <string name="status_bar_recent_remove_item_title" msgid="6026395868129852968">"Ondoa kwenye orodha"</string> <string name="status_bar_recent_inspect_item_title" msgid="7793624864528818569">"Taarifa za programu-matumizi"</string> <string name="status_bar_no_recent_apps" msgid="6576392951053994640">"Hakuna programu za sasa"</string> - <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha prog za hivi karibuni"</string> + <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"Ondosha programu za hivi karibuni"</string> <!-- String.format failed for translation --> <!-- no translation found for status_bar_accessibility_recent_apps:other (1040784359794890744) --> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"Hakuna arifa"</string> diff --git a/packages/SystemUI/res/values-sw600dp-port/dimens.xml b/packages/SystemUI/res/values-sw600dp-port/dimens.xml index b8a6cfe..39eade6 100644 --- a/packages/SystemUI/res/values-sw600dp-port/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp-port/dimens.xml @@ -18,5 +18,11 @@ <resources> <!-- gap on either side of status bar notification icons --> <dimen name="status_bar_icon_padding">0dp</dimen> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">70dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml index f522285..ba1cdfa 100644 --- a/packages/SystemUI/res/values-sw600dp/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp/dimens.xml @@ -67,4 +67,10 @@ <!-- opacity at which Notification icons will be drawn in the status bar --> <item type="dimen" name="status_bar_icon_drawing_alpha">100%</item> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-sw720dp/dimens.xml b/packages/SystemUI/res/values-sw720dp/dimens.xml index 6736c1a..b16b1e8 100644 --- a/packages/SystemUI/res/values-sw720dp/dimens.xml +++ b/packages/SystemUI/res/values-sw720dp/dimens.xml @@ -21,5 +21,11 @@ <!-- opacity at which Notification icons will be drawn in the status bar --> <item type="dimen" name="status_bar_icon_drawing_alpha">100%</item> + + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">80dip</dimen> </resources> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 55f378f..614d599 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -36,7 +36,7 @@ <string name="status_bar_latest_events_title" msgid="6594767438577593172">"Izaziso"</string> <string name="battery_low_title" msgid="2783104807551211639">"Xhuma ishaja."</string> <string name="battery_low_subtitle" msgid="1752040062087829196">"Ibhetri iya ngokuphela."</string> - <string name="battery_low_percent_format" msgid="1077244949318261761">"<xliff:g id="NUMBER">%d%%</xliff:g> okusele"</string> + <string name="battery_low_percent_format" msgid="1077244949318261761">"okusele okungu-<xliff:g id="NUMBER">%d%%</xliff:g>"</string> <string name="invalid_charger" msgid="4549105996740522523">"Ukushaja i-USB akusekelwe."\n"Sebenzisa kuphela ishaja enikeziwe."</string> <string name="battery_low_why" msgid="7279169609518386372">"Ukusebenzisa ibhetri"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Izilungiselelo"</string> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 8fba86a..2c22e3c 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -91,4 +91,9 @@ <!-- The padding on the global screenshot background image --> <dimen name="global_screenshot_bg_padding">20dp</dimen> + <!-- The width of the view containing non-menu status bar icons --> + <dimen name="navigation_key_width">80dip</dimen> + + <!-- The width of the view containing the menu status bar icon --> + <dimen name="navigation_menu_key_width">40dip</dimen> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java index 8bfd711..4aec22c 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java @@ -68,10 +68,11 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe private View mRecentsScrim; private View mRecentsNoApps; private ViewGroup mRecentsContainer; + private StatusBarTouchProxy mStatusBarTouchProxy; private boolean mShowing; private Choreographer mChoreo; - private View mRecentsDismissButton; + OnRecentsPanelVisibilityChangedListener mVisibilityChangedListener; private RecentTasksLoader mRecentTasksLoader; private ArrayList<TaskDescription> mRecentTaskDescriptions; @@ -81,8 +82,8 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe private int mThumbnailWidth; private boolean mFitThumbnailToXY; - public void setRecentTasksLoader(RecentTasksLoader loader) { - mRecentTasksLoader = loader; + public static interface OnRecentsPanelVisibilityChangedListener { + public void onRecentsPanelVisibilityChanged(boolean visible); } private final class OnLongClickDelegate implements View.OnLongClickListener { @@ -171,15 +172,18 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe return super.onKeyUp(keyCode, event); } - public boolean isInContentArea(int x, int y) { - // use mRecentsContainer's exact bounds to determine horizontal position - final int l = mRecentsContainer.getLeft(); - final int r = mRecentsContainer.getRight(); - final int t = mRecentsContainer.getTop(); - final int b = mRecentsContainer.getBottom(); + private boolean pointInside(int x, int y, View v) { + final int l = v.getLeft(); + final int r = v.getRight(); + final int t = v.getTop(); + final int b = v.getBottom(); return x >= l && x < r && y >= t && y < b; } + public boolean isInContentArea(int x, int y) { + return pointInside(x, y, mRecentsContainer) || pointInside(x, y, mStatusBarTouchProxy); + } + public void show(boolean show, boolean animate) { show(show, animate, null); } @@ -278,7 +282,6 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe public void onAnimationStart(Animator animation) { } - /** * We need to be aligned at the bottom. LinearLayout can't do this, so instead, * let LinearLayout do all the hard work, and then shift everything down to the bottom. @@ -312,6 +315,29 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe public void setBar(StatusBar bar) { mBar = bar; + + } + + public void setStatusBarView(View statusBarView) { + if (mStatusBarTouchProxy != null) { + mStatusBarTouchProxy.setStatusBar(statusBarView); + } + } + + public void setRecentTasksLoader(RecentTasksLoader loader) { + mRecentTasksLoader = loader; + } + + public void setOnVisibilityChangedListener(OnRecentsPanelVisibilityChangedListener l) { + mVisibilityChangedListener = l; + + } + + public void setVisibility(int visibility) { + if (mVisibilityChangedListener != null) { + mVisibilityChangedListener.onRecentsPanelVisibilityChanged(visibility == VISIBLE); + } + super.setVisibility(visibility); } public RecentsPanelView(Context context, AttributeSet attrs) { @@ -335,6 +361,7 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe super.onFinishInflate(); mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mRecentsContainer = (ViewGroup) findViewById(R.id.recents_container); + mStatusBarTouchProxy = (StatusBarTouchProxy) findViewById(R.id.status_bar_touch_proxy); mListAdapter = new TaskDescriptionAdapter(mContext); if (mRecentsContainer instanceof RecentsHorizontalScrollView){ RecentsHorizontalScrollView scrollView @@ -355,14 +382,6 @@ public class RecentsPanelView extends RelativeLayout implements OnItemClickListe mRecentsScrim = findViewById(R.id.recents_bg_protect); mRecentsNoApps = findViewById(R.id.recents_no_apps); mChoreo = new Choreographer(this, mRecentsScrim, mRecentsContainer, mRecentsNoApps, this); - mRecentsDismissButton = findViewById(R.id.recents_dismiss_button); - if (mRecentsDismissButton != null) { - mRecentsDismissButton.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - hide(true); - } - }); - } // In order to save space, we make the background texture repeat in the Y direction if (mRecentsScrim != null && mRecentsScrim.getBackground() instanceof BitmapDrawable) { diff --git a/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java b/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java new file mode 100644 index 0000000..ded114f --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/recent/StatusBarTouchProxy.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 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. + */ + +package com.android.systemui.recent; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.widget.FrameLayout; + +public class StatusBarTouchProxy extends FrameLayout { + + private View mStatusBar; + + public StatusBarTouchProxy(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void setStatusBar(View statusBar) { + mStatusBar = statusBar; + } + + public boolean onTouchEvent (MotionEvent event) { + return mStatusBar.dispatchTouchEvent(event); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index bf2d5e8..f8dfa8f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -62,6 +62,8 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_TOGGLE_RECENT_APPS = 11 << MSG_SHIFT; + private static final int MSG_SET_NAVIGATION_ICON_HINTS = 13 << MSG_SHIFT; + private StatusBarIconList mList; private Callbacks mCallbacks; private Handler mHandler = new H(); @@ -90,6 +92,7 @@ public class CommandQueue extends IStatusBar.Stub { public void setImeWindowStatus(IBinder token, int vis, int backDisposition); public void setHardKeyboardStatus(boolean available, boolean enabled); public void toggleRecentApps(); + public void setNavigationIconHints(int hints); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { @@ -196,6 +199,13 @@ public class CommandQueue extends IStatusBar.Stub { } } + public void setNavigationIconHints(int hints) { + synchronized (mList) { + mHandler.removeMessages(MSG_SET_NAVIGATION_ICON_HINTS); + mHandler.obtainMessage(MSG_SET_NAVIGATION_ICON_HINTS, hints, 0, null).sendToTarget(); + } + } + private final class H extends Handler { public void handleMessage(Message msg) { final int what = msg.what & MSG_MASK; @@ -265,6 +275,9 @@ public class CommandQueue extends IStatusBar.Stub { case MSG_TOGGLE_RECENT_APPS: mCallbacks.toggleRecentApps(); break; + case MSG_SET_NAVIGATION_ICON_HINTS: + mCallbacks.setNavigationIconHints(msg.arg1); + break; } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 005d12f..6574c7d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -18,6 +18,8 @@ package com.android.systemui.statusbar.phone; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.app.StatusBarManager; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; @@ -33,6 +35,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.Surface; import android.view.WindowManager; +import android.widget.ImageView; import android.widget.LinearLayout; import java.io.FileDescriptor; @@ -63,6 +66,7 @@ public class NavigationBarView extends LinearLayout { boolean mHidden, mLowProfile, mShowMenu; int mDisabledFlags = 0; + int mNavigationIconHints = 0; // workaround for LayoutTransitions leaving the nav buttons in a weird state (bug 5549288) final static boolean WORKAROUND_INVALID_LAYOUT = true; @@ -143,6 +147,34 @@ public class NavigationBarView extends LinearLayout { } }; + public void setNavigationIconHints(int hints) { + setNavigationIconHints(hints, false); + } + + public void setNavigationIconHints(int hints, boolean force) { + if (!force && hints == mNavigationIconHints) return; + + if (DEBUG) { + android.widget.Toast.makeText(mContext, + "Navigation icon hints = " + hints, + 500).show(); + } + + mNavigationIconHints = hints; + + getBackButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_NOP)) ? 0.5f : 1.0f); + getHomeButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_HOME_NOP)) ? 0.5f : 1.0f); + getRecentsButton().setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); + + ((ImageView)getBackButton()).setImageResource( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) + ? R.drawable.ic_sysbar_back_ime + : R.drawable.ic_sysbar_back); + } + public void setDisabledFlags(int disabledFlags) { setDisabledFlags(disabledFlags, false); } @@ -272,6 +304,8 @@ public class NavigationBarView extends LinearLayout { if (DEBUG) { Slog.d(TAG, "reorient(): rot=" + mDisplay.getRotation()); } + + setNavigationIconHints(mNavigationIconHints, true); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 3c9d12c..5a1e3f4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -32,6 +32,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.Configuration; +import android.inputmethodservice.InputMethodService; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -229,6 +230,8 @@ public class PhoneStatusBar extends StatusBar { DisplayMetrics mDisplayMetrics = new DisplayMetrics(); + private int mNavigationIconHints = 0; + private class ExpandedDialog extends Dialog { ExpandedDialog(Context context) { super(context, com.android.internal.R.style.Theme_Translucent_NoTitleBar); @@ -1541,6 +1544,17 @@ public class PhoneStatusBar extends StatusBar { } @Override // CommandQueue + public void setNavigationIconHints(int hints) { + if (hints == mNavigationIconHints) return; + + mNavigationIconHints = hints; + + if (mNavigationBarView != null) { + mNavigationBarView.setNavigationIconHints(hints); + } + } + + @Override // CommandQueue public void setSystemUiVisibility(int vis) { final int old = mSystemUiVisibility; final int diff = vis ^ old; @@ -1590,8 +1604,16 @@ public class PhoneStatusBar extends StatusBar { if (showMenu) setLightsOn(true); } - // Not supported - public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { } + @Override + public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { + boolean altBack = (backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) + || ((vis & InputMethodService.IME_VISIBLE) != 0); + + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + } + @Override public void setHardKeyboardStatus(boolean available, boolean enabled) { } 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 6913239..09e38ff 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -88,7 +88,8 @@ import com.android.systemui.statusbar.policy.Prefs; public class TabletStatusBar extends StatusBar implements HeightReceiver.OnBarHeightChangedListener, - InputMethodsPanel.OnHardKeyboardEnabledChangeListener { + InputMethodsPanel.OnHardKeyboardEnabledChangeListener, + RecentsPanelView.OnRecentsPanelVisibilityChangedListener { public static final boolean DEBUG = false; public static final boolean DEBUG_COMPAT_HELP = false; public static final String TAG = "TabletStatusBar"; @@ -121,6 +122,8 @@ public class TabletStatusBar extends StatusBar implements int mNaturalBarHeight = -1; int mIconSize = -1; int mIconHPadding = -1; + int mNavIconWidth = -1; + int mMenuNavIconWidth = -1; private int mMaxNotificationIcons = 5; H mHandler = new H(); @@ -143,6 +146,7 @@ public class TabletStatusBar extends StatusBar implements View mHomeButton; View mMenuButton; View mRecentButton; + private boolean mAltBackButtonEnabledForIme; ViewGroup mFeedbackIconArea; // notification icons, IME icon, compat icon InputMethodButton mInputMethodSwitchButton; @@ -193,6 +197,8 @@ public class TabletStatusBar extends StatusBar implements // used to notify status bar for suppressing notification LED private boolean mPanelSlightlyVisible; + private int mNavigationIconHints = 0; + public Context getContext() { return mContext; } protected void addPanelWindows() { @@ -305,12 +311,11 @@ public class TabletStatusBar extends StatusBar implements mRecentsPanel = (RecentsPanelView) View.inflate(context, R.layout.status_bar_recent_panel, null); mRecentsPanel.setVisibility(View.GONE); - mRecentsPanel.setSystemUiVisibility(View.STATUS_BAR_DISABLE_BACK); mRecentsPanel.setOnTouchListener(new TouchOutsideListener(MSG_CLOSE_RECENTS_PANEL, mRecentsPanel)); + mRecentsPanel.setOnVisibilityChangedListener(this); mRecentsPanel.setRecentTasksLoader(mRecentTasksLoader); mRecentTasksLoader.setRecentsPanel(mRecentsPanel); - mStatusBarView.setIgnoreChildren(2, mRecentButton, mRecentsPanel); lp = new WindowManager.LayoutParams( (int) res.getDimension(R.dimen.status_bar_recents_width), @@ -329,6 +334,7 @@ public class TabletStatusBar extends StatusBar implements WindowManagerImpl.getDefault().addView(mRecentsPanel, lp); mRecentsPanel.setBar(this); + mRecentsPanel.setStatusBarView(mStatusBarView); // Input methods Panel mInputMethodsPanel = (InputMethodsPanel) View.inflate(context, @@ -337,7 +343,7 @@ public class TabletStatusBar extends StatusBar implements mInputMethodsPanel.setOnTouchListener(new TouchOutsideListener( MSG_CLOSE_INPUT_METHODS_PANEL, mInputMethodsPanel)); mInputMethodsPanel.setImeSwitchButton(mInputMethodSwitchButton); - mStatusBarView.setIgnoreChildren(3, mInputMethodSwitchButton, mInputMethodsPanel); + mStatusBarView.setIgnoreChildren(2, mInputMethodSwitchButton, mInputMethodsPanel); lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, @@ -360,7 +366,7 @@ public class TabletStatusBar extends StatusBar implements MSG_CLOSE_COMPAT_MODE_PANEL, mCompatModePanel)); mCompatModePanel.setTrigger(mCompatModeButton); mCompatModePanel.setVisibility(View.GONE); - mStatusBarView.setIgnoreChildren(4, mCompatModeButton, mCompatModePanel); + mStatusBarView.setIgnoreChildren(3, mCompatModeButton, mCompatModePanel); lp = new WindowManager.LayoutParams( 250, ViewGroup.LayoutParams.WRAP_CONTENT, @@ -410,6 +416,26 @@ public class TabletStatusBar extends StatusBar implements com.android.internal.R.dimen.system_bar_icon_size); int newIconHPadding = res.getDimensionPixelSize( R.dimen.status_bar_icon_padding); + int newNavIconWidth = res.getDimensionPixelSize(R.dimen.navigation_key_width); + int newMenuNavIconWidth = res.getDimensionPixelSize(R.dimen.navigation_menu_key_width); + + if (mNavigationArea != null && newNavIconWidth != mNavIconWidth) { + mNavIconWidth = newNavIconWidth; + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + mNavIconWidth, ViewGroup.LayoutParams.MATCH_PARENT); + mBackButton.setLayoutParams(lp); + mHomeButton.setLayoutParams(lp); + mRecentButton.setLayoutParams(lp); + } + + if (mNavigationArea != null && newMenuNavIconWidth != mMenuNavIconWidth) { + mMenuNavIconWidth = newMenuNavIconWidth; + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + mMenuNavIconWidth, ViewGroup.LayoutParams.MATCH_PARENT); + mMenuButton.setLayoutParams(lp); + } if (newIconHPadding != mIconHPadding || newIconSize != mIconSize) { // Slog.d(TAG, "size=" + newIconSize + " padding=" + newIconHPadding); @@ -426,6 +452,10 @@ public class TabletStatusBar extends StatusBar implements } } + public View getStatusBarView() { + return mStatusBarView; + } + protected View makeStatusBarView() { final Context context = mContext; @@ -1087,6 +1117,31 @@ public class TabletStatusBar extends StatusBar implements } } + @Override // CommandQueue + public void setNavigationIconHints(int hints) { + if (hints == mNavigationIconHints) return; + + if (DEBUG) { + android.widget.Toast.makeText(mContext, + "Navigation icon hints = " + hints, + 500).show(); + } + + mNavigationIconHints = hints; + + mBackButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_NOP)) ? 0.5f : 1.0f); + mHomeButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_HOME_NOP)) ? 0.5f : 1.0f); + mRecentButton.setAlpha( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_RECENT_NOP)) ? 0.5f : 1.0f); + + mBackButton.setImageResource( + (0 != (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT)) + ? R.drawable.ic_sysbar_back_ime + : R.drawable.ic_sysbar_back); + } + private void notifyUiVisibilityChanged() { try { mWindowManager.statusBarVisibilityChanged(mSystemUiVisibility); @@ -1190,24 +1245,15 @@ public class TabletStatusBar extends StatusBar implements (vis & InputMethodService.IME_ACTIVE) != 0); updateNotificationIcons(); mInputMethodsPanel.setImeToken(token); - int res; - switch (backDisposition) { - case InputMethodService.BACK_DISPOSITION_WILL_NOT_DISMISS: - res = R.drawable.ic_sysbar_back; - break; - case InputMethodService.BACK_DISPOSITION_WILL_DISMISS: - res = R.drawable.ic_sysbar_back_ime; - break; - case InputMethodService.BACK_DISPOSITION_DEFAULT: - default: - if ((vis & InputMethodService.IME_VISIBLE) != 0) { - res = R.drawable.ic_sysbar_back_ime; - } else { - res = R.drawable.ic_sysbar_back; - } - break; - } - mBackButton.setImageResource(res); + + boolean altBack = (backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) + || ((vis & InputMethodService.IME_VISIBLE) != 0); + mAltBackButtonEnabledForIme = altBack; + + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + if (FAKE_SPACE_BAR) { mFakeSpaceBar.setVisibility(((vis & InputMethodService.IME_VISIBLE) != 0) ? View.VISIBLE : View.GONE); @@ -1215,6 +1261,14 @@ public class TabletStatusBar extends StatusBar implements } @Override + public void onRecentsPanelVisibilityChanged(boolean visible) { + boolean altBack = visible || mAltBackButtonEnabledForIme; + mCommandQueue.setNavigationIconHints( + altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT) + : (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT)); + } + + @Override public void setHardKeyboardStatus(boolean available, boolean enabled) { if (DEBUG) { Slog.d(TAG, "Set hard keyboard status: available=" + available diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java index 7d11251..877a40e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarView.java @@ -46,10 +46,11 @@ public class TabletStatusBarView extends FrameLayout { if (TabletStatusBar.DEBUG) { Slog.d(TabletStatusBar.TAG, "TabletStatusBarView intercepting touch event: " + ev); } + // do not close the recents panel here- the intended behavior is that recents is dismissed + // on touch up when clicking on status bar buttons + // TODO: should we be closing the notification panel and input methods panel? mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_NOTIFICATION_PANEL); mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_NOTIFICATION_PANEL); - mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_RECENTS_PANEL); - mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_RECENTS_PANEL); mHandler.removeMessages(TabletStatusBar.MSG_CLOSE_INPUT_METHODS_PANEL); mHandler.sendEmptyMessage(TabletStatusBar.MSG_CLOSE_INPUT_METHODS_PANEL); mHandler.removeMessages(TabletStatusBar.MSG_STOP_TICKER); diff --git a/tools/layoutlib/bridge/resources/bars/action_bar.xml b/tools/layoutlib/bridge/resources/bars/action_bar.xml index 7adc5af..51983f2 100644 --- a/tools/layoutlib/bridge/resources/bars/action_bar.xml +++ b/tools/layoutlib/bridge/resources/bars/action_bar.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> - <include layout="@android:layout/action_bar_home" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content"/> + <ImageView + android:layout_height="wrap_content" + android:layout_width="wrap_content"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> </merge> diff --git a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java index 5df2a21..451edd2 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/Matrix_Delegate.java @@ -474,7 +474,7 @@ public final class Matrix_Delegate { } Matrix_Delegate other = sManager.getDelegate(other_matrix); - if (other == null) { + if (d == null) { return false; } @@ -570,7 +570,7 @@ public final class Matrix_Delegate { } Matrix_Delegate other = sManager.getDelegate(other_matrix); - if (other == null) { + if (d == null) { return false; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java index cd4fbfe..72ed351 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/CustomBar.java @@ -145,14 +145,6 @@ abstract class CustomBar extends LinearLayout { } } - protected void loadIconById(int id, String iconReference) { - ResourceValue value = getResourceValue(iconReference); - if (value != null) { - loadIconById(id, value); - } - } - - protected Drawable loadIcon(int index, ResourceType type, String name) { BridgeContext bridgeContext = (BridgeContext) mContext; RenderResources res = bridgeContext.getRenderResources(); @@ -170,64 +162,34 @@ abstract class CustomBar extends LinearLayout { if (child instanceof ImageView) { ImageView imageView = (ImageView) child; - return loadIcon(imageView, value); - } - - return null; - } - - private Drawable loadIconById(int id, ResourceValue value) { - View child = findViewById(id); - if (child instanceof ImageView) { - ImageView imageView = (ImageView) child; + Drawable drawable = ResourceHelper.getDrawable( + value, (BridgeContext) mContext); + if (drawable != null) { + imageView.setBackgroundDrawable(drawable); + } - return loadIcon(imageView, value); + return drawable; } return null; } - - private Drawable loadIcon(ImageView imageView, ResourceValue value) { - Drawable drawable = ResourceHelper.getDrawable(value, (BridgeContext) mContext); - if (drawable != null) { - imageView.setImageDrawable(drawable); - } - - return drawable; - } - protected TextView setText(int index, String stringReference) { View child = getChildAt(index); if (child instanceof TextView) { TextView textView = (TextView) child; - setText(textView, stringReference); - return textView; - } - - return null; - } - - protected TextView setTextById(int id, String stringReference) { - View child = findViewById(id); - if (child instanceof TextView) { - TextView textView = (TextView) child; - setText(textView, stringReference); + ResourceValue value = getResourceValue(stringReference); + if (value != null) { + textView.setText(value.getValue()); + } else { + textView.setText(stringReference); + } return textView; } return null; } - private void setText(TextView textView, String stringReference) { - ResourceValue value = getResourceValue(stringReference); - if (value != null) { - textView.setText(value.getValue()); - } else { - textView.setText(stringReference); - } - } - protected void setStyle(String themeEntryName) { BridgeContext bridgeContext = (BridgeContext) mContext; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java index 68f5aba..f6edea4 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/FakeActionBar.java @@ -34,7 +34,7 @@ public class FakeActionBar extends CustomBar { // Cannot access the inside items through id because no R.id values have been // created for them. // We do know the order though. - loadIconById(android.R.id.home, icon); + loadIcon(0, icon); mTextView = setText(1, label); setStyle("actionBarStyle"); |
