一、绘图相关类
*、android.view.View通过onDraw函数来完成对自身的绘制。
*、完全自定义控件,就是通过重写onDraw方法,改变自己外观
void View.onDraw(Canvas canvas)
*多位于android.graphics(2D图像API)包来实现:包括
Bitmap(图片)、Rect(矩形)、Color(颜色) 用于描绘对象。
Canvas 、paint 代表绘制工具。
Canvas:画布,对Canvas做的操作最终都会反映到界面上
*、提供drawText写字、drawBitmap写入图片、drawLine写入图形等方法。
Paint:画笔,用于控制绘制的样式和颜色。
*、绘制文字时指定颜色和大小,直接创建即可。
eg: 新建一个类继承Button类得到继承函数,
有:private void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint paint = new Paint();
Bitmap bitmap = BitmapFectory.decodeResource(
getResource(),R.drawable.ic_launcher);
canvas.drawBitmap(bitmap,0,0,paint);
canvas.drawText("tian(要显示的字体)",20,20,paint);
}
主线程中调用View.invalidate()方法实现画面重画(再次调用onDraw方法),在其他线程中调用postInvalidata()
二、SurfaceView
*、SurfaceView的概念和优点
*、 变化较多,较快的时候View的绘图效率不高,这时候就用到了surfaceView。
提高绘图效率,用surfaceView。
*、SurfaceView本身是一个View,布局中符合一切View该有的特性。
SurfaceView默认是没有内容,需要通过Canvas来绘制。
*、提供了独立于UI线程之外的绘图线程。
可以在另一线程不停更新界面、不会阻塞界面的交互。
*、不在同一个线程中,SurfaceView人就遵循绘图顺序。
仍旧可以放简单控件。
*、SurfaceView的使用。
1、布局中放入surfaceView
3、SurfaceHolder是绘制的关键
*、通过getHolder()获得一个surfaceHolder 实例
2、实现SurfaceHolder.addCallBack回调
*、 当SurfaceView发生变化时回调。
*、 及时开始或停止对SurfaceView的刷新。
*、lockCanvas()将返回用于绘制的canvas
*、这里对canvas的绘制不会立刻反应在界面上,unlockCanvasPost()
提交刚才修改的界面
4、包含函数:
surfaceChanged 在surfaceView大小改变时触发
surfaceCreated 在创建SurfaceView时触发
surfaceD额storyed 在销毁surfaceView时触发
lockCanvas 锁定画布,绘制之前必须锁定画布才能得到当前的画布对象
unlockCanvasAndPost 绘制完成后解锁画布
三、Nine_Patch
1、概念和优点
2D绘图
猜你喜欢
转载自blog.csdn.net/tst116/article/details/70237627
今日推荐
周排行