自定义控件

1.1 View的测量

测量模式可以分为一下三种

  • EXACTLY
    即精确模式,当我们将控件的layout_width属性指定为具体的数字时或指定为match_parent属性时,使用的是EXACTLY模式;
  • AT_MOST
    即最大值模式,当控件的layout_width属性指定为wrap_content时,控件大小一般随着控件或内容的变化而变化,此时控件的尺寸只要不超过父控件允许的最大尺寸即可。

  • UNSPECIFIED
    它不指定其大小测量模式,View想多大就多大,通常情况在绘制自定义View时才会使用。

View类默认的omMeasure()方法只支持EXACTLY模式,所以如果在自定义控件的时候不重写onMeasure()方法的话,就只能使用EXACTLY模式。控件可以响应你指定的具体高度或者是match_parent属性。控件指定为wrap_conent是等同于match_parent。而如果要让自定义View支持wrap_content属性,那么就要重写onMeasure()方法来指定wrap_content时的大小。

1.2 自定义View

在View中通常有以下一些比较重要的回调方法。

  • onFinishInflate(): 从xml加载组件后回调。
  • onSizeChanged(): 组件大小改变时回调。
  • onMeasure(): 回调该方法来测量控件
  • onDraw: 回调该方法来绘制控件
  • onTouchEvent(): 监听到触摸事件时回调
  • onLayout: 回到该方法来确定显示的位置

通常情况下,有一下三种方法来实现自定义的控件。

  • 对现有控件进行扩展
  • 通过组合来实现新的控件
  • 重写View来实现全新的控件

    1. 3示例
      待更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值