Android ScrollView實現(xiàn)橫向和豎向拖動回彈效果
更新時間:2018年09月27日 17:09:14 作者:攝氏三十七度
這篇文章主要為大家詳細介紹了Android ScrollView實現(xiàn)橫向和豎向拖動回彈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
原理
在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;// 阻尼系數(shù)
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;// 阻尼系數(shù)
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實現(xiàn)Android二維碼掃描功能
這篇文章主要為大家詳細介紹了基于barcodescanner實現(xiàn)Android二維碼掃描功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
為Android Studio編寫自定義Gradle插件的教程
這篇文章主要介紹了為Android Studio編寫自定義Gradle插件的教程,Android Studio現(xiàn)在基本上已經(jīng)成為了安卓開發(fā)的標配IDE,友可以參考下2016-02-02
Android 破解視頻App去除廣告功能詳解及解決辦法總結
這篇文章主要介紹了Android 破解視頻App去除廣告功能詳解及解決辦法總結的相關資料,這里對視頻播放原理及破解去除廣告幾種方法進行了總結,需要的朋友可以參考下2016-12-12
Android LinearLayout實現(xiàn)自動換行
這篇文章主要為大家詳細介紹了Android LinearLayout實現(xiàn)自動換行,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08
android ScrollView實現(xiàn)下拉放大頭部圖片
這篇文章主要為大家詳細介紹了android ScrollView實現(xiàn)下拉放大頭部圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12

