自定义View常用基础

来源:互联网 发布:trustdata移动大数据 编辑:程序博客网 时间:2024/05/22 08:20

Scroller

ScrollTo

  • ScrollTo(x,y),这里传进来的是目的地的坐标,如下图(前提都是以父容器(一般是LinearLayout等这些父容器)坐标原点(0,0)为基础)
  • 这里的点的坐标正负怎么看?与数学上的xy轴一样,y轴不变,x轴取反看,以父View左上角的点为原点(0,0)看,作为参照物的点可以用View左上角的点
  • View内部有两个属性mScrollX,mScrollY,可以分别用getScrollX(),getScrollY()获取,主要表示偏移量,正负跟随xy坐标正负.
    这里写图片描述

ScrollBy

  • 查看源码,其实scrollBy()也是scrollTo()方法的使用,这里传进去的参数为:当前偏移量+目的地坐标,即发生相对当前位置的移动
public void scrollBy(int x,int y){     scrollTo(mScrollX+x,mScrollY+y);}
  • 比如:

scrollTo(100,0) //移动到(100,0)
scrollBy(100,0) //在经过上一步scrollTo(100,0)之后,已经等价于scrollTo(200,0),移动到(200,0)这个点处,即在(100,0)这个位置上移动x方向100的距离
当然,如果原来当前位置坐标为(0,0),则scrollTo()与scrollBy()的效果就是一样的了
(更简单的看就是此时的原点已经从 (0,0)变成(100,0)来看了)

View.getX

  1. View的坐标:都是相对于父容器而言,单位为像素px,如下图:
    这里写图片描述
  2. MotionEvent中的getRowX()和getX()
    2.1.event.getRowX():触摸点相对于屏幕原点的x坐标
    2.2.event.getX():触摸点相对于其所在父容器原点的x坐标
    (正负呢?待定)
    这里写图片描述
原创粉丝点击