您的位置:首页 > 移动开发 > Android开发

Android 自定义view第一弹——关于自定义View

2017-01-16 10:26 197 查看

一 什么是自定义view

1 首先来看一张图



这张图就是 我们Activity中ui的层级关系 从上图就可以知道,我们平时使用的 setContentView() 这个方法就是用来设置 contentview 。

2 我们来看看第二种图



从上面的一张图中,我们可以看出 android 的 UI 控件主要有两种:view 和 viewgroup。那么像我们经常使用的 Button,TextView,ImageView 都属于 view 的范畴!FrameLayout,LinearLayout等都属于 viewgroup 的范畴!

3 什么是自定义Veiw

自定义view就是继承 View 或者继承ViewGroup 又或者继承已有的控件比如 button textView 等 在这些上面进行拓展。

二 为啥要定义view

1 特定的显示风格

系统提供的控件或者没有提供的控件 达不到我们app的统一显示风格,需要我们自定义view实现。

2 处理特有的用户交互

我们需要自定义View实现 特殊的操作交互。比如 移动 删除 变色等。

3 优化我们的布局。

比如在ListView中可以通过自定义view实现复杂的自定义布局减少渲染的次数。

4 封装

有些功能和显示效果 ,在大多数app上都可以复用 比如一个开关按钮 ,我们将 自定义view 封装起来 就可以随时 复用。

三 如何自定义View

1 自定义属性的声明与获取。

2 测量方法 onMeasure。

3 布局方法 onLayout。(只有在继承ViewGroup时,才重写)

4 绘画方法 onDraw。

5 触摸方法 onTouchEvent。(处理用户交互)

6 触摸拦截方法 onInterceptTouchEvent(继承viewGroup时处理交互拦截事件)

7 状态的恢复 与保存。

四 实现自定义veiw的三种方式。

1 组合控件

组合控件,顾名思义就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件。

2 继承控件

就是继承已有的控件,创建新控件,保留继承的父控件的特性,并且还可以引入新特性。比如自定义 带有清空功能的EditText 列表可以横向滑动删除的listView 。

3 自绘控件

自绘控件的内容都是自己绘制出来的,在View的onDraw方法中完成绘制。比如仿 ios7的滑动开关


仿 摩托车的仪表盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息