浓淡由它冰雪中,张飞跃事件,说出你的故事陈思成
原理
在android2.3版本中,view类中新增了一个方法:overscrollby。通过覆盖该方法,就可以达到阻尼回弹的效果。
示例1、竖向滚动
public class reboundscrollview extends scrollview{ private static final int max_scroll = 200; private static final float scroll_ratio = 0.5f;// 阻尼系数 public reboundscrollview(context context) { super(context); } public reboundscrollview(context context, attributeset attrs) { super(context, attrs); } public reboundscrollview(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); } @override protected boolean overscrollby(int deltax, int deltay, int scrollx, int scrolly, int scrollrangex, int scrollrangey, int maxoverscrollx, int maxoverscrolly, boolean istouchevent) { int newdeltay = deltay; int delta = (int) (deltay * scroll_ratio); if((scrolly+deltay)==0 || (scrolly-scrollrangey+deltay)==0){ newdeltay = deltay; //回弹最后一次滚动,复位 }else{ newdeltay = delta; //增加阻尼效果 } return super.overscrollby(deltax, newdeltay, scrollx, scrolly, scrollrangex, scrollrangey, maxoverscrollx, max_scroll, istouchevent); } }
示例2、横向滚动
public class reboundhscrollview extends horizontalscrollview{ private static final int max_scroll = 200; private static final float scroll_ratio = 0.5f;// 阻尼系数 public reboundhscrollview(context context) { super(context); } public reboundhscrollview(context context, attributeset attrs) { super(context, attrs); } public reboundhscrollview(context context, attributeset attrs, int defstyle) { super(context, attrs, defstyle); } @override protected boolean overscrollby(int deltax, int deltay, int scrollx, int scrolly, int scrollrangex, int scrollrangey, int maxoverscrollx, int maxoverscrolly, boolean istouchevent) { int newdeltax = deltax; int delta = (int) (deltax * scroll_ratio); if((scrollx+deltax)==0 || (scrollx-scrollrangex+deltax)==0){ newdeltax = deltax; //回弹最后一次滚动,复位 }else{ newdeltax = delta; //增加阻尼效果 } return super.overscrollby(newdeltax, deltay, scrollx, scrolly, scrollrangex, scrollrangey, max_scroll, maxoverscrolly, istouchevent); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论