博客
关于我
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/

    你可能感兴趣的文章
    Python中文问题SyntaxError
    查看>>
    Python中方括号和括号括起来的列表有什么区别?
    查看>>
    python中时间处理_Python中处理时间的几种方法小结
    查看>>
    Python中枚举串口(包括虚拟端口)的跨平台方法是什么?
    查看>>
    python中根号下a怎么写_python中根号怎么表示
    查看>>
    Python中正则表达式的巧妙使用
    查看>>
    Python中浮点数的二进制表示(位不是十六进制)
    查看>>
    Python中特殊函数和表达式 filter,map,reduce,lambda
    查看>>
    python中用socket检测端口_Python 用socket模块实现检测端口和检测web服务
    查看>>
    python中用于列表操作的plus和append有什么区别?
    查看>>
    python中用递归求和
    查看>>
    python中的@staticmethod
    查看>>
    python中的array函数作用_NumPy 数组使用大全
    查看>>
    python中的isinstance判断多个对象类型
    查看>>
    python中的keys、values、items
    查看>>
    Python中的lambda和apply结合使用
    查看>>
    python中的map函数
    查看>>
    Python中的numpy模块解析
    查看>>
    Python中的pickle
    查看>>
    Python中的signal模块和Ctrl+C操作
    查看>>