diff options
4 files changed, 40 insertions, 8 deletions
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_ticker_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_ticker_panel.xml index 6cd8899..d51f9c8 100644 --- a/packages/SystemUI/res/layout-sw600dp/status_bar_ticker_panel.xml +++ b/packages/SystemUI/res/layout-sw600dp/status_bar_ticker_panel.xml @@ -15,20 +15,29 @@ * limitations under the License. --> -<LinearLayout +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="horizontal" - android:gravity="bottom" > + <View + android:layout_height="@*android:dimen/status_bar_height" + android:layout_width="match_parent" + android:background="@drawable/status_bar_ticker_background" + android:layout_alignParentLeft="true" + android:layout_alignParentBottom="true" + android:clickable="false" + /> + <ImageView android:id="@+id/large_icon" android:layout_width="@android:dimen/notification_large_icon_height" android:layout_height="@android:dimen/notification_large_icon_width" android:scaleType="center" android:visibility="gone" + android:layout_alignParentLeft="true" + android:layout_alignParentBottom="true" /> <FrameLayout @@ -36,6 +45,8 @@ android:layout_weight="1" android:layout_height="@*android:dimen/status_bar_height" android:layout_width="match_parent" - android:background="@drawable/status_bar_ticker_background" + android:layout_toRightOf="@id/large_icon" + android:layout_alignParentBottom="true" + android:layout_alignWithParentIfMissing="true" /> -</LinearLayout> +</RelativeLayout> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java index 6045e31..e93a32b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java @@ -73,6 +73,8 @@ public class TabletTicker private StatusBarNotification[] mQueue = new StatusBarNotification[QUEUE_LENGTH]; private int mQueuePos; + private final int mLargeIconHeight; + private TabletStatusBar mBar; private LayoutTransition mLayoutTransition; @@ -81,6 +83,9 @@ public class TabletTicker public TabletTicker(TabletStatusBar bar) { mBar = bar; mContext = bar.getContext(); + final Resources res = mContext.getResources(); + mLargeIconHeight = res.getDimensionPixelSize( + android.R.dimen.notification_large_icon_height); } public void add(IBinder key, StatusBarNotification notification) { @@ -209,8 +214,6 @@ public class TabletTicker final Resources res = mContext.getResources(); final FrameLayout view = new FrameLayout(mContext); final int width = res.getDimensionPixelSize(R.dimen.notification_ticker_width); - final int height = res.getDimensionPixelSize( - android.R.dimen.notification_large_icon_height); int windowFlags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; @@ -219,7 +222,7 @@ public class TabletTicker } else { windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } - WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, height, + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, mLargeIconHeight, WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, windowFlags, PixelFormat.TRANSLUCENT); lp.gravity = Gravity.BOTTOM | Gravity.RIGHT; @@ -297,6 +300,16 @@ public class TabletTicker if (n.largeIcon != null) { largeIcon.setImageBitmap(n.largeIcon); largeIcon.setVisibility(View.VISIBLE); + final ViewGroup.LayoutParams lp = largeIcon.getLayoutParams(); + final int statusBarHeight = mBar.getStatusBarHeight(); + if (n.largeIcon.getHeight() <= statusBarHeight) { + // for smallish largeIcons, it looks a little odd to have them floating halfway up + // the ticker, so we vertically center them in the status bar area instead + lp.height = statusBarHeight; + } else { + lp.height = mLargeIconHeight; + } + largeIcon.setLayoutParams(lp); } if (CLICKABLE_TICKER) { diff --git a/tests/StatusBar/res/layout/notification_builder_test.xml b/tests/StatusBar/res/layout/notification_builder_test.xml index e1199c7..6c384f7 100644 --- a/tests/StatusBar/res/layout/notification_builder_test.xml +++ b/tests/StatusBar/res/layout/notification_builder_test.xml @@ -605,6 +605,11 @@ style="@style/FieldContents" android:text="pineapple2" /> + <RadioButton + android:id="@+id/large_icon_small" + style="@style/FieldContents" + android:text="small" + /> </RadioGroup> diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationBuilderTest.java b/tests/StatusBar/src/com/android/statusbartest/NotificationBuilderTest.java index 5a2ebac..fefd890 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationBuilderTest.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationBuilderTest.java @@ -287,6 +287,9 @@ public class NotificationBuilderTest extends Activity case R.id.large_icon_pineapple2: b.setLargeIcon(loadBitmap(R.drawable.pineapple2)); break; + case R.id.large_icon_small: + b.setLargeIcon(loadBitmap(R.drawable.icon2)); + break; } // sound TODO |