Android自定义控件需要注意的点

  1. 在 xml中创建了一个view时,所有在xml中声明的属性都会被传入到view的构造方法中的AttributeSet类型的参数当中。 通过调用Context的obtainStyledAttributes()方法返回一个TypedArray对象。然后直接用TypedArray对象获取自定义属性的值。TypedArray对象是共享的资源,所以在获取完值之后必须要调用recycle()方法来回收

  2. 自定义控件的属性发生改变之后,控件的样子也可能发生改变,在这种情况下就需要调用invalidate()方法让系统去调用view的onDraw()重新绘制。同样的,控件属性的改变可能导致控件所占的大小和形状发生改变,所以需要调用requestLayout()来请求测量获取一个新的布局位置

  3. 在onDraw方法中开始绘制之前,应该让画笔Paint对象的信息初始化完毕。这是因为View的重新绘制是比较频繁的,这就可能多次调用onDraw,所以初始化的代码不应该放在onDraw方法里

  4. 为了避免你的控件看得来迟缓,确保动画始终保持每秒60帧

  5. 下面是官网给出的优化建议:

  1. 避免不必要的代码
  2. 在onDraw()方法中不应该有会导致垃圾回收的代码。
  3. 尽可能少让onDraw()方法调用,大多数onDraw()方法调用都是手动调用了invalidate()的结果,所以如果不是必须,不要调用invalidate()方法。

你可能感兴趣的:(Android自定义控件需要注意的点)