今日面试不会的题目

今天遇到的面试官问了我一个自定义view控件的问题,以前接触过,但是不系统,今天就借助@刘望舒技术大神的博客系统的学习一下!

  除了四大组件,其次重要的就属于View了,被称为界面的核心,

  这里写图片描述


从图中可以发现我们日常所用的绝大读书控件都是继承VIew,所以我们自定义控件的方式基本有两种:1.继承VIew;2.继承已有的控件;但是说到底还是继承VIew,

所以要彻底掌握自定义控件,还得要彻底的了解VIew;先从安卓界面说起:

Android坐标系:

在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。

MotionEvent提供的getRawX()和getRawY()获取的坐标都是Android坐标系的坐标

视图坐标系:

这里写图片描述

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():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值