diff --git a/packages/SystemUI/res/drawable/notification_row_legacy_bg.xml b/packages/SystemUI/res/drawable/notification_row_legacy_bg.xml new file mode 100644 index 0000000000000..ce3372ee0f9b0 --- /dev/null +++ b/packages/SystemUI/res/drawable/notification_row_legacy_bg.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index ff67a7eac6c1f..3a2ea65937ee1 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -30,4 +30,5 @@ #d8000000 #80000000 #99ffffff + #ffaaaaaa 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 b0554d0278bca..f0093d33040a6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -28,11 +28,14 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.Configuration; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.Handler; @@ -775,6 +778,8 @@ public class PhoneStatusBar extends StatusBar { row.setDrawingCacheEnabled(true); } + applyLegacyRowBackground(notification, content); + return new View[] { row, content, expanded }; } @@ -948,6 +953,8 @@ public class PhoneStatusBar extends StatusBar { row.setDrawingCacheEnabled(true); } + applyLegacyRowBackground(sbn, content); + entry.row = row; entry.content = content; entry.expanded = expanded; @@ -956,6 +963,24 @@ public class PhoneStatusBar extends StatusBar { 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) { NotificationData.Entry entry = mNotificationData.remove(key); if (entry == null) { 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 5c691aacf9e53..01406bc2bd3e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -32,13 +32,17 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.content.res.Resources; import android.inputmethodservice.InputMethodService; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; +import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Message; @@ -1742,8 +1746,10 @@ public class TabletStatusBar extends StatusBar implements } void workAroundBadLayerDrawableOpacity(View v) { - LayerDrawable d = (LayerDrawable)v.getBackground(); - if (d == null) return; + Drawable bgd = v.getBackground(); + if (!(bgd instanceof LayerDrawable)) return; + + LayerDrawable d = (LayerDrawable) bgd; v.setBackgroundDrawable(null); d.setOpacity(PixelFormat.TRANSLUCENT); v.setBackgroundDrawable(d); @@ -1809,6 +1815,8 @@ public class TabletStatusBar extends StatusBar implements row.setDrawingCacheEnabled(true); } + applyLegacyRowBackground(sbn, content); + entry.row = row; entry.content = content; entry.expanded = expanded; @@ -1817,6 +1825,24 @@ public class TabletStatusBar extends StatusBar implements 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() { try { mBarService.onClearAllNotifications();