diff options
author | Chris Wren <cwren@android.com> | 2012-08-01 17:03:07 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-08-02 10:30:51 -0700 |
commit | 86d00fb40ae5cd01ce5a2e228e6de777eae6dee8 (patch) | |
tree | 29cc708c0026dddda5c14c6b49f90c3349f9ff4c /packages/SystemUI | |
parent | 437a0fbd57662e1d9d260da6f62ff83da2769a7e (diff) | |
download | frameworks_base-86d00fb40ae5cd01ce5a2e228e6de777eae6dee8.zip frameworks_base-86d00fb40ae5cd01ce5a2e228e6de777eae6dee8.tar.gz frameworks_base-86d00fb40ae5cd01ce5a2e228e6de777eae6dee8.tar.bz2 |
Venetian blinds policy for one-finger notification expansion.
Bug: 6538918
Change-Id: I8a6f860684b2477571f69eb4a79a5c106251b1a8
Diffstat (limited to 'packages/SystemUI')
3 files changed, 29 insertions, 91 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index eed8e77..6fc79c5 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -152,5 +152,5 @@ <dimen name="carrier_label_height">24dp</dimen> <!-- The distance you can pull a notificaiton before it pops open --> - <dimen name="one_finger_pop_limit">96dp</dimen> + <dimen name="one_finger_pop_limit">32dp</dimen> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java index 10dcd9e..6aa7dcd 100644 --- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java +++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java @@ -38,7 +38,6 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { public interface Callback { View getChildAtRawPosition(float x, float y); View getChildAtPosition(float x, float y); - View getPreviousChild(View currentChild); boolean canChildBeExpanded(View v); boolean setUserExpandedChild(View v, boolean userxpanded); } @@ -142,17 +141,6 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { } } - class PopState { - View mCurrView; - View mCurrViewTopGlow; - View mCurrViewBottomGlow; - float mOldHeight; - float mNaturalHeight; - float mInitialTouchY; - } - - private Stack<PopState> popStack; - /** * Handle expansion gestures to expand and contract children of the callback. * @@ -168,7 +156,6 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { mLargeSize = large; mContext = context; mCallback = callback; - popStack = new Stack<PopState>(); mScaler = new ViewScaler(); mGravity = Gravity.TOP; mScaleAnimation = ObjectAnimator.ofFloat(mScaler, "height", 0f); @@ -416,45 +403,40 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { switch (action) { case MotionEvent.ACTION_MOVE: { if (mPullingWithOneFinger) { - float target = ev.getY() - mInitialTouchY + mOldHeight; - float newHeight = clamp(target); - if (mHasPopped || target > mPopLimit) { + final float rawHeight = ev.getY() - mInitialTouchY + mOldHeight; + final float newHeight = clamp(rawHeight); + final boolean wasClosed = (mOldHeight == mSmallSize); + boolean isFinished = false; + if (rawHeight > mNaturalHeight) { + isFinished = true; + } + if (rawHeight < mSmallSize) { + isFinished = true; + } + + final float pull = Math.abs(ev.getY() - mInitialTouchY); + if (mHasPopped || pull > mPopLimit) { if (!mHasPopped) { vibrate(mPopDuration); mHasPopped = true; } + } + + if (mHasPopped) { mScaler.setHeight(newHeight); - // glow if overscale - if (target > mNaturalHeight) { - View previous = mCallback.getPreviousChild(mCurrView); - if (previous != null) { - setGlow(0f); - pushView(previous); - initScale(previous); - mInitialTouchY = ev.getY(); - target = mOldHeight; - newHeight = clamp(target); - mHasPopped = false; - } else { - setGlow(calculateGlow(target, newHeight)); - } - } else if (target < mSmallSize && !popStack.empty()) { - setGlow(0f); - initScale(popView()); - mInitialTouchY = ev.getY(); - setGlow(GLOW_BASE); - } else { - setGlow(calculateGlow(target, newHeight)); - } + setGlow(GLOW_BASE); } else { - if (target < mSmallSize && !popStack.empty()) { - setGlow(0f); - initScale(popView()); - mInitialTouchY = ev.getY(); - setGlow(GLOW_BASE); - } else { - setGlow(calculateGlow(4f * target, mSmallSize)); - } + setGlow(calculateGlow(4f * pull, 0f)); + } + + final int x = (int) ev.getX(); + final int y = (int) ev.getY(); + View underPointer = findView(x, y); + if (isFinished && underPointer != null && underPointer != mCurrView) { + setGlow(0f); + initScale(underPointer); + mInitialTouchY = ev.getY(); + mHasPopped = false; } return true; } @@ -516,9 +498,6 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { } private void clearView() { - while (!popStack.empty()) { - popStack.pop(); - } mCurrView = null; mCurrViewTopGlow = null; mCurrViewBottomGlow = null; @@ -539,33 +518,6 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { } } - private void pushView(View v) { - PopState state = new PopState(); - state.mCurrView = mCurrView; - state.mCurrViewTopGlow = mCurrViewTopGlow; - state.mCurrViewBottomGlow = mCurrViewBottomGlow; - state.mOldHeight = mOldHeight; - state.mNaturalHeight = mNaturalHeight; - state.mInitialTouchY = mInitialTouchY; - popStack.push(state); - } - - private View popView() { - if (popStack.empty()) { - return null; - } - - PopState state = popStack.pop(); - mCurrView = state.mCurrView; - mCurrViewTopGlow = state.mCurrViewTopGlow; - mCurrViewBottomGlow = state.mCurrViewBottomGlow; - mOldHeight = state.mOldHeight; - mNaturalHeight = state.mNaturalHeight; - mInitialTouchY = state.mInitialTouchY; - - return mCurrView; - } - @Override public void onClick(View v) { initScale(v); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java index a10b6c6..61e5ab6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java @@ -204,20 +204,6 @@ public class NotificationRowLayout return null; } - public View getPreviousChild(View currentChild) { - final int count = getChildCount(); - for (int childIdx = 0; childIdx < count; childIdx++) { - if (getChildAt(childIdx) == currentChild) { - if (childIdx == 0) { - return null; - } else { - return getChildAt(childIdx - 1); - } - } - } - return null; - } - public View getChildContentView(View v) { return v; } |