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; //回彈最后一次滾動,復(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-12Android FlowLayout流式布局實現(xiàn)詳解
這篇文章主要為大家詳細介紹了Android FlowLayout流式布局的實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09Android編程判斷是否連接網(wǎng)絡(luò)的方法【W(wǎng)iFi及3G判斷】
這篇文章主要介紹了Android編程判斷是否連接網(wǎng)絡(luò)的方法,結(jié)合實例形式分析了Android針對WiFi及3G網(wǎng)絡(luò)連接的判斷方法,需要的朋友可以參考下2017-02-02Android webview打開本地圖片上傳實現(xiàn)代碼
這篇文章主要為大家詳細介紹了Android webview打開本地圖片上傳的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02Flutter runApp GestureBinding使用介紹
這篇文章主要為大家介紹了Flutter runApp GestureBinding使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12Android ViewPager實現(xiàn)選項卡切換
這篇文章主要介紹了Android ViewPager實現(xiàn)選項卡切換,詳細分析了ViewPager實現(xiàn)選項卡切換功能,感興趣的小伙伴們可以參考一下2016-02-02android自定義組件實現(xiàn)儀表計數(shù)盤
這篇文章主要為大家詳細介紹了android自定義組件實現(xiàn)儀表計數(shù)盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11