summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurice Lam <yukl@google.com>2015-04-30 18:38:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-04-30 18:38:07 +0000
commit88b1c74890e40c2699ce830c381b49e13c780485 (patch)
tree382037ce2988664a15585a09d5408c475b308c8a
parentb703dcd41045adc3d73ab83d297443f29b441599 (diff)
parent4a6e72df08c92a696d6b5d35b197e86585952ed9 (diff)
downloadsetupwizard-88b1c74890e40c2699ce830c381b49e13c780485.tar.gz
Merge "[SetupWizardLib] Use translationY to stick header" into ub-setupwizard-alatar
-rw-r--r--library/main/src/com/android/setupwizardlib/view/StickyHeaderScrollView.java30
1 files changed, 5 insertions, 25 deletions
diff --git a/library/main/src/com/android/setupwizardlib/view/StickyHeaderScrollView.java b/library/main/src/com/android/setupwizardlib/view/StickyHeaderScrollView.java
index a8c942f..97c682d 100644
--- a/library/main/src/com/android/setupwizardlib/view/StickyHeaderScrollView.java
+++ b/library/main/src/com/android/setupwizardlib/view/StickyHeaderScrollView.java
@@ -22,7 +22,6 @@ import android.graphics.Canvas;
import android.graphics.RectF;
import android.os.Build;
import android.util.AttributeSet;
-import android.view.MotionEvent;
import android.view.View;
import android.view.WindowInsets;
@@ -36,8 +35,7 @@ import android.view.WindowInsets;
* 1. The two supported scenarios are StickyHeaderScrollView -> subview (stickyContainer) -> sticky,
* and StickyHeaderScrollView -> container -> subview (sticky).
* The arrow (->) represents parent/child relationship and must be immediate child.
- * 2. The view does not work well with padding. b/16190933
- * 3. If fitsSystemWindows is true, then this will offset the sticking position by the height of
+ * 2. If fitsSystemWindows is true, then this will offset the sticking position by the height of
* the system decorations at the top of the screen.
*
* @see StickyHeaderListView
@@ -47,7 +45,6 @@ public class StickyHeaderScrollView extends BottomScrollView {
private View mSticky;
private View mStickyContainer;
private int mStatusBarInset = 0;
- private RectF mStickyRect = new RectF();
public StickyHeaderScrollView(Context context) {
super(context);
@@ -75,20 +72,9 @@ public class StickyHeaderScrollView extends BottomScrollView {
}
@Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (mStickyRect.contains(ev.getX(), ev.getY())) {
- ev.offsetLocation(-mStickyRect.left, -mStickyRect.top);
- return mStickyContainer.dispatchTouchEvent(ev);
- } else {
- return super.dispatchTouchEvent(ev);
- }
- }
-
- @Override
- public void draw(Canvas canvas) {
- super.draw(canvas);
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ super.onScrollChanged(l, t, oldl, oldt);
if (mSticky != null) {
- final int saveCount = canvas.save();
// The view to draw when sticking to the top
final View drawTarget = mStickyContainer != null ? mStickyContainer : mSticky;
// The offset to draw the view at when sticky
@@ -97,17 +83,11 @@ public class StickyHeaderScrollView extends BottomScrollView {
final int drawTop = drawTarget.getTop() - getScrollY();
if (drawTop + drawOffset < mStatusBarInset || !drawTarget.isShown()) {
// ScrollView translates the whole canvas so we have to compensate for that
- mStickyRect.set(0, -drawOffset + mStatusBarInset, drawTarget.getWidth(),
- drawTarget.getHeight() - drawOffset + mStatusBarInset);
- canvas.translate(0, -drawTop + mStickyRect.top);
- canvas.clipRect(0, 0, drawTarget.getWidth(), drawTarget.getHeight());
- drawTarget.draw(canvas);
+ drawTarget.setTranslationY(getScrollY() - drawOffset);
} else {
- mStickyRect.setEmpty();
+ drawTarget.setTranslationY(0);
}
- canvas.restoreToCount(saveCount);
}
- onDrawScrollBars(canvas);
}
@Override