diff --git a/packages/SystemUI/res/layout/notification_settings_icon_row.xml b/packages/SystemUI/res/layout/notification_settings_icon_row.xml index 74f6f9d8b4bf0..52d07fcc5cb7c 100644 --- a/packages/SystemUI/res/layout/notification_settings_icon_row.xml +++ b/packages/SystemUI/res/layout/notification_settings_icon_row.xml @@ -17,20 +17,21 @@ diff --git a/packages/SystemUI/res/layout/status_bar_notification_row.xml b/packages/SystemUI/res/layout/status_bar_notification_row.xml index 045ede3995d89..c4c45bb0be221 100644 --- a/packages/SystemUI/res/layout/status_bar_notification_row.xml +++ b/packages/SystemUI/res/layout/status_bar_notification_row.xml @@ -27,7 +27,7 @@ android:layout="@layout/notification_settings_icon_row" android:id="@+id/settings_icon_row_stub" android:inflatedId="@+id/notification_settings_icon_row" - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="match_parent" /> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 8c93e2a8722e5..27bfcd7eb7444 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -78,14 +78,17 @@ 48dp - - 24dp + + 64dp + + + 74dp - 30dp + 30dp - - 20dp + + 20dp 17dip diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java index 874defad3f7d2..315c5092922c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java @@ -208,6 +208,10 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView return false; } + protected boolean handleSlideBack() { + return false; + } + @Override public boolean onTouchEvent(MotionEvent event) { boolean result; @@ -260,6 +264,9 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView break; case MotionEvent.ACTION_UP: if (isWithinTouchSlop(event)) { + if (handleSlideBack()) { + return true; + } if (!mActivated) { makeActive(); postDelayed(mTapTimeoutRunnable, DOUBLETAP_TIMEOUT_MS); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index 411fd084c6b27..ea8b75ed164cd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -1657,6 +1657,12 @@ public abstract class BaseStatusBar extends SystemUI implements return; } + // Check if the notification is displaying the gear, if so slide notification back + if (row.getSettingsRow() != null && row.getSettingsRow().isVisible()) { + row.animateTranslateNotification(0); + return; + } + Notification notification = sbn.getNotification(); final PendingIntent intent = notification.contentIntent != null ? notification.contentIntent diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index 94511da949db5..397afb3a018ac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -339,6 +339,15 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { } } + @Override + protected boolean handleSlideBack() { + if (mSettingsIconRow != null && mSettingsIconRow.isVisible()) { + animateTranslateNotification(0 /* targetLeft */); + return true; + } + return false; + } + @Override protected boolean shouldHideBackground() { return super.shouldHideBackground() || mShowNoBackground; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java index 8fcd455a39da4..4491ebde742b9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationSettingsIconRow.java @@ -22,7 +22,6 @@ import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; import com.android.systemui.Interpolators; @@ -69,12 +68,9 @@ public class NotificationSettingsIconRow extends FrameLayout implements View.OnC super.onFinishInflate(); mGearIcon = (AlphaOptimizedImageView) findViewById(R.id.gear_icon); mGearIcon.setOnClickListener(this); - - final float iconMargin = - ((ViewGroup.MarginLayoutParams) mGearIcon.getLayoutParams()).getMarginStart(); - final float iconWidth = - getResources().getDimensionPixelOffset(R.dimen.notification_gear_size); - mHorizSpaceForGear = (iconWidth + iconMargin * 2); + setOnClickListener(this); + mHorizSpaceForGear = + getResources().getDimensionPixelOffset(R.dimen.notification_gear_width); resetState(); } @@ -140,7 +136,6 @@ public class NotificationSettingsIconRow extends FrameLayout implements View.OnC final float absTrans = Math.abs(transX); float desiredAlpha = 0; - // if ((fromLeft && transX <= fadeThreshold) || (!fromLeft && absTrans <= fadeThreshold)) { if (absTrans <= fadeThreshold) { desiredAlpha = 1; } else { @@ -191,17 +186,24 @@ public class NotificationSettingsIconRow extends FrameLayout implements View.OnC mFadeAnimator.start(); } - @Override - public void onClick(View v) { - mListener.onGearTouched(mParent); - } - private void setIconLocation(boolean onLeft) { if (onLeft == mOnLeft) { // Same side? Do nothing. return; } - mGearIcon.setTranslationX(onLeft ? 0 : (getWidth() - mHorizSpaceForGear)); + + setTranslationX(onLeft ? 0 : (mParent.getWidth() - mHorizSpaceForGear)); mOnLeft = onLeft; } + + @Override + public void onClick(View v) { + if (v.getId() == R.id.gear_icon) { + if (mListener != null) { + mListener.onGearTouched(mParent); + } + } else { + // Do nothing when the background is touched. + } + } }