TouchEvent(5)View的scroll行为理解

可以把Android View的屏幕scroll行为比作 用照相机拍照,

  Android View比作实景,

  屏幕比作镜头.

  镜头里显示实景的部分景象.

  scroll行为比作 移动镜头寻找实景里目标景象的动作.

  镜头有自己的坐标系,它的原点是左上角[0,0] ,

  实景没有坐标系,但可以由镜头坐标虚拟,镜头第一次指定的区域可以看作实景坐标的原点区域,

该区域左上为负,该区域右下为正,在view的 onLayout 里指定,可以分别指定view上的每个控件的坐标.

如:

  @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        //leftMenu+middleMenu+rightMenu就是完整的实景
        middleMenu.layout(l, t, r, b);//原点区域
        leftMenu.layout(l - leftMenu.getMeasuredWidth(), t, r, b);//左边区域
        rightMenu.layout(//右边区域
                l + middleMenu.getMeasuredWidth(),
                t,
                l + middleMenu.getMeasuredWidth()
                        + rightMenu.getMeasuredWidth(), b);
    }

 public void scrollTo(int x, int y) 是将镜头对准实景坐标系的x,y处, 

 public void scrollBy(int x, int y) 是将镜头在实景坐标系里水平移动x,竖直移动y.

 public final int getScrollX() 得到当前光标在实景坐标系里的x

 public final int getScrollY() 得到当前光标在实景坐标系里的y

 以上函数x与y 正为右下,负为左上.

posted @ 2015-06-23 11:30  f9q  阅读(160)  评论(0)    收藏  举报