自定义控件的原因以及动画的分类

什么是自定义控件?

在 Android 系统中使用系统自带控件重新组合或者自定义类继承 View / ViewGroup 实现特定的 UI效果

为什么要自定义控件?

  1. 系统的某个控件在不同的设备上显示的效果不同,当我们想要让控件在所有设备上显示同样的效果就需要自定义控件。
  2. 整个软件在不同设备上风格统一,例如 QQ、微信的界面在所有的设备上的风格都是一样的。
  3. 系统自带的控件功能有限,需要添加一些功能,或者是自带的控件功能太多,需要删减一部分功能。例如,给 ListView 添加下拉刷新功能,删减 Viewpage 的一些功能。
  4. 自定义控件原则是如果系统控件能够满足需求就不需要自定义控件尽量使用原有控件,因为自定义控件不仅会带来大量的工作而且还会导致许多 Bug 产生
在这里要主要注意弄清楚:
  1. View 和 ViewGroup 的区别。
  2. Android 中事件的传递机制。
  3. View 的原理。

View 和 ViewGroup 的区别

Android 中所有的界面都是由 View 和 ViewGroup 及其派生类组合而成

ViewGroup 是 View 的子类,它是容纳那些控件的容器,他为那些被称作 “Layouts(布局)” 的子类奠定了基础,这些子类提供了线性布局、帧布局、表格布局、相对布局之类的布局架构

View 是所有 UI 组件的基类,是 Android 界面体现的最基础的单位,他是 “Widgets(工具)”的子类的基础,这些子类提供了诸如文本输入框、按钮之类的 UI 对象的完整实现

一般来说 我们使用的 UI 界面不会直接使用 View 或是 ViewGroup 而是使用这两大基类的派生类

动画的分类

Android 中包含三种动画:

View Animation (补间动画)
Drawable Animation (帧动画)
Property Animation (属性动画)

View Animation (补间动画)

基于 View 的渐变动画,它只改变了 View 的绘制效果,而实际的属性并未改变。比如说移动一个按钮的位置,尽管在视图上这个按钮的位置移动了但是如果你点击按钮原来的位置,点击事件仍然生效

在代码中定义该动画可以参考 AnimationSet 类和 Animation 的子类,也可以使用 XML ,在res/anim/ 文件夹中定义 XML 文件。

Drawable Animation(帧动画)

加载一系列的 Drawable 文件夹下的 drawable 资源来绘制动画,这种动画一般来说就是使用它来播放一系列连续的图片从而来欺骗人们的视觉,形成动画的效果,例如实现人物的移动动画
在代码中定义动画帧使用 AnimationDrawable 类;XML文件能更简单的组成动画帧,在res/drawable文件夹,使用采用来定义不同的帧。感觉只能设置的属性是动画间隔时间。

Property Animation(属性动画)

动画的对象除了传统的View对象,还可以是Object对象,动画之后,Object对象的属性值被实实在在的改变了。
Property animation能够通过改变View对象的实际属性来实现View动画。任何时候View属性的改变,View能自动调用invalidate()来试试刷新。

你可能感兴趣的:(自定义控件的原因以及动画的分类)