自定义View
2016-06-15 16:53
106 查看
自定义VIEW类的构造方法:
创建自定义控件的3种主要实现方式:
1)继承已有的控件来实现自定义控件
主要是当要实现的控件和已有的控件在很多方面比较类似, 通过对已有控件的扩展来满足要求。
2)通过继承一个布局文件实现自定义控件
一般来说做组合控件时可以通过这个方式来实现。
注意此时不用onDraw方法,在构造函数中通过inflater加载自定义控件的布局文件,再addView(view),自定义控件的图形界面就加载进来了。
3)通过继承view类来实现自定义控件,使用GDI绘制出组件界面,一般无法通过上述两种方式来实现时用该方式。
1)在View类中定义。通过构造函数中引入的AttributeSet 去查找XML布局的属性名称,然后找到它对应引用的资源ID去找值。
2)通过XML为View注册属性。与Android提供的标准属性写法一样。
自定义View的常用方法
onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后调用的方法
onMeasure() 检测View组件及其子组件的大小
onLayout() 当该组件需要分配其子组件的位置、大小时
onSizeChange() 当该组件的大小被改变时
onDraw() 当组件将要绘制它的内容时
onKeyDown 当按下某个键盘时
onKeyUp 当松开某个键盘时
onTrackballEvent 当发生轨迹球事件时
onTouchEvent 当发生触屏事件时
onWindowFocusChanged(boolean) 当该组件得到、失去焦点时
onAtrrachedToWindow() 当把该组件放入到某个窗口时
onDetachedFromWindow() 当把该组件从某个窗口上分离时触发的方法
onWindowVisibilityChanged(int): 当包含该组件的窗口的可见性发生改变时触发的方法
创建自定义控件的3种主要实现方式:
1)继承已有的控件来实现自定义控件
主要是当要实现的控件和已有的控件在很多方面比较类似, 通过对已有控件的扩展来满足要求。
2)通过继承一个布局文件实现自定义控件
一般来说做组合控件时可以通过这个方式来实现。
注意此时不用onDraw方法,在构造函数中通过inflater加载自定义控件的布局文件,再addView(view),自定义控件的图形界面就加载进来了。
3)通过继承view类来实现自定义控件,使用GDI绘制出组件界面,一般无法通过上述两种方式来实现时用该方式。
1)在View类中定义。通过构造函数中引入的AttributeSet 去查找XML布局的属性名称,然后找到它对应引用的资源ID去找值。
2)通过XML为View注册属性。与Android提供的标准属性写法一样。
自定义View的常用方法
onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后调用的方法
onMeasure() 检测View组件及其子组件的大小
onLayout() 当该组件需要分配其子组件的位置、大小时
onSizeChange() 当该组件的大小被改变时
onDraw() 当组件将要绘制它的内容时
onKeyDown 当按下某个键盘时
onKeyUp 当松开某个键盘时
onTrackballEvent 当发生轨迹球事件时
onTouchEvent 当发生触屏事件时
onWindowFocusChanged(boolean) 当该组件得到、失去焦点时
onAtrrachedToWindow() 当把该组件放入到某个窗口时
onDetachedFromWindow() 当把该组件从某个窗口上分离时触发的方法
onWindowVisibilityChanged(int): 当包含该组件的窗口的可见性发生改变时触发的方法
相关文章推荐
- LintCode快100道题了
- 提取django的orm使用
- 第十三周上机实践项目2(2):动物这样叫
- cordova 双击返回 退出程序
- unix shell命令
- NodeJs使用asyncAwait两法
- Computer-cmd打开服务管理
- Android自定义支付密码输入框
- 大前端
- class viewcontroller has no initializers 如何fixed
- 关于mysql5.7的160万qps
- Ibator的配置和使用
- 怎样让 Web 项目暴露在外的服务坚不可摧?
- Pods 更新后提示Bundle资源找不到
- firewalld 开启端口配置
- Leetcode 318. Maximum Product of Word Length
- 两阶段提交-2PC
- [置顶] Google zxing实现二维码扫描完美解决方案
- Intel Media SDK H264 encoder GOP setting
- maven 项目导入之后转成web项目,添加到tomcat中发布