自定义控件,实现下拉回弹效果~

先来看看效果吧~

在这里插入图片描述

第一步:首先需要写一个类继承自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()绘制背景

在这里插入图片描述

这里可以发挥大家的想想,我设置的是黑色的背景,这里可以设置好多好看的样式,我就不带大家一一设置啦~

谢谢观看~

猜你喜欢

转载自blog.csdn.net/weixin_44819566/article/details/106101701
今日推荐