栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

具有惯性和边缘阻力/回弹的平滑滚动

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

具有惯性和边缘阻力/回弹的平滑滚动

使用OnGestureListener。要提供平滑的滚动,请创建一个滚动器(在您的自定义视图中)。当手势侦听器检测到猛击事件时,将滚动器设置为向上。然后,重写自定义视图的computeScroll()方法。

检查此示例以了解如何实现它。

int lastX;int lastY;Scroller scroller;    @Overridepublic void computeScroll() {  if (scroller.computeScrollOffset()) {    if (!scrolledLastframe) {      lastX = scroller.getStartX();      lastY = scroller.getStartY();    }    int dx = scroller.getCurrX() - lastX;    int dy = scroller.getCurrY() - lastY;    lastX = scroller.getCurrX();    lastY = scroller.getCurrY();    doScroll(dx, dy);    scrolledLastframe = true;  } else {    scrolledLastframe = false;  }}public void doFling(int startX, int startY, int velocityX, int velocityY,    int minX, int maxX, int minY, int maxY) {  scroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);  invalidate();}public void doScroll(int dx, int dy) {  currentX+=dx;  currentY+=dy;  invalidate();}private class ProgramGestureListener extends SimpleonGestureListener {    @Override    public boolean onScroll(MotionEvent e1, MotionEvent e2,        float distanceX, float distanceY) {      doScroll(distanceX, distanceY);      return true;    }    @Override    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {      int max_left = getMaxHorizontalScroll();      int max_top = getMaxVerticalScroll();      int min_left = getMinHorizontalScroll();      int min_top = getMinVerticalScroll();      int startX = getCurrentHorizontalScroll();      int startY = getCurrentVerticalScroll();      doFling(startX, startY, (int) -velocityX, (int) -velocityY,          min_left, max_left, min_top, max_top);      return true;    }  }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440992.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号