Android UI开发 View自绘控件 分享
很多时候想要设计漂亮的android ui,使用android自带的控件无法满足我们的需要就要考虑自绘控件,在android界面显示类view,可以通过继承扩展重写相关方法来实现我们的图形绘制。
首先我们需要了解下view类的底层实现,在sdk中我们可以看到view直接继承于java的基类object,实现了图形绘制和按键事件 drawable.callback keyevent.callback的相关方法,我们自绘时主要实现其内部的ondraw方法,相关的界面计算可以重写onmeasure方法,对于相关的按键可以重载onkeydown、onkeyup以及ontouchevent等,下面android开发网就以一个实例来表示。
public class cwjview extendsview
{
public cwjview(context context)
{
this(context,null);
}
public cwjview(context context,attributeset attrs)
{
this(context,attrs,0);
}
public cwjview(context context,attributeset attrs,int defstyle)
{
super(context,attrs,defstyle);
//这里是本类的构造,相关初始化可以在这里添加代码
}
@override
protectd void ondraw(canvas canvas)
{
super(canvas);
//绘图的关键,可以看到已经包含了一个canvas句柄,可以直接通过我们前面讲到的canvas类进行相关的操作,完整的例子,大家可以参考android sdk中例子snake贪食蛇游戏的实现。
}
}
有关view类的更新,我们直接通过调用invalidate(int l,int r,int r,int b)来更新一个rect矩形区域,或更新全部,同时在线程中我们使用需要调用postinvalidate来更新界面。