Android ScrollView實現(xiàn)橫向和豎向拖動回彈效果
原理
在android2.3版本中,View類中新增了一個方法:overScrollBy。通過覆蓋該方法,就可以達(dá)到阻尼回彈的效果。
示例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; //回彈最后一次滾動,復(fù)位
}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; //回彈最后一次滾動,復(fù)位
}else{
newDeltaX = delta; //增加阻尼效果
}
return super.overScrollBy(newDeltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, MAX_SCROLL, maxOverScrollY, isTouchEvent);
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
配置android開發(fā)環(huán)境時出現(xiàn)eclipse獲取不到ADT的解決方法
這篇文章主要介紹了配置android開發(fā)環(huán)境時出現(xiàn)eclipse獲取不到ADT的解決方法,涉及針對開發(fā)環(huán)境hosts文件域名映射的修改及eclipse配置的修改技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-12-12
Android FlowLayout流式布局實現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了Android FlowLayout流式布局的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09
Android編程判斷是否連接網(wǎng)絡(luò)的方法【W(wǎng)iFi及3G判斷】
這篇文章主要介紹了Android編程判斷是否連接網(wǎng)絡(luò)的方法,結(jié)合實例形式分析了Android針對WiFi及3G網(wǎng)絡(luò)連接的判斷方法,需要的朋友可以參考下2017-02-02
Android webview打開本地圖片上傳實現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android webview打開本地圖片上傳的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Flutter runApp GestureBinding使用介紹
這篇文章主要為大家介紹了Flutter runApp GestureBinding使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android ViewPager實現(xiàn)選項卡切換
這篇文章主要介紹了Android ViewPager實現(xiàn)選項卡切換,詳細(xì)分析了ViewPager實現(xiàn)選項卡切換功能,感興趣的小伙伴們可以參考一下2016-02-02
android自定義組件實現(xiàn)儀表計數(shù)盤
這篇文章主要為大家詳細(xì)介紹了android自定義組件實現(xiàn)儀表計數(shù)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11

