searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Android View与ViewGroup区别

2023-10-18 09:12:29
5
0

1、View和ViewGroup关系

View是Android所有控件的基类,常用的TextView和ImageView是继承自VIew。

ViewGroup是View的组合,它可以包含很多View以及ViewGroup,而包含的ViewGroup又可以包含View和ViewGroup,以此类推,行程一个View树。我们常用的LinearLayout就是一个ViewGroup。ViewGroup也继承自View。

 

 

ViewGroup的组织结构图

 

继承关系

 

2、坐标系

这里优先提到坐标系,是因为坐标系数据额外知识,但是对于画自定义的View的位置却十分的重要。Android系统又两种坐标系,分别为Android坐标系和View坐标系。如果你连这个View的位置都不知道,怎么去操作View 呢?


2.1、Android坐标系

 在Android中,将屏幕左上角的顶点作为坐标原点,原点向右侧是X轴的正防线,向下是Y轴的正方向。使用getRawX()和getRawY()方法获取到坐标值。

Android坐标系 

 

 2.2、View坐标系

1、View和ViewGroup关系

View是Android所有控件的基类,常用的TextView和ImageView是继承自VIew。

ViewGroup是View的组合,它可以包含很多View以及ViewGroup,而包含的ViewGroup又可以包含View和ViewGroup,以此类推,行程一个View树。我们常用的LinearLayout就是一个ViewGroup。ViewGroup也继承自View。


1. View获取自身的高和宽

View的宽高系统给的方法是getHeight和getWidth,查看源码就会知道是怎么算出来的了,如下:

    //右侧边到父的左侧距离 - 左侧边到父的左侧距离
    width=getRight()-getLeft();
     
    //下边到父的顶部距离 - 上边到父的顶部距离
    height=getBottom()-getTop();

2.View的自身坐标

通过如下方法可以获得View到其父控件(ViewGroup) 的距离。

  • getTop () :获取View自身顶边到其父布局顶边的距离。
  • getLeft():获取View自身左边到其父布局左边的距离。
  • getRight () :获取View自身右边到其父布局左边的距离。
  • getBottom () :获取View自身底边到其父布局项边的距离。

3.触摸点

中间的那个圆点就是我们的触摸的点,自定义View伴随的点击时间、滑动时间都是根据你的触摸点来作为起点的。

无论View还是ViewGroup,最总的点击时间都会onTouchEvent(MotionEvent event)方法来处理,比如当前View在onInterceptTouchEvent中拦截,也不洗由当前View的onTouchEvent来处理你所拦截的事件。

MotionEvent也提供了获取焦点坐标的各种方法:

  • getX():获取点击事件距离控件左边的距离,即视图坐标。
  • getY () :获取点击事件距离控件顶边的距离,即视图坐标。
  • getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标。
  • getRawY():获取点击事件距离整个屏幕项边的距离,即绝对坐标。

 

0条评论
作者已关闭评论
z****n
3文章数
0粉丝数
z****n
3 文章 | 0 粉丝
z****n
3文章数
0粉丝数
z****n
3 文章 | 0 粉丝
原创

Android View与ViewGroup区别

2023-10-18 09:12:29
5
0

1、View和ViewGroup关系

View是Android所有控件的基类,常用的TextView和ImageView是继承自VIew。

ViewGroup是View的组合,它可以包含很多View以及ViewGroup,而包含的ViewGroup又可以包含View和ViewGroup,以此类推,行程一个View树。我们常用的LinearLayout就是一个ViewGroup。ViewGroup也继承自View。

 

 

ViewGroup的组织结构图

 

继承关系

 

2、坐标系

这里优先提到坐标系,是因为坐标系数据额外知识,但是对于画自定义的View的位置却十分的重要。Android系统又两种坐标系,分别为Android坐标系和View坐标系。如果你连这个View的位置都不知道,怎么去操作View 呢?


2.1、Android坐标系

 在Android中,将屏幕左上角的顶点作为坐标原点,原点向右侧是X轴的正防线,向下是Y轴的正方向。使用getRawX()和getRawY()方法获取到坐标值。

Android坐标系 

 

 2.2、View坐标系

1、View和ViewGroup关系

View是Android所有控件的基类,常用的TextView和ImageView是继承自VIew。

ViewGroup是View的组合,它可以包含很多View以及ViewGroup,而包含的ViewGroup又可以包含View和ViewGroup,以此类推,行程一个View树。我们常用的LinearLayout就是一个ViewGroup。ViewGroup也继承自View。


1. View获取自身的高和宽

View的宽高系统给的方法是getHeight和getWidth,查看源码就会知道是怎么算出来的了,如下:

    //右侧边到父的左侧距离 - 左侧边到父的左侧距离
    width=getRight()-getLeft();
     
    //下边到父的顶部距离 - 上边到父的顶部距离
    height=getBottom()-getTop();

2.View的自身坐标

通过如下方法可以获得View到其父控件(ViewGroup) 的距离。

  • getTop () :获取View自身顶边到其父布局顶边的距离。
  • getLeft():获取View自身左边到其父布局左边的距离。
  • getRight () :获取View自身右边到其父布局左边的距离。
  • getBottom () :获取View自身底边到其父布局项边的距离。

3.触摸点

中间的那个圆点就是我们的触摸的点,自定义View伴随的点击时间、滑动时间都是根据你的触摸点来作为起点的。

无论View还是ViewGroup,最总的点击时间都会onTouchEvent(MotionEvent event)方法来处理,比如当前View在onInterceptTouchEvent中拦截,也不洗由当前View的onTouchEvent来处理你所拦截的事件。

MotionEvent也提供了获取焦点坐标的各种方法:

  • getX():获取点击事件距离控件左边的距离,即视图坐标。
  • getY () :获取点击事件距离控件顶边的距离,即视图坐标。
  • getRawX():获取点击事件距离整个屏幕左边的距离,即绝对坐标。
  • getRawY():获取点击事件距离整个屏幕项边的距离,即绝对坐标。

 

文章来自个人专栏
Android手机
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0