Merge "Fix bug 5623642 - Status bar background incompatible with some legacy apps" into ics-mr1
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
|
||||||
|
|
||||||
|
<item android:state_pressed="true" android:drawable="@drawable/notification_item_background_color_pressed" />
|
||||||
|
<item android:state_pressed="false" android:drawable="@drawable/notification_item_background_legacy_color" />
|
||||||
|
</selector>
|
||||||
@@ -30,4 +30,5 @@
|
|||||||
<drawable name="notification_tracking_bg">#d8000000</drawable>
|
<drawable name="notification_tracking_bg">#d8000000</drawable>
|
||||||
<color name="notification_list_shadow_top">#80000000</color>
|
<color name="notification_list_shadow_top">#80000000</color>
|
||||||
<drawable name="recents_callout_line">#99ffffff</drawable>
|
<drawable name="recents_callout_line">#99ffffff</drawable>
|
||||||
|
<drawable name="notification_item_background_legacy_color">#ffaaaaaa</drawable>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -28,11 +28,14 @@ import android.content.BroadcastReceiver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@@ -775,6 +778,8 @@ public class PhoneStatusBar extends StatusBar {
|
|||||||
row.setDrawingCacheEnabled(true);
|
row.setDrawingCacheEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyLegacyRowBackground(notification, content);
|
||||||
|
|
||||||
return new View[] { row, content, expanded };
|
return new View[] { row, content, expanded };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -948,6 +953,8 @@ public class PhoneStatusBar extends StatusBar {
|
|||||||
row.setDrawingCacheEnabled(true);
|
row.setDrawingCacheEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyLegacyRowBackground(sbn, content);
|
||||||
|
|
||||||
entry.row = row;
|
entry.row = row;
|
||||||
entry.content = content;
|
entry.content = content;
|
||||||
entry.expanded = expanded;
|
entry.expanded = expanded;
|
||||||
@@ -956,6 +963,24 @@ public class PhoneStatusBar extends StatusBar {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void applyLegacyRowBackground(StatusBarNotification sbn, View content) {
|
||||||
|
if (sbn.notification.contentView.getLayoutId() !=
|
||||||
|
com.android.internal.R.layout.status_bar_latest_event_content) {
|
||||||
|
int version = 0;
|
||||||
|
try {
|
||||||
|
ApplicationInfo info = mContext.getPackageManager().getApplicationInfo(sbn.pkg, 0);
|
||||||
|
version = info.targetSdkVersion;
|
||||||
|
} catch (NameNotFoundException ex) {
|
||||||
|
Slog.e(TAG, "Failed looking up ApplicationInfo for " + sbn.pkg, ex);
|
||||||
|
}
|
||||||
|
if (version > 0 && version < Build.VERSION_CODES.HONEYCOMB) {
|
||||||
|
content.setBackgroundResource(R.drawable.notification_row_legacy_bg);
|
||||||
|
} else {
|
||||||
|
content.setBackgroundResource(R.drawable.notification_row_bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
StatusBarNotification removeNotificationViews(IBinder key) {
|
StatusBarNotification removeNotificationViews(IBinder key) {
|
||||||
NotificationData.Entry entry = mNotificationData.remove(key);
|
NotificationData.Entry entry = mNotificationData.remove(key);
|
||||||
if (entry == null) {
|
if (entry == null) {
|
||||||
|
|||||||
@@ -32,13 +32,17 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.inputmethodservice.InputMethodService;
|
import android.inputmethodservice.InputMethodService;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LayerDrawable;
|
import android.graphics.drawable.LayerDrawable;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@@ -1742,8 +1746,10 @@ public class TabletStatusBar extends StatusBar implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
void workAroundBadLayerDrawableOpacity(View v) {
|
void workAroundBadLayerDrawableOpacity(View v) {
|
||||||
LayerDrawable d = (LayerDrawable)v.getBackground();
|
Drawable bgd = v.getBackground();
|
||||||
if (d == null) return;
|
if (!(bgd instanceof LayerDrawable)) return;
|
||||||
|
|
||||||
|
LayerDrawable d = (LayerDrawable) bgd;
|
||||||
v.setBackgroundDrawable(null);
|
v.setBackgroundDrawable(null);
|
||||||
d.setOpacity(PixelFormat.TRANSLUCENT);
|
d.setOpacity(PixelFormat.TRANSLUCENT);
|
||||||
v.setBackgroundDrawable(d);
|
v.setBackgroundDrawable(d);
|
||||||
@@ -1809,6 +1815,8 @@ public class TabletStatusBar extends StatusBar implements
|
|||||||
row.setDrawingCacheEnabled(true);
|
row.setDrawingCacheEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyLegacyRowBackground(sbn, content);
|
||||||
|
|
||||||
entry.row = row;
|
entry.row = row;
|
||||||
entry.content = content;
|
entry.content = content;
|
||||||
entry.expanded = expanded;
|
entry.expanded = expanded;
|
||||||
@@ -1817,6 +1825,24 @@ public class TabletStatusBar extends StatusBar implements
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void applyLegacyRowBackground(StatusBarNotification sbn, View content) {
|
||||||
|
if (sbn.notification.contentView.getLayoutId() !=
|
||||||
|
com.android.internal.R.layout.status_bar_latest_event_content) {
|
||||||
|
int version = 0;
|
||||||
|
try {
|
||||||
|
ApplicationInfo info = mContext.getPackageManager().getApplicationInfo(sbn.pkg, 0);
|
||||||
|
version = info.targetSdkVersion;
|
||||||
|
} catch (NameNotFoundException ex) {
|
||||||
|
Slog.e(TAG, "Failed looking up ApplicationInfo for " + sbn.pkg, ex);
|
||||||
|
}
|
||||||
|
if (version > 0 && version < Build.VERSION_CODES.HONEYCOMB) {
|
||||||
|
content.setBackgroundResource(R.drawable.notification_row_legacy_bg);
|
||||||
|
} else {
|
||||||
|
content.setBackgroundResource(R.drawable.notification_row_bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void clearAll() {
|
public void clearAll() {
|
||||||
try {
|
try {
|
||||||
mBarService.onClearAllNotifications();
|
mBarService.onClearAllNotifications();
|
||||||
|
|||||||
Reference in New Issue
Block a user