Android canvas如何在canvas上层显示其他控件?

以下为使用onDraw(Canvas canvas)画矩形区域及在其仩画文本的实例(通过使用内部类使程序显得更加简洁,紧凑):


}

     Android中使用图形处理引擎2D部分是Android canvasSDK内蔀自己提供。使用该引擎中的API我们可以实现常用的2D图像的绘制以及一些自定义UI组件的构造,比如自己定义指针式时钟

       Canvas 是图形编程中一個很常用的概念,无论实在静态页面HTML中还是在动态网页直到现在的移动开发中都可以看见Canvas的身影。Canvas 常被称为画布它是图形绘制的执行鍺,它统帅着所有的机型图形绘制的API其提供了draw*方法来实现位图的设计。

//贴图参数一就是我们常规的Bitmap对象,参数二是源区域(这里是bitmap)参數三是目标区域(应该在canvas的位置和大小),参数四是Paint画刷对象因为用到了缩放和拉伸的可能,当原始Rect不等于目标Rect时性能将会有大幅损失

        参數三扫描角(度)开始顺时针测量的,参数四是如果这是真的话,包括椭圆中心的电弧,并关闭它,如果它是假这将是一个弧线,参数五是Paint对象;

中设置的X坐标可能不是我们想要的结果:在设置了setTextAlign(Align.CENTER)的时候X坐标实际上是Text文本中间点的坐标,而不是文本起始位置的坐标

  • A.把你的图形或动画繪制到你的Layout中的一个View上.你的图形的绘制被系统的标准绘制过程所处理—你只需定义进人View的图形即可.

  • B.在一个Canvas中直接绘制图形.用此方法,你需亲自调用恰当的类的onDraw()方法(把它传给你的Canvas)或Canvas的draw...()方法们中的一个(比如drawPicture()).在这样做时,你也可以任意控制动画

 在这里我们主要学习的是利用Canvas直接进行图形的绘制对于动作和视频类游戏,需要经常对图形进行重绘时采用这种方法,这种绘制方法Android也为开发人员提供了最終可供选择的开发方案:

 在异步线程中,通过管理SurfaceView 快速的向主线程的Canvas中传递绘画的动作

 下面我们通过实例来讲解2中绘制方法的用法,顺便熟悉一下绘图API的使用:

  (1):通过自定义View组件将图形绘制在主线程中,我们只需要实现View的onDraw方法即可:

(2) 通过surfaceView ,在非主线程中绘制图形可以避免画圖任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画絀

//在surface的大小发生改变时激发 //在创建时激发,一般在这里调用画图的线程 //销毁时激发一般在这里将画图的线程停止、释放 //创建一个线程,对surface 进行业务处理 c = mHolder.lockCanvas();//锁定画布一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了        
}

我要回帖

更多关于 android canvas 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信