Android中View面试相关

什么是View?

Android.app.View 就是手机的UI,View 负责绘制UI,处理事件(evnet),Android 利用 View 打造出所 Widgets,利用 Widget 可打造出互动式的使用者介面,每个View 负责一定区域的绘制。

View 坐标的基本概念

View的宽高是有top、left、right、bottom参数决定的 而X,Y和translationX,和translationY则负责View位置的改变。

从Android3.0开始,加入了translation的概念,即相对于父容器的偏移量以及X,Y坐标的概念,X,Y代表左上顶点的横纵坐标。当View在发生平移时,getX,getY,setX,setY
get/setTranslationX/Y来获得当前左上点的坐标。

X=left+translationX Y同理。

注意:在View发生改变的过程中,top,left等值代表原始位置,是不会改变的。改变的只有X,Y,translationX/Y。

 View绘制

View绘制机制:

    view树的绘制流程、measure、layout、draw

   view树的绘制流程:

    measure<是否重新计算视图大小> --->layout<是否重新安置视图位置>----->draw<是否需要重绘>   是一个递归过程

---measure测量:树的递归过程,自上而下有序进行遍历

参数

1、ViewGroup.LayoutParams:设置宽高

2、MeasureSpec:测量规格,包含两种,一种是测量它的模式;第二种是在这种模式下测量的大小。

重要方法

1、measure:最终还是调用了onMeasure方法

2、onMeasure:测量逻辑的方法,两个参数,宽高的测量规格。抽象方法,需要自定义。

3、setMeasuredDimension():将测量好的规格,完成整个测量过程

layout:树的递归过程,自上而下有序进行遍历。根据测量的尺寸来摆放子视图的位置。

1、layout:最终调用onLayout方法

2、onLayout:抽象方法,需要自定义。分垂直方向和水平方向的布局。

---onDraw:

---两个容易混淆的方法<回调>:

1、invalidate():请求系统,如果视图没有发生变化就不会绘制。

2、requestLayout():当布局发生变化的时候<方向、尺寸>会调用,它就会去出发measure和layout方法,但是它不会调用draw方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十一多一点。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值