When the user touches a peeked notification, reset the fadeout timer.
We do this regardless of whether there are custom controls mostly to keep things simple. NB: This change also reduces the fade time to 3sec from 5, which has always seemed too long but was necessary to make interacting with Music possible. Now that you can keep a notification open arbitrarily long by putting your finger on it, a shorter timeout is acceptable. Bug: 3456677 Change-Id: I674abfcc0fa757f838b98ed9d5d46ba785a95cfa
This commit is contained in:
@@ -18,11 +18,15 @@ package com.android.systemui.statusbar.tablet;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Slog;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.android.systemui.R;
|
||||
|
||||
public class NotificationPeekPanel extends RelativeLayout implements StatusBarPanel {
|
||||
TabletStatusBar mBar;
|
||||
|
||||
public NotificationPeekPanel(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
@@ -39,5 +43,16 @@ public class NotificationPeekPanel extends RelativeLayout implements StatusBarPa
|
||||
return x >= l && x < r && y >= t && y < b;
|
||||
}
|
||||
|
||||
public void setBar(TabletStatusBar bar) {
|
||||
mBar = bar;
|
||||
}
|
||||
|
||||
// We don't really want to intercept the touch event, but we *do* want to reset the fade timer
|
||||
// in case the user is interacting with some custom controls or something.
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
mBar.resetNotificationPeekFadeTimer();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -217,6 +217,8 @@ public class TabletStatusBar extends StatusBar implements
|
||||
// Notification preview window
|
||||
mNotificationPeekWindow = (NotificationPeekPanel) View.inflate(context,
|
||||
R.layout.status_bar_notification_peek, null);
|
||||
mNotificationPeekWindow.setBar(this);
|
||||
|
||||
mNotificationPeekRow = (ViewGroup) mNotificationPeekWindow.findViewById(R.id.content);
|
||||
mNotificationPeekWindow.setVisibility(View.GONE);
|
||||
mNotificationPeekWindow.setOnTouchListener(
|
||||
@@ -1211,10 +1213,20 @@ public class TabletStatusBar extends StatusBar implements
|
||||
}
|
||||
}
|
||||
|
||||
private class NotificationIconTouchListener implements View.OnTouchListener {
|
||||
final static int NOTIFICATION_PEEK_HOLD_THRESH = 200; // ms
|
||||
final static int NOTIFICATION_PEEK_FADE_DELAY = 5000; // ms
|
||||
final static int NOTIFICATION_PEEK_HOLD_THRESH = 200; // ms
|
||||
final static int NOTIFICATION_PEEK_FADE_DELAY = 3000; // ms
|
||||
|
||||
public void resetNotificationPeekFadeTimer() {
|
||||
if (DEBUG) {
|
||||
Slog.d(TAG, "setting peek fade timer for " + NOTIFICATION_PEEK_FADE_DELAY
|
||||
+ "ms from now");
|
||||
}
|
||||
mHandler.removeMessages(MSG_CLOSE_NOTIFICATION_PEEK);
|
||||
mHandler.sendEmptyMessageDelayed(MSG_CLOSE_NOTIFICATION_PEEK,
|
||||
NOTIFICATION_PEEK_FADE_DELAY);
|
||||
}
|
||||
|
||||
private class NotificationIconTouchListener implements View.OnTouchListener {
|
||||
VelocityTracker mVT;
|
||||
int mPeekIndex;
|
||||
float mInitialTouchX, mInitialTouchY;
|
||||
@@ -1303,8 +1315,7 @@ public class TabletStatusBar extends StatusBar implements
|
||||
}
|
||||
|
||||
if (peeking) {
|
||||
mHandler.sendEmptyMessageDelayed(MSG_CLOSE_NOTIFICATION_PEEK,
|
||||
NOTIFICATION_PEEK_FADE_DELAY);
|
||||
resetNotificationPeekFadeTimer();
|
||||
}
|
||||
|
||||
mVT.recycle();
|
||||
|
||||
Reference in New Issue
Block a user