Android ScrollView实现横向和竖向拖动回弹效果
更新时间:2018年09月27日 17:09:14 作者:摄氏三十七度
这篇文章主要为大家详细介绍了Android ScrollView实现横向和竖向拖动回弹效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
原理
在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);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
基于barcodescanner实现Android二维码扫描功能
这篇文章主要为大家详细介绍了基于barcodescanner实现Android二维码扫描功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
为Android Studio编写自定义Gradle插件的教程
这篇文章主要介绍了为Android Studio编写自定义Gradle插件的教程,Android Studio现在基本上已经成为了安卓开发的标配IDE,友可以参考下2016-02-02
Android 破解视频App去除广告功能详解及解决办法总结
这篇文章主要介绍了Android 破解视频App去除广告功能详解及解决办法总结的相关资料,这里对视频播放原理及破解去除广告几种方法进行了总结,需要的朋友可以参考下2016-12-12


最新评论