国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android ScrollView實現橫向和豎向拖動回彈效果

2019-10-21 21:38:08
字體:
來源:轉載
供稿:網友

原理

在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);     } } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 右玉县| 奎屯市| 车致| 师宗县| 新建县| 兴城市| 皮山县| 布拖县| 巫山县| 江源县| 舞钢市| 安图县| 剑河县| 饶阳县| 益阳市| 昂仁县| 阿拉善盟| 高密市| 瑞金市| 纳雍县| 仁布县| 神农架林区| 策勒县| 萝北县| 万全县| 广安市| 简阳市| 札达县| 北安市| 磐石市| 班玛县| 沁水县| 大城县| 马关县| 江口县| 清涧县| 宁海县| 巧家县| 柳河县| 黄石市| 彰武县|