Loading packages/SystemUI/res/layout/super_status_bar.xml +2 −8 Original line number Diff line number Diff line Loading @@ -84,16 +84,10 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> <com.android.systemui.statusbar.phone.PanelHolder android:id="@+id/panel_holder" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/transparent" > <include layout="@layout/status_bar_expanded" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> </com.android.systemui.statusbar.phone.PanelHolder> <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_in_front" android:layout_width="match_parent" Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +42 −101 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; import java.util.ArrayList; public abstract class PanelBar extends FrameLayout { public static final boolean DEBUG = false; public static final String TAG = PanelBar.class.getSimpleName(); Loading @@ -39,14 +37,10 @@ public abstract class PanelBar extends FrameLayout { public static final int STATE_OPENING = 1; public static final int STATE_OPEN = 2; PanelHolder mPanelHolder; ArrayList<PanelView> mPanels = new ArrayList<PanelView>(); PanelView mTouchingPanel; PanelView mPanel; private int mState = STATE_CLOSED; private boolean mTracking; float mPanelExpandedFractionSum; public void go(int state) { if (DEBUG) LOG("go state: %d -> %d", mState, state); mState = state; Loading @@ -61,54 +55,28 @@ public abstract class PanelBar extends FrameLayout { super.onFinishInflate(); } public void addPanel(PanelView pv) { mPanels.add(pv); public void setPanel(PanelView pv) { mPanel = pv; pv.setBar(this); } public void setPanelHolder(PanelHolder ph) { if (ph == null) { Log.e(TAG, "setPanelHolder: null PanelHolder", new Throwable()); return; } mPanelHolder = ph; final int N = ph.getChildCount(); for (int i=0; i<N; i++) { final View v = ph.getChildAt(i); if (v != null && v instanceof PanelView) { addPanel((PanelView) v); } } } public void setBouncerShowing(boolean showing) { int important = showing ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : IMPORTANT_FOR_ACCESSIBILITY_AUTO; setImportantForAccessibility(important); if (mPanelHolder != null) { mPanelHolder.setImportantForAccessibility(important); } } public float getBarHeight() { return getMeasuredHeight(); if (mPanel != null) mPanel.setImportantForAccessibility(important); } public PanelView selectPanelForTouch(MotionEvent touch) { final int N = mPanels.size(); return mPanels.get((int)(N * touch.getX() / getMeasuredWidth())); } public boolean panelsEnabled() { public boolean panelEnabled() { return true; } @Override public boolean onTouchEvent(MotionEvent event) { // Allow subclasses to implement enable/disable semantics if (!panelsEnabled()) { if (!panelEnabled()) { if (event.getAction() == MotionEvent.ACTION_DOWN) { Log.v(TAG, String.format("onTouch: all panels disabled, ignoring touch at (%d,%d)", (int) event.getX(), (int) event.getY())); Loading @@ -116,14 +84,12 @@ public abstract class PanelBar extends FrameLayout { return false; } // figure out which panel needs to be talked to here if (event.getAction() == MotionEvent.ACTION_DOWN) { final PanelView panel = selectPanelForTouch(event); final PanelView panel = mPanel; if (panel == null) { // panel is not there, so we'll eat the gesture Log.v(TAG, String.format("onTouch: no panel for touch at (%d,%d)", (int) event.getX(), (int) event.getY())); mTouchingPanel = null; return true; } boolean enabled = panel.isEnabled(); Loading @@ -134,43 +100,24 @@ public abstract class PanelBar extends FrameLayout { Log.v(TAG, String.format( "onTouch: panel (%s) is disabled, ignoring touch at (%d,%d)", panel, (int) event.getX(), (int) event.getY())); mTouchingPanel = null; return true; } startOpeningPanel(panel); } final boolean result = mTouchingPanel != null ? mTouchingPanel.onTouchEvent(event) : true; return result; } // called from PanelView when self-expanding, too public void startOpeningPanel(PanelView panel) { if (DEBUG) LOG("startOpeningPanel: " + panel); mTouchingPanel = panel; mPanelHolder.setSelectedPanel(mTouchingPanel); for (PanelView pv : mPanels) { if (pv != panel) { pv.collapse(false /* delayed */, 1.0f /* speedUpFactor */); } } return mPanel == null || mPanel.onTouchEvent(event); } public abstract void panelScrimMinFractionChanged(float minFraction); /** * @param panel the panel which changed its expansion state * @param frac the fraction from the expansion in [0, 1] * @param expanded whether the panel is currently expanded; this is independent from the * fraction as the panel also might be expanded if the fraction is 0 */ public void panelExpansionChanged(PanelView panel, float frac, boolean expanded) { public void panelExpansionChanged(float frac, boolean expanded) { boolean fullyClosed = true; PanelView fullyOpenedPanel = null; if (SPEW) LOG("panelExpansionChanged: start state=%d panel=%s", mState, panel.getName()); mPanelExpandedFractionSum = 0f; for (PanelView pv : mPanels) { boolean fullyOpened = false; if (SPEW) LOG("panelExpansionChanged: start state=%d", mState); PanelView pv = mPanel; pv.setVisibility(expanded ? View.VISIBLE : View.INVISIBLE); // adjust any other panels that may be partially visible if (expanded) { Loading @@ -180,29 +127,24 @@ public abstract class PanelBar extends FrameLayout { } fullyClosed = false; final float thisFrac = pv.getExpandedFraction(); mPanelExpandedFractionSum += thisFrac; if (SPEW) LOG("panelExpansionChanged: -> %s: f=%.1f", pv.getName(), thisFrac); if (panel == pv) { if (thisFrac == 1f) fullyOpenedPanel = panel; } fullyOpened = thisFrac >= 1f; } } mPanelExpandedFractionSum /= mPanels.size(); if (fullyOpenedPanel != null && !mTracking) { if (fullyOpened && !mTracking) { go(STATE_OPEN); onPanelFullyOpened(fullyOpenedPanel); onPanelFullyOpened(); } else if (fullyClosed && !mTracking && mState != STATE_CLOSED) { go(STATE_CLOSED); onAllPanelsCollapsed(); onPanelCollapsed(); } if (SPEW) LOG("panelExpansionChanged: end state=%d [%s%s ]", mState, (fullyOpenedPanel!=null)?" fullyOpened":"", fullyClosed?" fullyClosed":""); fullyOpened?" fullyOpened":"", fullyClosed?" fullyClosed":""); } public void collapseAllPanels(boolean animate, boolean delayed, float speedUpFactor) { public void collapsePanel(boolean animate, boolean delayed, float speedUpFactor) { boolean waiting = false; for (PanelView pv : mPanels) { PanelView pv = mPanel; if (animate && !pv.isFullyCollapsed()) { pv.collapse(delayed, speedUpFactor); waiting = true; Loading @@ -211,13 +153,12 @@ public abstract class PanelBar extends FrameLayout { pv.setExpandedFraction(0); // just in case pv.cancelPeek(); } } if (DEBUG) LOG("collapseAllPanels: animate=%s waiting=%s", animate, waiting); if (DEBUG) LOG("collapsePanel: animate=%s waiting=%s", animate, waiting); if (!waiting && mState != STATE_CLOSED) { // it's possible that nothing animated, so we replicate the termination // conditions of panelExpansionChanged here go(STATE_CLOSED); onAllPanelsCollapsed(); onPanelCollapsed(); } } Loading @@ -225,19 +166,19 @@ public abstract class PanelBar extends FrameLayout { if (DEBUG) LOG("onPanelPeeked"); } public void onAllPanelsCollapsed() { if (DEBUG) LOG("onAllPanelsCollapsed"); public void onPanelCollapsed() { if (DEBUG) LOG("onPanelCollapsed"); } public void onPanelFullyOpened(PanelView openPanel) { public void onPanelFullyOpened() { if (DEBUG) LOG("onPanelFullyOpened"); } public void onTrackingStarted(PanelView panel) { public void onTrackingStarted() { mTracking = true; } public void onTrackingStopped(PanelView panel, boolean expand) { public void onTrackingStopped(boolean expand) { mTracking = false; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelHolder.javadeleted 100644 → 0 +0 −81 Original line number Diff line number Diff line /* * Copyright (C) 2012 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.phone; import android.content.Context; import android.util.AttributeSet; import android.util.EventLog; import android.view.MotionEvent; import android.widget.FrameLayout; import com.android.systemui.EventLogTags; public class PanelHolder extends FrameLayout { public static final boolean DEBUG_GESTURES = true; private int mSelectedPanelIndex = -1; public PanelHolder(Context context, AttributeSet attrs) { super(context, attrs); setChildrenDrawingOrderEnabled(true); } @Override protected void onFinishInflate() { super.onFinishInflate(); setChildrenDrawingOrderEnabled(true); } public int getPanelIndex(PanelView pv) { final int N = getChildCount(); for (int i=0; i<N; i++) { final PanelView v = (PanelView) getChildAt(i); if (pv == v) return i; } return -1; } public void setSelectedPanel(PanelView pv) { mSelectedPanelIndex = getPanelIndex(pv); } @Override protected int getChildDrawingOrder(int childCount, int i) { if (mSelectedPanelIndex == -1) { return i; } else { if (i == childCount - 1) { return mSelectedPanelIndex; } else if (i >= mSelectedPanelIndex) { return i + 1; } else { return i; } } } @Override public boolean onTouchEvent(MotionEvent event) { if (DEBUG_GESTURES) { if (event.getActionMasked() != MotionEvent.ACTION_MOVE) { EventLog.writeEvent(EventLogTags.SYSUI_PANELHOLDER_TOUCH, event.getActionMasked(), (int) event.getX(), (int) event.getY()); } } return false; } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +3 −4 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ public abstract class PanelView extends FrameLayout { protected void onTrackingStopped(boolean expand) { mTracking = false; mBar.onTrackingStopped(PanelView.this, expand); mBar.onTrackingStopped(expand); notifyBarPanelExpansionChanged(); } Loading @@ -440,7 +440,7 @@ public abstract class PanelView extends FrameLayout { endClosing(); mTracking = true; mCollapseAfterPeek = false; mBar.onTrackingStarted(PanelView.this); mBar.onTrackingStarted(); notifyExpandingStarted(); notifyBarPanelExpansionChanged(); } Loading Loading @@ -893,7 +893,6 @@ public abstract class PanelView extends FrameLayout { != mStatusBar.getStatusBarHeight()) { getViewTreeObserver().removeOnGlobalLayoutListener(this); if (animate) { mBar.startOpeningPanel(PanelView.this); notifyExpandingStarted(); fling(0, true /* expand */); } else { Loading Loading @@ -1025,7 +1024,7 @@ public abstract class PanelView extends FrameLayout { } protected void notifyBarPanelExpansionChanged() { mBar.panelExpansionChanged(this, mExpandedFraction, mExpandedFraction > 0f || mPeekPending mBar.panelExpansionChanged(mExpandedFraction, mExpandedFraction > 0f || mPeekPending || mPeekAnimator != null || mInstantExpanding || isPanelVisibleBecauseOfHeadsUp() || mTracking || mHeightAnimator != null); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +8 −12 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.ThreadedRenderer; import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.ViewStub; Loading Loading @@ -342,7 +341,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Tracking finger for opening/closing. boolean mTracking; VelocityTracker mVelocityTracker; int[] mAbsPos = new int[2]; ArrayList<Runnable> mPostCollapseRunnables = new ArrayList<>(); Loading Loading @@ -692,16 +690,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } }); mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar); mStatusBarView.setBar(this); PanelHolder holder = (PanelHolder) mStatusBarWindow.findViewById(R.id.panel_holder); mStatusBarView.setPanelHolder(holder); mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById( R.id.notification_panel); mNotificationPanel.setStatusBar(this); mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar); mStatusBarView.setBar(this); mStatusBarView.setPanel(mNotificationPanel); if (!ActivityManager.isHighEndGfx()) { mStatusBarWindow.setBackground(null); mNotificationPanel.setBackground(new FastColorDrawable(context.getColor( Loading Loading @@ -2275,7 +2271,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStatusBarWindowManager.setStatusBarFocusable(false); mStatusBarWindow.cancelExpandHelper(); mStatusBarView.collapseAllPanels(true /* animate */, delayed, speedUpFactor); mStatusBarView.collapsePanel(true /* animate */, delayed, speedUpFactor); } } Loading Loading @@ -2324,7 +2320,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, public void animateCollapseQuickSettings() { if (mState == StatusBarState.SHADE) { mStatusBarView.collapseAllPanels(true, false /* delayed */, 1.0f /* speedUpFactor */); mStatusBarView.collapsePanel(true, false /* delayed */, 1.0f /* speedUpFactor */); } } Loading @@ -2337,7 +2333,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } // Ensure the panel is fully collapsed (just in case; bug 6765842, 7260868) mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/, mStatusBarView.collapsePanel(/*animate=*/ false, false /* delayed*/, 1.0f /* speedUpFactor */); mNotificationPanel.closeQs(); Loading Loading @@ -2429,7 +2425,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStatusBarWindowState = state; if (DEBUG_WINDOW_STATE) Log.d(TAG, "Status bar " + windowStateToString(state)); if (!showing && mState == StatusBarState.SHADE) { mStatusBarView.collapseAllPanels(false /* animate */, false /* delayed */, mStatusBarView.collapsePanel(false /* animate */, false /* delayed */, 1.0f /* speedUpFactor */); } } Loading Loading
packages/SystemUI/res/layout/super_status_bar.xml +2 −8 Original line number Diff line number Diff line Loading @@ -84,16 +84,10 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> <com.android.systemui.statusbar.phone.PanelHolder android:id="@+id/panel_holder" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/transparent" > <include layout="@layout/status_bar_expanded" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" /> </com.android.systemui.statusbar.phone.PanelHolder> <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_in_front" android:layout_width="match_parent" Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +42 −101 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; import java.util.ArrayList; public abstract class PanelBar extends FrameLayout { public static final boolean DEBUG = false; public static final String TAG = PanelBar.class.getSimpleName(); Loading @@ -39,14 +37,10 @@ public abstract class PanelBar extends FrameLayout { public static final int STATE_OPENING = 1; public static final int STATE_OPEN = 2; PanelHolder mPanelHolder; ArrayList<PanelView> mPanels = new ArrayList<PanelView>(); PanelView mTouchingPanel; PanelView mPanel; private int mState = STATE_CLOSED; private boolean mTracking; float mPanelExpandedFractionSum; public void go(int state) { if (DEBUG) LOG("go state: %d -> %d", mState, state); mState = state; Loading @@ -61,54 +55,28 @@ public abstract class PanelBar extends FrameLayout { super.onFinishInflate(); } public void addPanel(PanelView pv) { mPanels.add(pv); public void setPanel(PanelView pv) { mPanel = pv; pv.setBar(this); } public void setPanelHolder(PanelHolder ph) { if (ph == null) { Log.e(TAG, "setPanelHolder: null PanelHolder", new Throwable()); return; } mPanelHolder = ph; final int N = ph.getChildCount(); for (int i=0; i<N; i++) { final View v = ph.getChildAt(i); if (v != null && v instanceof PanelView) { addPanel((PanelView) v); } } } public void setBouncerShowing(boolean showing) { int important = showing ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : IMPORTANT_FOR_ACCESSIBILITY_AUTO; setImportantForAccessibility(important); if (mPanelHolder != null) { mPanelHolder.setImportantForAccessibility(important); } } public float getBarHeight() { return getMeasuredHeight(); if (mPanel != null) mPanel.setImportantForAccessibility(important); } public PanelView selectPanelForTouch(MotionEvent touch) { final int N = mPanels.size(); return mPanels.get((int)(N * touch.getX() / getMeasuredWidth())); } public boolean panelsEnabled() { public boolean panelEnabled() { return true; } @Override public boolean onTouchEvent(MotionEvent event) { // Allow subclasses to implement enable/disable semantics if (!panelsEnabled()) { if (!panelEnabled()) { if (event.getAction() == MotionEvent.ACTION_DOWN) { Log.v(TAG, String.format("onTouch: all panels disabled, ignoring touch at (%d,%d)", (int) event.getX(), (int) event.getY())); Loading @@ -116,14 +84,12 @@ public abstract class PanelBar extends FrameLayout { return false; } // figure out which panel needs to be talked to here if (event.getAction() == MotionEvent.ACTION_DOWN) { final PanelView panel = selectPanelForTouch(event); final PanelView panel = mPanel; if (panel == null) { // panel is not there, so we'll eat the gesture Log.v(TAG, String.format("onTouch: no panel for touch at (%d,%d)", (int) event.getX(), (int) event.getY())); mTouchingPanel = null; return true; } boolean enabled = panel.isEnabled(); Loading @@ -134,43 +100,24 @@ public abstract class PanelBar extends FrameLayout { Log.v(TAG, String.format( "onTouch: panel (%s) is disabled, ignoring touch at (%d,%d)", panel, (int) event.getX(), (int) event.getY())); mTouchingPanel = null; return true; } startOpeningPanel(panel); } final boolean result = mTouchingPanel != null ? mTouchingPanel.onTouchEvent(event) : true; return result; } // called from PanelView when self-expanding, too public void startOpeningPanel(PanelView panel) { if (DEBUG) LOG("startOpeningPanel: " + panel); mTouchingPanel = panel; mPanelHolder.setSelectedPanel(mTouchingPanel); for (PanelView pv : mPanels) { if (pv != panel) { pv.collapse(false /* delayed */, 1.0f /* speedUpFactor */); } } return mPanel == null || mPanel.onTouchEvent(event); } public abstract void panelScrimMinFractionChanged(float minFraction); /** * @param panel the panel which changed its expansion state * @param frac the fraction from the expansion in [0, 1] * @param expanded whether the panel is currently expanded; this is independent from the * fraction as the panel also might be expanded if the fraction is 0 */ public void panelExpansionChanged(PanelView panel, float frac, boolean expanded) { public void panelExpansionChanged(float frac, boolean expanded) { boolean fullyClosed = true; PanelView fullyOpenedPanel = null; if (SPEW) LOG("panelExpansionChanged: start state=%d panel=%s", mState, panel.getName()); mPanelExpandedFractionSum = 0f; for (PanelView pv : mPanels) { boolean fullyOpened = false; if (SPEW) LOG("panelExpansionChanged: start state=%d", mState); PanelView pv = mPanel; pv.setVisibility(expanded ? View.VISIBLE : View.INVISIBLE); // adjust any other panels that may be partially visible if (expanded) { Loading @@ -180,29 +127,24 @@ public abstract class PanelBar extends FrameLayout { } fullyClosed = false; final float thisFrac = pv.getExpandedFraction(); mPanelExpandedFractionSum += thisFrac; if (SPEW) LOG("panelExpansionChanged: -> %s: f=%.1f", pv.getName(), thisFrac); if (panel == pv) { if (thisFrac == 1f) fullyOpenedPanel = panel; } fullyOpened = thisFrac >= 1f; } } mPanelExpandedFractionSum /= mPanels.size(); if (fullyOpenedPanel != null && !mTracking) { if (fullyOpened && !mTracking) { go(STATE_OPEN); onPanelFullyOpened(fullyOpenedPanel); onPanelFullyOpened(); } else if (fullyClosed && !mTracking && mState != STATE_CLOSED) { go(STATE_CLOSED); onAllPanelsCollapsed(); onPanelCollapsed(); } if (SPEW) LOG("panelExpansionChanged: end state=%d [%s%s ]", mState, (fullyOpenedPanel!=null)?" fullyOpened":"", fullyClosed?" fullyClosed":""); fullyOpened?" fullyOpened":"", fullyClosed?" fullyClosed":""); } public void collapseAllPanels(boolean animate, boolean delayed, float speedUpFactor) { public void collapsePanel(boolean animate, boolean delayed, float speedUpFactor) { boolean waiting = false; for (PanelView pv : mPanels) { PanelView pv = mPanel; if (animate && !pv.isFullyCollapsed()) { pv.collapse(delayed, speedUpFactor); waiting = true; Loading @@ -211,13 +153,12 @@ public abstract class PanelBar extends FrameLayout { pv.setExpandedFraction(0); // just in case pv.cancelPeek(); } } if (DEBUG) LOG("collapseAllPanels: animate=%s waiting=%s", animate, waiting); if (DEBUG) LOG("collapsePanel: animate=%s waiting=%s", animate, waiting); if (!waiting && mState != STATE_CLOSED) { // it's possible that nothing animated, so we replicate the termination // conditions of panelExpansionChanged here go(STATE_CLOSED); onAllPanelsCollapsed(); onPanelCollapsed(); } } Loading @@ -225,19 +166,19 @@ public abstract class PanelBar extends FrameLayout { if (DEBUG) LOG("onPanelPeeked"); } public void onAllPanelsCollapsed() { if (DEBUG) LOG("onAllPanelsCollapsed"); public void onPanelCollapsed() { if (DEBUG) LOG("onPanelCollapsed"); } public void onPanelFullyOpened(PanelView openPanel) { public void onPanelFullyOpened() { if (DEBUG) LOG("onPanelFullyOpened"); } public void onTrackingStarted(PanelView panel) { public void onTrackingStarted() { mTracking = true; } public void onTrackingStopped(PanelView panel, boolean expand) { public void onTrackingStopped(boolean expand) { mTracking = false; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelHolder.javadeleted 100644 → 0 +0 −81 Original line number Diff line number Diff line /* * Copyright (C) 2012 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.phone; import android.content.Context; import android.util.AttributeSet; import android.util.EventLog; import android.view.MotionEvent; import android.widget.FrameLayout; import com.android.systemui.EventLogTags; public class PanelHolder extends FrameLayout { public static final boolean DEBUG_GESTURES = true; private int mSelectedPanelIndex = -1; public PanelHolder(Context context, AttributeSet attrs) { super(context, attrs); setChildrenDrawingOrderEnabled(true); } @Override protected void onFinishInflate() { super.onFinishInflate(); setChildrenDrawingOrderEnabled(true); } public int getPanelIndex(PanelView pv) { final int N = getChildCount(); for (int i=0; i<N; i++) { final PanelView v = (PanelView) getChildAt(i); if (pv == v) return i; } return -1; } public void setSelectedPanel(PanelView pv) { mSelectedPanelIndex = getPanelIndex(pv); } @Override protected int getChildDrawingOrder(int childCount, int i) { if (mSelectedPanelIndex == -1) { return i; } else { if (i == childCount - 1) { return mSelectedPanelIndex; } else if (i >= mSelectedPanelIndex) { return i + 1; } else { return i; } } } @Override public boolean onTouchEvent(MotionEvent event) { if (DEBUG_GESTURES) { if (event.getActionMasked() != MotionEvent.ACTION_MOVE) { EventLog.writeEvent(EventLogTags.SYSUI_PANELHOLDER_TOUCH, event.getActionMasked(), (int) event.getX(), (int) event.getY()); } } return false; } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +3 −4 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ public abstract class PanelView extends FrameLayout { protected void onTrackingStopped(boolean expand) { mTracking = false; mBar.onTrackingStopped(PanelView.this, expand); mBar.onTrackingStopped(expand); notifyBarPanelExpansionChanged(); } Loading @@ -440,7 +440,7 @@ public abstract class PanelView extends FrameLayout { endClosing(); mTracking = true; mCollapseAfterPeek = false; mBar.onTrackingStarted(PanelView.this); mBar.onTrackingStarted(); notifyExpandingStarted(); notifyBarPanelExpansionChanged(); } Loading Loading @@ -893,7 +893,6 @@ public abstract class PanelView extends FrameLayout { != mStatusBar.getStatusBarHeight()) { getViewTreeObserver().removeOnGlobalLayoutListener(this); if (animate) { mBar.startOpeningPanel(PanelView.this); notifyExpandingStarted(); fling(0, true /* expand */); } else { Loading Loading @@ -1025,7 +1024,7 @@ public abstract class PanelView extends FrameLayout { } protected void notifyBarPanelExpansionChanged() { mBar.panelExpansionChanged(this, mExpandedFraction, mExpandedFraction > 0f || mPeekPending mBar.panelExpansionChanged(mExpandedFraction, mExpandedFraction > 0f || mPeekPending || mPeekAnimator != null || mInstantExpanding || isPanelVisibleBecauseOfHeadsUp() || mTracking || mHeightAnimator != null); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +8 −12 Original line number Diff line number Diff line Loading @@ -81,7 +81,6 @@ import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.ThreadedRenderer; import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.ViewStub; Loading Loading @@ -342,7 +341,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // Tracking finger for opening/closing. boolean mTracking; VelocityTracker mVelocityTracker; int[] mAbsPos = new int[2]; ArrayList<Runnable> mPostCollapseRunnables = new ArrayList<>(); Loading Loading @@ -692,16 +690,14 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } }); mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar); mStatusBarView.setBar(this); PanelHolder holder = (PanelHolder) mStatusBarWindow.findViewById(R.id.panel_holder); mStatusBarView.setPanelHolder(holder); mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById( R.id.notification_panel); mNotificationPanel.setStatusBar(this); mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar); mStatusBarView.setBar(this); mStatusBarView.setPanel(mNotificationPanel); if (!ActivityManager.isHighEndGfx()) { mStatusBarWindow.setBackground(null); mNotificationPanel.setBackground(new FastColorDrawable(context.getColor( Loading Loading @@ -2275,7 +2271,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStatusBarWindowManager.setStatusBarFocusable(false); mStatusBarWindow.cancelExpandHelper(); mStatusBarView.collapseAllPanels(true /* animate */, delayed, speedUpFactor); mStatusBarView.collapsePanel(true /* animate */, delayed, speedUpFactor); } } Loading Loading @@ -2324,7 +2320,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, public void animateCollapseQuickSettings() { if (mState == StatusBarState.SHADE) { mStatusBarView.collapseAllPanels(true, false /* delayed */, 1.0f /* speedUpFactor */); mStatusBarView.collapsePanel(true, false /* delayed */, 1.0f /* speedUpFactor */); } } Loading @@ -2337,7 +2333,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } // Ensure the panel is fully collapsed (just in case; bug 6765842, 7260868) mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/, mStatusBarView.collapsePanel(/*animate=*/ false, false /* delayed*/, 1.0f /* speedUpFactor */); mNotificationPanel.closeQs(); Loading Loading @@ -2429,7 +2425,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mStatusBarWindowState = state; if (DEBUG_WINDOW_STATE) Log.d(TAG, "Status bar " + windowStateToString(state)); if (!showing && mState == StatusBarState.SHADE) { mStatusBarView.collapseAllPanels(false /* animate */, false /* delayed */, mStatusBarView.collapsePanel(false /* animate */, false /* delayed */, 1.0f /* speedUpFactor */); } } Loading