NotificationPanelView.java
設定快速設定菜單下拉使能:
public void setQsExpansionEnabled(boolean qsExpansionEnabled) {
mQsExpansionEnabled = qsExpansionEnabled;
mHeader.setClickable(qsExpansionEnabled);
}
複位:
@Override
public void resetViews() {
mIsLaunchTransitionFinished = false;
mBlockTouches = false;
mUnlockIconActive = false;
mAfforanceHelper.reset(true);
closeQs();
mStatusBar.dismissPopups();
mNotificationStackScroller.setOverScrollAmount(0f, true );
}
關閉快速設定菜單:
public void closeQs() {
cancelAnimation();
setQsExpansion(mQsMinExpansionHeight);
}
打開快速設定:
public void openQs() {
cancelAnimation();
if (mQsExpansionEnabled) {
setQsExpansion(mQsMaxExpansionHeight);
}
}
展開快速設定菜單:
public void expandWithQs() {
if (mQsExpansionEnabled) {
mQsExpandImmediate = true;
}
expand();
}
攔截觸摸事件:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
1.狀态欄上升,下拉的開始以及結束時的調用方法:
PanelView.java
開始:notifyExpandingStarted
結束:notifyExpandingFinished
對應着mExpanding
2.狀态欄的自動下拉和上升方法(伴有時間動畫)
PhoneStatusBar.java
自動下拉:animateExpandNotificationsPanel
自動上升:animateCollapsePanels
3.狀态欄的自動下拉和上升方法(立即)
PhoneStatusBar.java
由展開狀态立即不可見:makeExpandedInvisible
由不可見立即可見:makeExpandedVisible
4.下拉狀态欄的是否已經不可見或者下拉狀态欄的高度為0的判斷:
PanelView.java
isFullyCollapsed
5.下拉狀态欄是否已經下拉至最底部或者是最大高度的判斷:
PanelView.java
isFullyExpanded
6.下拉狀态欄3種狀态的判斷:
PanelBar.Java
mState:
STATE_CLOSED:下拉狀态欄的高度為0
STATE_OPENING:沒有到達最底部之前的下拉狀态欄正在下拉或者上升過程
STATE_OPEN:到達最底部後的下拉狀态欄正在下拉或者上升過程
它們由PanelView.java中onTrackingStarted和onTrackingStopped方法來控制參數,對應mTracking