zoukankan      html  css  js  c++  java
  • Android View Scroller

    在继承View控件重写控件功能时,时常会对控件内容进行滚动,那么就需要调用View内容移动的两个方法之一:
    View.scrollBy(int x, int y) --> 内容平滑地滚动到目标坐标(可看的移动效果)
    View.scrollTo(int x, int y) --> 内容马上滚动到目标坐标(瞬移!?)


    当滚动时,还需要判断滚动的内容是否超过显示界限,此时要调用到两个方法来获取滚动的距离(这里需要注意的是,View是以左上角为坐标原点(0,0)),
    方法:View.getScrollX() -->获取水平坐标移动距离
          View.getScrollY() -->获取垂直坐标移动距离
    如:
    1.手指向右滑动,而内容向左滚动,View.getScrollX()得到的是负值
    2.手指向左滑动,而内容向右滚动,View.getScrollX()得到的是正值
    3.手指向下滑动,而内容向上滚动,View.getScrollY()得到的是负值
    4.手指向上滑动,而内容向下滚动,View.getScrollY()得到的是正值
    简而言之,就是手指滑动的方向和内容滚动的方向相反,参考ListView 和 HorizontalScrollView 的界面效果便知
    在获取到值后,可以通过(new Scroller()).startScroll(int startX, int startY, int dx, int dy)方法将内容滚动到适当的位置
    在View的重写方法中进行Scroller滚动响应:

    @Override
        public void computeScroll() {
            if (scroller.computeScrollOffset()) {
                // 调用这个下面的条件是由于scroller调用了滑动从而使它激发
                scrollTo(scroller.getCurrX(), scroller.getCurrY());
                invalidate();
                return;
            }
            super.computeScroll();
        }



       

  • 相关阅读:
    好记性不如烂笔头-linux学习笔记2kickstart自动化安装和cacti
    好记性不如烂笔头-linux学习笔记1
    关于TP5中的依赖注入和容器和facade
    vbs 脚本2
    vbs脚本
    Memcache 和 Radis 比较
    MongoDB 索引的使用, 管理 和优化
    mysql大数据高并发处理
    sql处理高并发
    LB 负载均衡的层次结构
  • 原文地址:https://www.cnblogs.com/rfheh/p/4164842.html
Copyright © 2011-2022 走看看