android笔记22-UI模板设计

来源:互联网 发布:网络犯罪csi第三季 编辑:程序博客网 时间:2024/04/28 20:19
系统定义控件的步骤的步骤是首先定义atts.xml文件来定义控件的属性,之后重写控件,确定好继承关系,最后在xml文件中使用控件;

参考系统,我们的设计需要:首先设计需要的属性->实现一个"view"->引用所实现的"view"

步骤:
 第一步(设计属性):在values目录下新建一个xml文件,命名为atts;通过声明
<declare_styleable name=""
    <attr name=""   format="">   
    ...
</declare_styleable>

在declare_styleable标签中:
name  --来表明这是控件或布局;

在attr标签中:
name    --自定义布局中所含有的控件的属性的名字
format  --在xml中引用资源的类型,资源可以是多种如reference|          color表示在定义颜色的时候不仅可以写编码还可以是资            源中的文件 ;

 第二步(创建布局的类):在src源代码目录的包下,创建java文件用来实现布局;选好继承关系;因为要自定义属性,所以构造函数要选有AttributeSet类型的构造方法;将之前在xml文件中定义的属性写成类的成员变量;创建定义的布局所包含的控件;

 第三步(将设置好的xml属性值传给布局的成员变量,基本思路是在构造方法中获得在xml中定义的属性,并将这些值赋给相应的成员变量):在构造函数中,创建TypedArray对象,并调用context的obtainStyleAttributes(attrs,R.styleadle....)将返回值赋给TypedArray对象完成初始化;
 attrs为构造函数中的AttributeSet对象;
 R.styleadle....为在xml文件中标签为declare_styleable控件;
调用TypedArray对象的get函数(getColor(),getDrawable(),getString())来取出相应类型的属性值,并将返回值赋值给对应的成员变量;
get(int index,int defValues)的两个参数分别为:
 index:R.styleable."declare_styleable"_"attr",相应布局下的属性的生成id时的命名规则;
 defValues:默认的返回值,设为0;
最后注意在使用完TypedArray后要调用成员函数recycle()方法来进行回收;

 第四步(设置控件的相关属性):为布局的控件赋值,即将context作为构造函数的参数new出,再调用控件的相应函数将属性赋给控件;
 
 第五步(设置布局中控件的位置):为类再创建LayoutParams对象;在构造函数中,调用LayoutParams(width,heighth)函数并将返回值赋给LayoutParams对象;
  width:为宽,ViewGroup.LayoutParams.WRAP_CONTENT;
heighth:为高,ViewGroup.LayoutParams.WRAP_CONTENT;
再调用LayoutParams对象的成员函数addRule()设置其他属性;如addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);最后调用ViewGroup(即布局类继承的祖先)的addView(view,LayoutParams)方法将对应的控件与布局位置关联到一起;

第六步:指定完整的包名,即类的定义位置,前面加上"android:"用设置各种系统的属性;如果是要设置自定义的属性的话,要在一开始的位置处添加一个xmlns,为命名空间取名(随意),并加上布局所在的位置
在(android studio中)
xmlns:空间名="http://schemas.android.com/apk/res-auto"
而在Eclipse中是"res/(应用程序的完整包名)"

第七步(实现接口回调,实现在activity中,可以编辑布局的控件的点击事件):创建接口(类似于Button的OnclickListener),接口内部是控件的方法;在创建一个set方法(类似于setOnClickListener),用于报告给调用者,参数类型为接口名,再为布局创建一个接口类的成员变量,在方法中为这个成员变量赋上方法的参数;在控件的setOnClickListener()中的onClick()方法中调用对应的布局的接口类变量的控件方法;

第八步:创建布局对象,调用findViewById()完成初始化;调用布局对象的set方法,并在参数列表中new出布局类的接口函数;最后设置各个控件的方法;



在xml布局文件的属性前的android是在最开始处的 xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xmlnamespace 表示的是命名空间,即通过android这个命名控件就可以引用到一些系统的属性

接口回调机制:见博客http://blog.csdn.net/lindir/article/details/7819720
 
0 0
原创粉丝点击