Android提供了一个功能强大的UI组件模型,基于丰富的布局类View和ViewGroup。我们这章就是基于View和ViewGroup派生的子类开始来讲怎样建立自己UI。
Android系统提供了部分可用的Widget,包括Button, TextView, EditText, ListView, CheckBox, RadioButton, Gallery, Spinner,还有一些用于专门用途的,包括AutoCompleteTextView, ImageSwitcher, 和TextSwitcher,另外也有些关于布局的LinearLayout,FrameLayout, RelativeLayout(Common Layout Objects)等等。
如果这些系统内置Widget或者布局View不能满足需求,我们可以建立我们自己的View子类,来实现自己的Widget和Layout。
那如何创建呢?下面是创建View子类完全自绘WIDGET的最基本步骤:
1. 创建自己的类,必须继承View。里面有三个构造函数,一个参数的构造函数主要是让使用者能动态建立,而两个参数的构造函数则是用于XML配置的
2. 重载一些父类的带On方法,比如onDraw(),onMeasure()和onKeyDown()等。其中onDraw和onMeasure()是必须重载 的,onDraw主要是从父类传递Canvas过来,能让你定制自己的2D组件,onMeasure则是定制你组件的大小,在之中你必须得 调用setMeasuredDimension()
。
3. 在你的程序Activity中使用你扩展的类
下面是示例程序:
在Activity中的程序使用Widget
先定义attr.xml,定义WIDGET的一些属性
然后建立自己的Widget(OwnButton):
接着就可以在Activity中使用自己组建的Widget,下面我们用xml的形式来使用。
在layout的main.xml中增加Widget
然后在Activity中就可以使用了
当然,也可以动态创建WIDGET,在Activity的注释代码就是动态创建的方式,只要把setContentView(R.layout.main);注释掉。
下面一章将会介绍另一种自绘方式,这种方式利用的原有的Widget,将原有的Widget组合起来形成自己的Widget(如由Edit和Button等组成的下拉列表框)。