zoukankan      html  css  js  c++  java
  • Android View体系(一)视图坐标系

    前言

    Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。

    1.View简介

    View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解:
    这里写图片描述

    知道了View的层级关系有助于对View的理解,从上图可以发现我们常用的这些控件都是继承于View,如果我们更好的掌握了View的知识体系,那么我们在界面编程时则会更加的得心应手。

    2.Android坐标系

    Android中有两种坐标系,分别为Android坐标系和视图坐标系,首先我们先来看看Android坐标系。
    在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。

    这里写图片描述

    在下文讲到的MotionEvent提供的getRawX()和getRawY()获取的坐标都是Android坐标系的坐标。

    3.视图坐标系

    要了解视图坐标系我们只需要看懂一张图就可以了:
    这里写图片描述

    View获取自身宽高

    • getHeight():获取View自身高度
    • getWidth():获取View自身宽度

    View自身坐标

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

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

    MotionEvent提供的方法

    我们看上图那个深蓝色的点,假设就是我们触摸的点,我们知道无论是View还是ViewGroup,最终的点击事件都会由onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了各种获取焦点坐标的方法:

      • getX():获取点击事件距离控件左边的距离,即视图坐标
      • getY():获取点击事件距离控件顶边的距离,即视图坐标
      • getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
      • getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标
  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6768783.html
Copyright © 2011-2022 走看看