Android ScrollView实现横向和竖向拖动回弹效果
程序员文章站
2023-12-04 20:32:40
本文实例为大家分享了android scrollview实现拖动回弹效果的具体代码,供大家参考,具体内容如下
原理
在android2.3版本中,view类...
原理
在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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。