您的位置:首页 > 其它

自定义View

2016-01-13 18:56 225 查看
下面的内容是我在观看完慕课网的一个课程后所写的关于自定义View的学习

视图组件(View)

android中view类是最基本的UI类,高级UI组件继承View类而实现的,这里的UI是指user interface,即用户界面。我们使用的TextView,Button,List,EditText,RadioButton等都是View类。

一个View在屏幕中占据了一块矩形区域,它负责渲染这块矩形区域(如改变这块区域的颜色),也可以处理这块矩形区域发生的事件(如用户单击了这块区域),可以设置这块区域是否可见,是否可以获取焦点。

android API中对View的解释如下:

好了,下面进入本文的主题,如何自定义View

我们都知道Android中给我们提供了很不错的风格,但是有时候还是需要满足特定的风格,处理特有的用户交互,优化布局和封装,这些都需要我们采取自定义View。

如何自定义View呢?

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

1.1分析需要的自定义属性

1.2在res/values/attrs.xml定义声明

1.3在layout的xml文件中定义声明

1.4在View的构造方法中进行获取。而获取主要是通过context.obtainstyled Attributes(),获取完成后记得recycle.

2.测量OnMeasure

测量的模式分三个:

①EXACTLY:明确的值(如100dp)

②AT_MOST:至多不能超过某值(wrap_content)

③UNSPECIFIED:不限制;主要在ScrollView和ListView中。

下面是API中关于onMeasure方法的说明

3.布局onLayout(ViewGroup)

3.1决定子view的位置

3.2尽可能将onMeasure中一些操作移动到此方法中

3.3requestLayout()用来触发

4.绘制onDraw

4.1绘制内容区域

4.2invalidate,postInvalidate()

4.3Canvas.drawxxx

4.4 translate、rotate、scale、skew

4.5 save()、restore()

5.onTouchEvent

5.1 ACTION_DOWN

ACTION_MOVE

ACTION_UP

5.2ACTION_POINTER_DOWN

ACTION_POINTER_UP

5.3 parent.requestDisallow-InterceptTouchEvent(true)

5.4 velocityTracker

下面看看Android API中对onTouchEvent的介绍

6.onInterceptTouchEvent(ViewGroup)

6.1 ACTION_DOWN

ACTION_MOVE

ACTION_UP

6.2 ACTION_POINTER_DOWN

ACTION_POINTER_UP

6.3决定是否拦截手势
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: