2D绘图

一、绘图相关类
   *、android.view.View通过onDraw函数来完成对自身的绘制。
   *、完全自定义控件,就是通过重写onDraw方法,改变自己外观
              void View.onDraw(Canvas canvas)
   *多位于android.graphics2D图像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、概念和优点

猜你喜欢

转载自blog.csdn.net/tst116/article/details/70237627