坚向的ViewPager,上下滑动的组件,android上下滑动 VerticalPager
16lz
2022-01-25
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;//}//});}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {int totalHeight=0;int count=getChildCount();for(int i=0;i(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;}@Overridepublic void computeScroll() {super.computeScroll();if(mScroller.computeScrollOffset()){scrollTo(0, mScroller.getCurrY());}else{}}}
xml布局
<?xml version="1.0" encoding="UTF-8"?>
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer