自定义控件的的步骤

自定义控件的的步骤

  • 自定义属性的声明和获取 在构造方法中获取

    • 分析需要的自定义属性 如

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
      <attr name="icon" format="reference"></attr>
      <attr name="color" format="color"></attr>
      <attr name="text_size" format="dimension"></attr>
      <declare-styleable name="changes">
          <attr name="icon"></attr>
          <attr name="color"></attr>
          <attr name="text_size"></attr>
      </declare-styleable>
      </resources>
      
    • 在res/values/attrs.xml中声明自定义属性
    • 在layout.xml文件中使用
    • 在view的构造方法中获取自定义属性。
      TypeArray arr= context.obtainStyledAttributes(attrs,R.styleable.changes)
  • 测量onMeasure 测量由两个数值决定
    - 测量的模式 测量的模式分为三种
    - EXACTLY 传入明确的数值或者是match-parent
    - AT_MOST 至多不能超过某个值,一般出现在设置wrap-content的值中 最大值不能超过父控件
    - UNSPECIFIED 没有限制, 出现在scrollview 或者listview中
    - 测量的值
    - MeasureSpec 测量辅助类,可以获取view的测量模式和size

  • 布局onLayout
    - 决定view的显示位置
    - 尽可能的将onMeasure中耗时操作移动到此方法中
    - requestLayout 触发布局的显示
  • 绘制 onDraw 绘制内容区域。 显示内容。
    • invalidate()通知重绘
    • postInvalidate()在子线程中调用
    • 一般情况下,自定义viewgroup不需要考虑onDraw方法
  • onTouchEvent 处理事件
  • onInterceptEvent(ViewGroup)事件分发处理

你可能感兴趣的:(控件,自定义view)