summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/values/dimens.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/ExpandHelper.java104
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java14
3 files changed, 29 insertions, 91 deletions
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index eed8e77d499b..6fc79c59bd5f 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 10dcd9eb5c49..6aa7dcded78b 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 a10b6c6e139f..61e5ab63d6e8 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;
}