Loading packages/SystemUI/res/layout-sw600dp/super_status_bar.xml +1 −2 Original line number Diff line number Diff line Loading @@ -33,9 +33,8 @@ <include layout="@layout/status_bar_expanded" android:layout_width="@dimen/notification_panel_width" android:layout_height="match_parent" android:layout_height="0dp" android:layout_gravity="center_horizontal|top" android:visibility="invisible" /> </com.android.systemui.statusbar.phone.StatusBarWindowView> packages/SystemUI/res/layout/status_bar_expanded.xml +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ <include layout="@layout/status_bar_expanded_header" android:layout_width="match_parent" android:layout_height="48dp" android:layout_height="@dimen/notification_panel_header_height" /> <ScrollView Loading packages/SystemUI/res/layout/super_status_bar.xml +2 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ android:focusable="true" android:descendantFocusability="afterDescendants" android:fitsSystemWindows="true" android:background="@android:color/transparent" > <include layout="@layout/status_bar" Loading @@ -33,8 +34,7 @@ <include layout="@layout/status_bar_expanded" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" android:layout_height="0dp" /> </com.android.systemui.statusbar.phone.StatusBarWindowView> packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +69 −26 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable; import android.inputmethodservice.InputMethodService; import android.os.IBinder; import android.os.Message; Loading Loading @@ -161,6 +162,7 @@ public class PhoneStatusBar extends BaseStatusBar { View mExpandedContents; int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx; int mNotificationPanelGravity; int mNotificationPanelMinHeight; // top bar View mClearButton; Loading Loading @@ -208,6 +210,8 @@ public class PhoneStatusBar extends BaseStatusBar { long mAnimLastTimeNanos; boolean mAnimatingReveal = false; int mViewDelta; float mFlingVelocity; int mFlingY; int[] mAbsPos = new int[2]; Runnable mPostCollapseCleanup = null; Loading Loading @@ -236,6 +240,33 @@ public class PhoneStatusBar extends BaseStatusBar { } }; private final Runnable mStartRevealAnimation = new Runnable() { @Override public void run() { mAnimAccel = mExpandAccelPx; mAnimVel = mFlingExpandMinVelocityPx; mAnimY = getStatusBarHeight(); updateExpandedViewPos((int)mAnimY); mAnimating = true; mAnimatingReveal = true; resetLastAnimTime(); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mAnimationCallback, null); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); } }; private final Runnable mPerformFling = new Runnable() { @Override public void run() { performFling(mFlingY + mViewDelta, mFlingVelocity, false); } }; private class ExpandedDialog extends Dialog { ExpandedDialog(Context context) { super(context, com.android.internal.R.style.Theme_Translucent_NoTitleBar); Loading Loading @@ -321,7 +352,6 @@ public class PhoneStatusBar extends BaseStatusBar { mNotificationPanel.setBackground(new FastColorDrawable(context.getResources().getColor( R.color.notification_panel_solid_background))); } if (ENABLE_INTRUDERS) { mIntruderAlertView = (IntruderAlertView) View.inflate(context, R.layout.intruder_alert, null); mIntruderAlertView.setVisibility(View.GONE); Loading Loading @@ -1039,14 +1069,13 @@ public class PhoneStatusBar extends BaseStatusBar { } }; private void makeExpandedVisible() { private void makeExpandedVisible(boolean revealAfterDraw) { if (SPEW) Slog.d(TAG, "Make expanded visible: expanded visible=" + mExpandedVisible); if (mExpandedVisible) { return; } mExpandedVisible = true; mNotificationPanel.setVisibility(View.VISIBLE); makeSlippery(mNavigationBarView, true); updateExpandedViewPos(EXPANDED_LEAVE_ALONE); Loading @@ -1060,6 +1089,12 @@ public class PhoneStatusBar extends BaseStatusBar { final WindowManager wm = WindowManagerImpl.getDefault(); wm.updateViewLayout(mStatusBarWindow, lp); // Updating the window layout will force an expensive traversal/redraw. // Kick off the reveal animation after this is complete to avoid animation latency. if (revealAfterDraw) { mHandler.post(mStartRevealAnimation); } visibilityChanged(true); } Loading Loading @@ -1145,7 +1180,7 @@ public class PhoneStatusBar extends BaseStatusBar { } mExpanded = true; makeExpandedVisible(); makeExpandedVisible(false); updateExpandedViewPos(EXPANDED_FULL_OPEN); if (false) postStartTracing(); Loading @@ -1160,7 +1195,6 @@ public class PhoneStatusBar extends BaseStatusBar { } mExpandedVisible = false; visibilityChanged(false); mNotificationPanel.setVisibility(View.INVISIBLE); makeSlippery(mNavigationBarView, false); // Shrink the window to the size of the status bar only Loading Loading @@ -1241,6 +1275,8 @@ public class PhoneStatusBar extends BaseStatusBar { } void stopTracking() { if (!mTracking) return; mTracking = false; mPile.setLayerType(View.LAYER_TYPE_NONE, null); mVelocityTracker.recycle(); Loading @@ -1265,7 +1301,7 @@ public class PhoneStatusBar extends BaseStatusBar { if (SPEW) { Slog.d(TAG, "doRevealAnimation: dt=" + (frameTimeNanos - mAnimLastTimeNanos)); } final int h = getCloseViewHeight() + getStatusBarHeight(); final int h = mNotificationPanelMinHeight; if (mAnimatingReveal && mAnimating && mAnimY < h) { incrementAnim(frameTimeNanos); if (mAnimY >= h) { Loading @@ -1290,20 +1326,7 @@ public class PhoneStatusBar extends BaseStatusBar { mPile.setLayerType(View.LAYER_TYPE_HARDWARE, null); mVelocityTracker = VelocityTracker.obtain(); if (opening) { mAnimAccel = mExpandAccelPx; mAnimVel = mFlingExpandMinVelocityPx; mAnimY = getStatusBarHeight(); updateExpandedViewPos((int)mAnimY); mAnimating = true; mAnimatingReveal = true; resetLastAnimTime(); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mAnimationCallback, null); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); makeExpandedVisible(); makeExpandedVisible(true); } else { // it's open, close it? if (mAnimating) { Loading @@ -1317,7 +1340,7 @@ public class PhoneStatusBar extends BaseStatusBar { void performFling(int y, float vel, boolean always) { if (CHATTY) { Slog.d(TAG, "panel: will fling, y=" + y + " vel=" + vel); Slog.d(TAG, "panel: will fling, y=" + y + " vel=" + vel + " mExpanded=" + mExpanded); } mAnimatingReveal = false; Loading Loading @@ -1386,7 +1409,7 @@ public class PhoneStatusBar extends BaseStatusBar { boolean interceptTouchEvent(MotionEvent event) { if (SPEW) { Slog.d(TAG, "Touch: rawY=" + event.getRawY() + " event=" + event + " mDisabled=" + mDisabled); + mDisabled + " mTracking=" + mTracking); } else if (CHATTY) { if (event.getAction() != MotionEvent.ACTION_MOVE) { Slog.d(TAG, String.format( Loading Loading @@ -1431,9 +1454,8 @@ public class PhoneStatusBar extends BaseStatusBar { } } else if (mTracking) { trackMovement(event); final int minY = statusBarSize + getCloseViewHeight(); if (action == MotionEvent.ACTION_MOVE) { if (mAnimatingReveal && (y + mViewDelta) < minY) { if (mAnimatingReveal && (y + mViewDelta) < mNotificationPanelMinHeight) { // nothing } else { mAnimatingReveal = false; Loading Loading @@ -1467,7 +1489,15 @@ public class PhoneStatusBar extends BaseStatusBar { vel)); } performFling(y + mViewDelta, vel, false); if (mTrackingPosition == mNotificationPanelMinHeight) { // start the fling from the tracking position, ignore y and view delta mFlingY = mTrackingPosition; mViewDelta = 0; } else { mFlingY = y; } mFlingVelocity = vel; mHandler.post(mPerformFling); } } Loading Loading @@ -1870,7 +1900,6 @@ public class PhoneStatusBar extends BaseStatusBar { + " mTrackingPosition=" + mTrackingPosition + " gravity=" + mNotificationPanelGravity); } int panelh = 0; final int disph = getExpandedViewMaxHeight(); Loading Loading @@ -2156,10 +2185,24 @@ public class PhoneStatusBar extends BaseStatusBar { if (mNotificationPanelGravity <= 0) { mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP; } mNotificationPanelMinHeight = res.getDimensionPixelSize(R.dimen.notification_panel_padding_top) + res.getDimensionPixelSize(R.dimen.notification_panel_header_height) + res.getDimensionPixelSize(R.dimen.close_handle_underlap) + getNinePatchPadding(res.getDrawable(R.drawable.notification_panel_bg)).bottom; if (false) Slog.v(TAG, "updateResources"); } private static Rect getNinePatchPadding(Drawable d) { Rect padding = new Rect(); if (d instanceof NinePatchDrawable) { NinePatchDrawable ninePatch = (NinePatchDrawable) d; ninePatch.getPadding(padding); } return padding; } // // tracing // Loading Loading
packages/SystemUI/res/layout-sw600dp/super_status_bar.xml +1 −2 Original line number Diff line number Diff line Loading @@ -33,9 +33,8 @@ <include layout="@layout/status_bar_expanded" android:layout_width="@dimen/notification_panel_width" android:layout_height="match_parent" android:layout_height="0dp" android:layout_gravity="center_horizontal|top" android:visibility="invisible" /> </com.android.systemui.statusbar.phone.StatusBarWindowView>
packages/SystemUI/res/layout/status_bar_expanded.xml +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ <include layout="@layout/status_bar_expanded_header" android:layout_width="match_parent" android:layout_height="48dp" android:layout_height="@dimen/notification_panel_header_height" /> <ScrollView Loading
packages/SystemUI/res/layout/super_status_bar.xml +2 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ android:focusable="true" android:descendantFocusability="afterDescendants" android:fitsSystemWindows="true" android:background="@android:color/transparent" > <include layout="@layout/status_bar" Loading @@ -33,8 +34,7 @@ <include layout="@layout/status_bar_expanded" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" android:layout_height="0dp" /> </com.android.systemui.statusbar.phone.StatusBarWindowView>
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +69 −26 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable; import android.inputmethodservice.InputMethodService; import android.os.IBinder; import android.os.Message; Loading Loading @@ -161,6 +162,7 @@ public class PhoneStatusBar extends BaseStatusBar { View mExpandedContents; int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx; int mNotificationPanelGravity; int mNotificationPanelMinHeight; // top bar View mClearButton; Loading Loading @@ -208,6 +210,8 @@ public class PhoneStatusBar extends BaseStatusBar { long mAnimLastTimeNanos; boolean mAnimatingReveal = false; int mViewDelta; float mFlingVelocity; int mFlingY; int[] mAbsPos = new int[2]; Runnable mPostCollapseCleanup = null; Loading Loading @@ -236,6 +240,33 @@ public class PhoneStatusBar extends BaseStatusBar { } }; private final Runnable mStartRevealAnimation = new Runnable() { @Override public void run() { mAnimAccel = mExpandAccelPx; mAnimVel = mFlingExpandMinVelocityPx; mAnimY = getStatusBarHeight(); updateExpandedViewPos((int)mAnimY); mAnimating = true; mAnimatingReveal = true; resetLastAnimTime(); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mAnimationCallback, null); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); } }; private final Runnable mPerformFling = new Runnable() { @Override public void run() { performFling(mFlingY + mViewDelta, mFlingVelocity, false); } }; private class ExpandedDialog extends Dialog { ExpandedDialog(Context context) { super(context, com.android.internal.R.style.Theme_Translucent_NoTitleBar); Loading Loading @@ -321,7 +352,6 @@ public class PhoneStatusBar extends BaseStatusBar { mNotificationPanel.setBackground(new FastColorDrawable(context.getResources().getColor( R.color.notification_panel_solid_background))); } if (ENABLE_INTRUDERS) { mIntruderAlertView = (IntruderAlertView) View.inflate(context, R.layout.intruder_alert, null); mIntruderAlertView.setVisibility(View.GONE); Loading Loading @@ -1039,14 +1069,13 @@ public class PhoneStatusBar extends BaseStatusBar { } }; private void makeExpandedVisible() { private void makeExpandedVisible(boolean revealAfterDraw) { if (SPEW) Slog.d(TAG, "Make expanded visible: expanded visible=" + mExpandedVisible); if (mExpandedVisible) { return; } mExpandedVisible = true; mNotificationPanel.setVisibility(View.VISIBLE); makeSlippery(mNavigationBarView, true); updateExpandedViewPos(EXPANDED_LEAVE_ALONE); Loading @@ -1060,6 +1089,12 @@ public class PhoneStatusBar extends BaseStatusBar { final WindowManager wm = WindowManagerImpl.getDefault(); wm.updateViewLayout(mStatusBarWindow, lp); // Updating the window layout will force an expensive traversal/redraw. // Kick off the reveal animation after this is complete to avoid animation latency. if (revealAfterDraw) { mHandler.post(mStartRevealAnimation); } visibilityChanged(true); } Loading Loading @@ -1145,7 +1180,7 @@ public class PhoneStatusBar extends BaseStatusBar { } mExpanded = true; makeExpandedVisible(); makeExpandedVisible(false); updateExpandedViewPos(EXPANDED_FULL_OPEN); if (false) postStartTracing(); Loading @@ -1160,7 +1195,6 @@ public class PhoneStatusBar extends BaseStatusBar { } mExpandedVisible = false; visibilityChanged(false); mNotificationPanel.setVisibility(View.INVISIBLE); makeSlippery(mNavigationBarView, false); // Shrink the window to the size of the status bar only Loading Loading @@ -1241,6 +1275,8 @@ public class PhoneStatusBar extends BaseStatusBar { } void stopTracking() { if (!mTracking) return; mTracking = false; mPile.setLayerType(View.LAYER_TYPE_NONE, null); mVelocityTracker.recycle(); Loading @@ -1265,7 +1301,7 @@ public class PhoneStatusBar extends BaseStatusBar { if (SPEW) { Slog.d(TAG, "doRevealAnimation: dt=" + (frameTimeNanos - mAnimLastTimeNanos)); } final int h = getCloseViewHeight() + getStatusBarHeight(); final int h = mNotificationPanelMinHeight; if (mAnimatingReveal && mAnimating && mAnimY < h) { incrementAnim(frameTimeNanos); if (mAnimY >= h) { Loading @@ -1290,20 +1326,7 @@ public class PhoneStatusBar extends BaseStatusBar { mPile.setLayerType(View.LAYER_TYPE_HARDWARE, null); mVelocityTracker = VelocityTracker.obtain(); if (opening) { mAnimAccel = mExpandAccelPx; mAnimVel = mFlingExpandMinVelocityPx; mAnimY = getStatusBarHeight(); updateExpandedViewPos((int)mAnimY); mAnimating = true; mAnimatingReveal = true; resetLastAnimTime(); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mAnimationCallback, null); mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION, mRevealAnimationCallback, null); makeExpandedVisible(); makeExpandedVisible(true); } else { // it's open, close it? if (mAnimating) { Loading @@ -1317,7 +1340,7 @@ public class PhoneStatusBar extends BaseStatusBar { void performFling(int y, float vel, boolean always) { if (CHATTY) { Slog.d(TAG, "panel: will fling, y=" + y + " vel=" + vel); Slog.d(TAG, "panel: will fling, y=" + y + " vel=" + vel + " mExpanded=" + mExpanded); } mAnimatingReveal = false; Loading Loading @@ -1386,7 +1409,7 @@ public class PhoneStatusBar extends BaseStatusBar { boolean interceptTouchEvent(MotionEvent event) { if (SPEW) { Slog.d(TAG, "Touch: rawY=" + event.getRawY() + " event=" + event + " mDisabled=" + mDisabled); + mDisabled + " mTracking=" + mTracking); } else if (CHATTY) { if (event.getAction() != MotionEvent.ACTION_MOVE) { Slog.d(TAG, String.format( Loading Loading @@ -1431,9 +1454,8 @@ public class PhoneStatusBar extends BaseStatusBar { } } else if (mTracking) { trackMovement(event); final int minY = statusBarSize + getCloseViewHeight(); if (action == MotionEvent.ACTION_MOVE) { if (mAnimatingReveal && (y + mViewDelta) < minY) { if (mAnimatingReveal && (y + mViewDelta) < mNotificationPanelMinHeight) { // nothing } else { mAnimatingReveal = false; Loading Loading @@ -1467,7 +1489,15 @@ public class PhoneStatusBar extends BaseStatusBar { vel)); } performFling(y + mViewDelta, vel, false); if (mTrackingPosition == mNotificationPanelMinHeight) { // start the fling from the tracking position, ignore y and view delta mFlingY = mTrackingPosition; mViewDelta = 0; } else { mFlingY = y; } mFlingVelocity = vel; mHandler.post(mPerformFling); } } Loading Loading @@ -1870,7 +1900,6 @@ public class PhoneStatusBar extends BaseStatusBar { + " mTrackingPosition=" + mTrackingPosition + " gravity=" + mNotificationPanelGravity); } int panelh = 0; final int disph = getExpandedViewMaxHeight(); Loading Loading @@ -2156,10 +2185,24 @@ public class PhoneStatusBar extends BaseStatusBar { if (mNotificationPanelGravity <= 0) { mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP; } mNotificationPanelMinHeight = res.getDimensionPixelSize(R.dimen.notification_panel_padding_top) + res.getDimensionPixelSize(R.dimen.notification_panel_header_height) + res.getDimensionPixelSize(R.dimen.close_handle_underlap) + getNinePatchPadding(res.getDrawable(R.drawable.notification_panel_bg)).bottom; if (false) Slog.v(TAG, "updateResources"); } private static Rect getNinePatchPadding(Drawable d) { Rect padding = new Rect(); if (d instanceof NinePatchDrawable) { NinePatchDrawable ninePatch = (NinePatchDrawable) d; ninePatch.getPadding(padding); } return padding; } // // tracing // Loading