开发中经常会看到每个页面都会有个titlebar,每个页面的样式其实是大同小异的,最近学习了一下UI的模板开发,就将titlebar写了一个模板,整理一下模板的思路。
1.设计我们所需要的属性
2.自定义View
3.引用我们的View
一 、设计我们所需要的属性
在res-values-attr下创建我们所需要的属性:
如:
二、自定义我们的view
自定义view 继承RelativeLayout ,如果需要添加我们自己定义的属性,需要实现其多参数的构造方法
系统为我们提供了 TypeArray 用于获取我们自定义的属性,
如:
最后要记得 typearray.recycle() ;
自定义控件获取方法有两种
1.加载xml
2.动态生成
如 Button btn = new Button() ;
将自定义属性和控件关联
三、引用我们的view
引用view时包名+view
引用自定义属性 在eclipse中引入第三方view需指明路径 res/包名 在studio中则为res/aotu 系统为android开发,自定义的名字由自己定义即可,如:app
app:textColor= "#ddd"
自定义view中事件监听,由于是模板,我们可按照系统为我们提供监听的模板进行设计。
如:
btn.setOnClickListener(new OnClickListener(){
})
对外只提供事件的动作,不关心具体要实现哪种操作,则用到了接口回调机制
topbar.setOnTopbarClickListener(new TopbarclickListener){
public void leftClick(){
}
public void rightClick(){
}
}
TopbarClickListener listener ;//变量映射调用者调用
定义一个接口
interface TopbarClickListener{
public void leftClick() ;
public void rightClick() ;
}
//暴露一个方法给调用者
public void setOnTopbarListener(TopbarClickListener topbarclickListener){
this.listener = topbarclickListener ;
}
leftBtn.setOnClickListener(new OnClickListener(){
listener.leftClick() ;
});
rightBtn.setOnClickListener(){
listener.rightClick();
}
注:未整理完毕,待续!