WEB开发网
开发学院手机开发Android 开发 android构建自定义的视图组件 阅读

android构建自定义的视图组件

 2010-05-10 19:48:00 来源:WEB开发网   
核心提示:图形支持,必须继承SurfaceView而不是View,android构建自定义的视图组件(2),并且通过单独的线程画图,可以通过GLSurfaceViewActivity实例查看详细信息,因此合成组件可以任意复杂结构,和activity类似,onMeasure() 方法有些麻烦,该方法是在容器和自定义组件之间渲染的重
图形支持,必须继承SurfaceView而不是View,并且通过单独的线程画图。可以通过GLSurfaceViewActivity实例查看详细信息。

onMeasure() 方法有些麻烦。该方法是在容器和自定义组件之间渲染的重要部分。该方法覆盖,要高效率的和精确的报告被包含区域的测量值。

总的来看,实现onMeasure()方法类似如下步骤:

调用已经覆盖的onMeasure()方法,传递长和宽规范参数;

自定义组件在onMeasure()方法中计算需要渲染的组件的长和宽,应该在规范参数的范围内;

一旦长和宽计算出来,必须调用setMeasuredDimension(int width, int height)方法,这步失败会导致异常的抛出。

一个自定义视图的示例

自定义视图的示例,见:LabelView

该示例演示了一些自定义组件的不同方面:

继承View类,用于完全自定义组件;

参数化的构造方法,提供更多的参数,定义在xml文件中;

标准的公开方法,用于设置标签,比如setText()方法等;

覆盖onMeasure方法确定渲染的组件尺寸;

覆盖onDraw方法,在提供的canvas中画标签。

可以找到对示例的一些使用,在custom_view_1.xml文件中。

该示例运行效果:

image

android示例是混在一起的,比较乱,我这里改写了一下,只有相关示例的代码和配置。看起来比较简单:

http://easymorse.googlecode.com/svn/tags/android.customer.view.demo_1.0

合成控制器

合成控制器,即不是完全自定义一个新的视图组件,而是,将现有的原子级控制器(控件?)或者视图组件组合在一起,处理共同的业务逻辑。比如,一个combo box可以被看做,一个单行的EditText和一个相邻的按钮,带一个弹出列表。

android中还有很多其他的示例,比如Spinner,AutoComleteTextView。

创建合成组件的步骤:

通常的起始步骤是,创建某种类型的Layout,即创建一个类继承一个Layout。比如上述的combo box,可能会使用到基于垂直布局的LinearLayout。其他布局也可以嵌套在其中,因此合成组件可以任意复杂结构。和activity类似,你可以用基于xml的声明方式创建容器组件,也可以嵌入到程序代码中;

上一页  1 2 3 4  下一页

Tags:android 构建 定义

编辑录入:coldstar [复制链接] [打 印]
赞助商链接