自定义的View

61 篇文章 0 订阅

要实现一个自定义的View,通常都是重写一些系统框架在所有View上调用的基本方法,如大家都熟悉的onDraw(Convas)方法,没有必要重写View所有的方法。下面我们一起对View的方法按照View的生命周期事件顺序进行分类,如 ... 要实现一个自定义的View,通常都是重写一些系统框架在所有View上调用的基本方法,如大家都熟悉的onDraw(Convas)方法,没有必要重写View所有的方法。

下面我们一起对View的方法按照View的生命周期事件顺序进行分类,如下表所示:

 分类                         方法                          描述                              创建   

构造方法 View中有两种类型的构造方法,一种是在代码中构建View,另一种是填充布局文件构建View,第二种构造方法要解析并应用布局文件中定义的任何属性。onFinishInflash() 在来自于XML的View和它所有的子节点填充之后被调用。


布局 onMeasure 调用该方法来确定view及它所有子节点需要的尺寸onLayout 当view需要为它的所有子节点指定大小和布局时,此方法被调用

onSizeChanged 当这个view的大小发生变化时,此方法被调用

绘制 onDraw 当view渲染它的内容时被调用 

事件处理 onKeyDown 当一个新的按键事件发生时被调用

onKeyUp 当一个按键按起时被调用

onTrackballEvent 当轨迹球动作事件发生时被调用

onTouchEvent 当触屏动作发生时被调用焦点

onFocusChanged 当view获得或是失去焦点时被调用

onWindowFocusChanged 当包含view的窗口获得焦点或是失去焦点时被调用附着 onAttachedToWindow() 当view附着到窗口时被调用

onDetachedFromWindow 当view脱离它的窗口时被调用

onWindowVisibilityChanged 当包含此view的窗口的可见性发生变化时被调用 

View 1.0 ID 关于View的ID,不做过多说明,只是用于标记View。View 1.1 位置View的几何形状是一个矩形,view的位置由矩形的左上角的x,y坐标及矩形的高度和宽度决定,他们的单位都是像素。 通过getLeft和getTop方法可以获得view相对于它的直接父节点的x,y坐标。 

 此外,还有一些便利的方法可以帮助我们减少计算量,比如getRight和getBottom方法,调用getRight等价于getLeft()+getWidth()方法,

同理getBottom等价于getTop()+getHeight()方法。

View 1.2 大小,padding,margin 一个View的大小由它的宽度和高度来表达,一个View实际上拥有两对宽高值。 第一对宽高值是:测量过的宽度和高度,即view想从它的父节点获得的宽高值,可以通过getMeasuredWidth()方法和getMeasuredHeight()方法获得。 第二对宽高值是:绘制的宽度和高度,即View的实际宽度和高度,是在布局之后,绘制View阶段的宽高值,这与上面提到的宽高值可能不同。通过getWidth()方法和getHeight()方法可以获得View的实际宽度和高度。 padding同css中的padding属性。通过setPadding(int,int,int,int)可以设置View的padding,通过getPaddingXXX()方法可以获得View中对应方向的padding,XXX值得是left,right,top,bottom。 view不提供对margin的支持,但是viewGroup提供支持。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值