自定义控件,实现下拉回弹效果~
自定义控件,实现下拉回弹效果~
先来看看效果吧~
第一步:首先需要写一个类继承自ScrollView,因为有咋们有上下滑动的效果.
先来看看布局:
布局就是这个压子,非常的简单,这里需要注意一点,无论是使用ScrollView还是继承自ScrollView的控件,他都必去有且只有一个子类,要不然的话就不能使用
第二步:写一个继承自ScrollView 然后初始化画笔等
这里需要注意的是onFinishInflate()方法.
- onFinishInflate()XML布局被加载完后,就会回调onFinshInfalte这个方法,在这个方法中我们可以初始化控件和数据。
这里主要是获取子View对象的.
第三步:就是拦截onTouchEvent
- 黄色框代表上一个Y的坐标
- 红色框表示当前拦截的Y坐标
onTouchEvent()
- MotionEvent.ACTION_MOVE 手指已经按压的时候执行此方法,这里需要注意的是只需要在top和bottom中加他移动的距离,有人可能会问到?这里为什么要*0.75呢?因为如果不*0.75的话会显得很生硬,*0.75的话就感觉有点流畅了如果您没有强迫症的话,这个*0.75也可以不加,invalidate();粗暴的理解为就是刷新onDraw()方法吧 这里这个if(mView.getTop()< 150) 是设置的下拉范围,如果下拉>150了就不能往下拉了
- MotionEvent.ACTION_DOWN 手指刚刚按压的时候执行此方法 在此方法中创建一个矩形,有朋友可能会又问到了,这里为什么要创建矩形呢?其实主要目的就是为了确定当前下拉的时候的大小,如果下拉的是圆,就创建圆呗,那肯定不可能呀,您在想屁事吧~哈哈哈哈哈.所以说创建矩形就是一个不错的选择.
- MotionEvent.ACTION_UP 手指抬起的时候触发 这就到了本篇的关键所在,怎么回弹.回弹呢,也其实很简单,设置一个动画,让返回到以前的状态就好了~
最后一步:onDraw()绘制背景
这里可以发挥大家的想想,我设置的是黑色的背景,这里可以设置好多好看的样式,我就不带大家一一设置啦~
谢谢观看~