自定义视图

来源:互联网 发布:网络营销必备软件 编辑:程序博客网 时间:2024/05/16 13:58

自定义视图

attrs.xml

定义组件的各种属性
例:< attr name=”fm_Color” format=”color | reference”/ >
name :属性名称
format:属性的参数类型, 可以为多种类型,比如color|reference为颜色和引用类型。

format可以带入的属性:
“reference” //引用  
“color” //颜色  
“boolean” //布尔值  
“dimension” //尺寸值  
“float” //浮点值  
“integer” //整型值  
“string” //字符串  
“fraction” //百分数,比如200% 

Mylayout extends ViewGroup

定义了属性后需要继续编写这个组件的逻辑

onMeasure方法

用来测量需要显示在屏幕上的组件的长宽,从底层向上层依次测量,比如总Layout->子Layout->view,调用顺序是view->子Layout->总Layout
具体的方法与分析: http://blog.csdn.net/xmxkf/article/details/51490283
写的十分详细,并且通俗易懂

onLayout方法

用来布局组件,可以定义组件在布局中的实际位置,调用顺序和onMeasure相同

onSizeChange方法

当组件的大小发生改变时调用onSizeChange方法,第一次实例化组件时肯定会调用此方法,之后只有在组件的大小发生变化时调用

onDraw方法


用来绘制组件

可能会接触到的几个类

point类

用来记录坐标信息,两个参数,x,y,进入源码看一下没什么难懂的方法

TypedArray类

这个类的作用有点像.getresource.getXXX方法,是一个资源的存储容器
TypedArray ta = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes);
实例化typedArray所需要的参数

int[] attrs :
必须传入的参数,属性集中声明的样式,就是你写的attrs的name

AttributeSet set:
提供的属性集,may be null

int defStyleAttr, int defStyleRes :
通过defStyleAttr和defStyleRes指定的属性

.getXXXXXXXXXXXXindex, defValue) 方法:
用来加载指定资源,第一个为资源索引,第二个为默认值
实例化了TypedArray并使用完后一定要调用.recycle()方法来回收TypedArray。
待更新
Paint类

rect类

原创粉丝点击