赞
踩
import android.content.Context; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewCompat; import android.support.v4.widget.ViewDragHelper; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; /** * 用于上下拖动切换界面的控件, 只允许两个子view */ public class VerticalSlideLayout extends ViewGroup { private static final int THRESHOLD_VEL = 100; private static final int THRESHOLD_DISTANCE = 100; private ViewDragHelper mDragHelper; private PageChangeListener mListener; private View mViewOne, mViewTwo; private int mViewHeight; private int mPageNum; private float mOldX, mOldY; public VerticalSlideLayout(Context context) { this(context, null); } public VerticalSlideLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public VerticalSlideLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mDragHelper = ViewDragHelper.create(this, 10f, new DragHelperCallback()); mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_BOTTOM); } @Override protected void onFinishInflate() { mViewOne = getChildAt(0); mViewTwo = getChildAt(1); } @Override public void computeScroll() { if (mDragHelper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this); } } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (mViewOne.getBottom() > 0 && mViewOne.getTop() < 0) { return false; } final int action = MotionEventCompat.getActionMasked(ev); switch (action) { case MotionEvent.ACTION_DOWN: mOldX = ev.getX(); mOldY =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。