自定义控件

来源:互联网 发布:排列组合c的快速算法 编辑:程序博客网 时间:2024/05/19 02:21

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示例
      待更新
原创粉丝点击