人生难得几回搏,此时不搏待何时。这篇文章主要讲述坚向的ViewPager,上下滑动的组件,android上下滑动VerticalPager相关的知识,希望能为你提供帮助。
package com.zhulin.android.atools; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.animation.Interpolator; import android.widget.Scroller; import android.widget.Toast; public class VerticalPager extends ViewGroup{ private Scroller mScroller; private Context mContext; public VerticalPager(Context context, AttributeSet attrs) { super(context, attrs); this.mContext=context; mScroller=new Scroller(context); //mScroller=new Scroller(mContext, new Interpolator() { // //@Override //public float getInterpolation(float input) { //return 300; //} //}); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int totalHeight=0; int count=getChildCount(); for(int i=0; i< count; i++){ View childView=getChildAt(i); //int measureHeight=childView.getMeasuredHeight(); //int measureWidth=childView.getMeasuredWidth(); childView.layout(l, totalHeight, r, totalHeight+b); totalHeight+=b; } } private VelocityTracker mVelocityTracker; @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width=MeasureSpec.getSize(widthMeasureSpec); int height=MeasureSpec.getSize(heightMeasureSpec); int count=getChildCount(); for(int i=0; i< count; i++){ getChildAt(i).measure(width, height); } setMeasuredDimension(width, height); } private int mLastMotionY; @Override public boolean onTouchEvent(MotionEvent event) { if(mVelocityTracker==null){ mVelocityTracker=VelocityTracker.obtain(); } mVelocityTracker.addMovement(event); int action=event.getAction(); float y=event.getY(); switch(action){ case MotionEvent.ACTION_DOWN: if(!mScroller.isFinished()){ mScroller.abortAnimation(); } mLastMotionY=(int) y; Log.d("montion", ""+getScrollY()); break; case MotionEvent.ACTION_MOVE: int deltaY=(int) (mLastMotionY-y); scrollBy(0,deltaY); //mScroller.startScroll(0, getScrollY(), 0, deltaY); invalidate(); mLastMotionY=(int) y; break; case MotionEvent.ACTION_UP: if(mVelocityTracker!=null){ mVelocityTracker.recycle(); mVelocityTracker=null; }if(getScrollY()< 0){ mScroller.startScroll(0, -400, 0, 400); }else if(getScrollY()> (getHeight()*(getChildCount()-1))){ View lastView=getChildAt(getChildCount()-1); mScroller.startScroll(0,lastView.getTop()+300, 0, -300); }else{ int position=getScrollY()/getHeight(); int mod=getScrollY()%getHeight(); if(mod> getHeight()/3){ View positionView=getChildAt(position+1); mScroller.startScroll(0, positionView.getTop()-300, 0, +300); }else{ View positionView=getChildAt(position); mScroller.startScroll(0, positionView.getTop()+300, 0, -300); }} invalidate(); break; //case MotionEvent.ACTION_MASK: //if(getScrollY()< 0){ //mScroller.startScroll(0, 0, 0, 0); //}else if(getScrollY()> (getHeight()*(getChildCount()-1)){ //} //invalidate(); //break; }return true; } @Override public void computeScroll() { super.computeScroll(); if(mScroller.computeScrollOffset()){ scrollTo(0, mScroller.getCurrY()); }else{} }}
xml布局
< ?
xml version="1.0" encoding="UTF-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > < com.zhulin.android.atools.VerticalPager android:id="@+id/vertyPager1" android:layout_width="fill_parent" android:layout_height="fill_parent" > < TextView android:background="@drawable/a1" android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="100dp" android:text="TextView1111" /> < TextView android:background="@drawable/a2" android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="100dp" android:text="TextView2222" /> < TextView android:background="@drawable/a3" android:id="@+id/textView3" android:layout_width="fill_parent" android:layout_height="100dp" android:text="TextView2222" /> < TextView android:background="@drawable/a4" android:id="@+id/textView4" android:layout_width="fill_parent" android:layout_height="100dp" android:text="TextView2222" /> < /com.zhulin.android.atools.VertyPager> < /LinearLayout>
【坚向的ViewPager,上下滑动的组件,android上下滑动VerticalPager】
推荐阅读
- AndroidStudio3.0 下载使用新功能介绍
- DB2 RazorSQL查询构建器
- DB2 RazorSQL导入数据
- PL-SQL常见的面试题有哪些(答案和解析介绍)
- Python与JavaScript差异对比(有哪些区别())
- 最佳的机器学习常见面试题和答案合集解析
- MongoDB常见面试题有哪些(答案和解析指南)
- Jenkins常见面试题有哪些(答案和解析指南)
- 10大常用Python通用库(哪个比较好())