博客
关于我
Android 获取子 View 的位置及坐标的方式
阅读量:592 次
发布时间:2019-03-11

本文共 1299 字,大约阅读时间需要 4 分钟。

一、View 概述

视图 (View) 是 Android 中布局组件的核心类,负责在屏幕上显示用户界面。Versionhistory TextView 是最常见的视图类型之一,它用于显示只读文本,例如 Activity 中的提示信息。

1.2、View 分类

View 可以分为两种类型,从功能上看,主要分为单一视图和视图组。单一视图(如 TextView、EditText)没有子元素,而视图组(如 LinearLayout、RelativeLayout)可以包含多个子 View。

1.3、View 类简介

View 是所有 Android 视图组件的基类,其构造函数有四个版本,主要区分调用方式:

  • 通过 new View(Context) 创建默认
  • 通过 View(Context, AttributeSet) 创建从 XML 获得属性
  • 过_inp 代码注释可以看出,前者用于程序中直接 new 创建,后者用于 XML layouts 中定义视图。

    二、Android 坐标系

    Android 的坐标系有略微不同,是从左上角开始的.x 增大向右,.y 增大向下。它与传统数学坐标不同,但在开发中使用时需要注意这一点。

    三、View 的位置

    View 的布局由四个属性决定:Top、Bottom、Left 和 Right。每个属性指定子 View 在父 View 中的位置。例如,在 LinearLayout 中使用 gravity:center 会使子视图居中。通过 getTop() 等方法可以获取 View 的具体坐标。使用绝对值布局时,可以直接指定 x 和 y 的位置值,如 android:layout_x="200px"。

    四、获取 View 位置的方式

    要获取 View 的位置,可以通过四个方法:getTop()、getLeft()、getBottom() 和 getRight()。这些方法返回的是相对父 View 的坐标值。例如,在上文中使用 延迟加载 的技巧,可以确保 View 已绘制完成后再获取其位置。

    需要注意的是,在布局设置为绝对值布局(absoulteinlayout)时,座标是根据父控件的绝对值位置来定位的。此外,建议在获取 View 的坐标时,避免在 Activity.onResume() 中直接调用,否则可能会因为 View 未绘制完成而得到错误的初始位置值,一般建议在 ViewTreeObserver 中添加绘制完成的 监听器.

    此外,在开发中可以根据需要选择合适的布局方式。虽然绝对值布局提供了高精度的定位,但建议在大多数情况下优先使用相对值布局,以便于布局维护和代码简化。例如,利用 LinearLayout 中的 gravity 属性可以轻松实现中心对齐,降低代码的复杂性。

    最后,通过源码注释可以深入理解 View 的工作原理,并学会更高效地管理 View 的布局和定位。在实际开发中,合理使用 LayoutInterpolator anim可以实现更流畅的布局过渡效果。希望这份汇总能够帮助开发者快速掌握核心知识点,并提升日常开发效率。

    转载地址:http://isxtz.baihongyu.com/

    你可能感兴趣的文章
    VS.NET版本与VC版本对应关系
    查看>>
    Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
    查看>>
    Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
    查看>>
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
    查看>>
    Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
    查看>>
    Openlayers中加载GeoJson文件显示地图
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中实现地图上打点并显示图标和文字
    查看>>
    Openlayers中实现地图上添加一条红色直线
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    OpenLayers使用点要素作为标记
    查看>>
    Openlayers入门教程 --- 万字长篇
    查看>>
    Openlayers各组件默认的css样式
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>