Android11 中 Notification的长按是如何判断是长按的,源码
时间: 2023-12-10 20:38:41 浏览: 59
在 Android 11 中,当用户长按通知时,会触发 `NotificationLongPressHandler` 这个类的相关方法。
具体来说,当用户长按通知时,系统会通过 `NotificationPanelViewController` 的 `onNotificationLongPress` 方法接收到触摸事件,并将事件传递给 `NotificationEntryManager` 的 `onNotificationLongPress` 方法处理。在 `onNotificationLongPress` 方法中,系统会调用 `NotificationLongPressHandler` 的 `onNotificationLongPress` 方法,最终实现对长按通知的处理。
以下是 `NotificationLongPressHandler` 类的相关代码:
```java
public class NotificationLongPressHandler {
public boolean onNotificationLongPress(StatusBarNotification sbn, NotificationEntry entry,
NotificationMenuRowPlugin provider, ExpansionCallback expansionCallback,
boolean force) {
// 判断是否为长按事件
if (force || isLongPress(entry)) {
// 长按事件处理逻辑
...
return true;
}
return false;
}
private boolean isLongPress(NotificationEntry entry) {
// 判断是否为长按事件
...
return true;
}
}
```
在 `onNotificationLongPress` 方法中,首先会调用 `isLongPress` 方法判断是否为长按事件。`isLongPress` 方法的具体实现可以在 `NotificationGestureHelper` 类中找到,这里不再展开。
需要注意的是,以上代码仅为 Android 11 层面的实现,底层的实现可能会有所不同,具体可以查看 Android 11 源码。
阅读全文