/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.statusbar.notification.stack;
import static android.os.Trace.TRACE_TAG_APP;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_SCROLL_FLING;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_SHADE_CLEAR_ALL;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
import static com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_SWIPE;
import static com.android.systemui.util.DumpUtilsKt.println;
import static com.android.systemui.util.DumpUtilsKt.visibilityString;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.TimeAnimator;
import android.animation.ValueAnimator;
import android.annotation.ColorInt;
import android.annotation.DrawableRes;
import android.annotation.FloatRange;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Outline;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Trace;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.MathUtils;
import android.util.Pair;
import android.view.DisplayCutout;
import android.view.InputDevice;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.view.ViewTreeObserver;
import android.view.WindowInsets;
import android.view.WindowInsetsAnimation;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.OverScroller;
import android.widget.ScrollView;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.ColorUtils;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.policy.SystemBarUtils;
import com.android.keyguard.BouncerPanelExpansionCalculator;
import com.android.keyguard.KeyguardSliceView;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.ExpandHelper;
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.EmptyShadeView;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.FakeShadowView;
import com.android.systemui.statusbar.notification.LaunchAnimationParameters;
import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorController;
import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.notification.ShadeViewRefactor;
import com.android.systemui.statusbar.notification.ShadeViewRefactor.RefactorComponent;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.row.FooterView;
import com.android.systemui.statusbar.notification.row.StackScrollerDecorView;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.HeadsUpTouchHelper;
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
import com.android.systemui.statusbar.policy.HeadsUpUtil;
import com.android.systemui.statusbar.policy.ScrollAdapter;
import com.android.systemui.util.Assert;
import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.util.LargeScreenUtils;
import com.google.errorprone.annotations.CompileTimeConstant;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
/**
* A layout which handles a dynamic amount of notifications and presents them in a scrollable stack.
*/
public class NotificationStackScrollLayout extends ViewGroup implements Dumpable {
public static final float BACKGROUND_ALPHA_DIMMED = 0.7f;
private static final String TAG = "StackScroller";
private static final boolean SPEW = Log.isLoggable(TAG, Log.VERBOSE);
// Delay in milli-seconds before shade closes for clear all.
private static final int DELAY_BEFORE_SHADE_CLOSE = 200;
private boolean mShadeNeedsToClose = false;
@VisibleForTesting
static final float RUBBER_BAND_FACTOR_NORMAL = 0.1f;
private static final float RUBBER_BAND_FACTOR_AFTER_EXPAND = 0.15f;
private static final float RUBBER_BAND_FACTOR_ON_PANEL_EXPAND = 0.21f;
/**
* Sentinel value for no current active pointer. Used by {@link #mActivePointerId}.
*/
private static final int INVALID_POINTER = -1;
/**
* The distance in pixels between sections when the sections are directly adjacent (no visible
* gap is drawn between them). In this case we don't want to round their corners.
*/
private static final int DISTANCE_BETWEEN_ADJACENT_SECTIONS_PX = 1;
private boolean mKeyguardBypassEnabled;
private final ExpandHelper mExpandHelper;
private NotificationSwipeHelper mSwipeHelper;
private int mCurrentStackHeight = Integer.MAX_VALUE;
private final Paint mBackgroundPaint = new Paint();
private final boolean mShouldDrawNotificationBackground;
private boolean mHighPriorityBeforeSpeedBump;
private float mExpandedHeight;
private int mOwnScrollY;
private int mMaxLayoutHeight;
private VelocityTracker mVelocityTracker;
private OverScroller mScroller;
private Runnable mFinishScrollingCallback;
private int mTouchSlop;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 13 SystemUI 源码 (2000个子文件)
NotificationStackScrollLayout.java 257KB
NotificationPanelViewController.java 231KB
CentralSurfacesImpl.java 191KB
KeyguardUpdateMonitor.java 175KB
KeyguardViewMediator.java 150KB
ExpandableNotificationRow.java 141KB
KeyguardUpdateMonitorTest.java 118KB
VolumeDialogImpl.java 105KB
ShadeListBuilderTest.java 104KB
GlobalActionsDialogLite.java 100KB
QuickSettingsController.java 93KB
NotificationContentView.java 90KB
NavigationBar.java 85KB
PeopleSpaceWidgetManagerTest.java 83KB
NotifCollectionTest.java 82KB
MediaControlPanel.java 79KB
NotificationStackScrollLayoutController.java 77KB
BubblesTest.java 76KB
CommandQueue.java 75KB
ScrimControllerTest.java 72KB
KeyguardIndicationControllerTest.java 72KB
ScreenDecorationsTest.java 65KB
NetworkControllerImpl.java 65KB
ScrimController.java 64KB
KeyguardIndicationController.java 64KB
StatusBarKeyguardViewManager.java 64KB
PeopleTileViewHelper.java 63KB
NotificationChildrenContainer.java 63KB
ShadeListBuilder.java 63KB
CentralSurfacesImplTest.java 62KB
PeopleSpaceWidgetManager.java 62KB
NotificationInfoTest.java 61KB
ScreenDecorations.java 60KB
PeopleTileViewHelperTest.java 58KB
UdfpsControllerTest.java 58KB
SmartReplyViewTest.java 57KB
ScreenshotController.java 57KB
KeyguardSecurityContainer.java 54KB
InternetDialogController.java 54KB
NotificationConversationInfoTest.java 53KB
WindowMagnificationController.java 51KB
AuthController.java 51KB
VolumeDialogControllerImpl.java 51KB
ScreenshotView.java 51KB
EdgeBackGestureHandler.java 50KB
UdfpsController.java 49KB
NotifCollection.java 49KB
NotificationInterruptStateProviderImplTest.java 48KB
RemoteInputView.java 48KB
StackScrollAlgorithm.java 48KB
NavigationBarView.java 47KB
MediaOutputController.java 47KB
OverviewProxyService.java 46KB
KeyguardSecurityContainerController.java 46KB
NotificationPanelViewControllerTest.java 45KB
ThemeOverlayControllerTest.java 44KB
QSFragment.java 43KB
NotificationShelf.java 43KB
NotificationContentInflater.java 43KB
AuthControllerTest.java 42KB
NotificationPanelViewControllerBaseTest.java 40KB
PowerNotificationWarnings.java 40KB
BiometricUnlockController.java 39KB
WindowMagnificationControllerTest.java 39KB
MediaOutputControllerTest.java 39KB
InternetDialogControllerTest.java 38KB
KeyboardShortcuts.java 38KB
QSSecurityFooterUtils.java 38KB
StatusBarIconView.java 37KB
InternetDialog.java 37KB
WindowMagnificationAnimationControllerTest.java 37KB
NotificationStackScrollLayoutTest.java 36KB
StorageNotification.java 36KB
QSAnimator.java 36KB
StatusBarKeyguardViewManagerTest.java 36KB
AuthContainerView.java 35KB
DozeSensors.java 35KB
NotificationShadeWindowControllerImpl.java 35KB
NavigationBarEdgePanel.java 35KB
AuthBiometricView.java 35KB
SwipeHelper.java 35KB
PhoneStatusBarPolicy.java 34KB
SmartReplyView.java 34KB
NotificationMediaManager.java 34KB
AccessibilityFloatingMenuView.java 33KB
ViewState.java 33KB
QSSecurityFooterTest.java 33KB
ThemeOverlayController.java 33KB
NotificationIconContainer.java 33KB
KeyguardService.java 33KB
MediaOutputAdapterTest.java 33KB
LockIconViewController.java 32KB
NotificationEntry.java 32KB
CollapsedStatusBarFragment.java 32KB
ExpandableNotificationRowTest.java 31KB
PowerUI.java 31KB
NotificationRemoteInputManager.java 31KB
Dependency.java 31KB
SystemActions.java 31KB
PowerUITest.java 31KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
广强_
- 粉丝: 414
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功