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

    你可能感兴趣的文章
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>