【Android开发API】应用程序资源 - 画布和绘制 - Canva.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:5 大小:237KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

【Android开发API】应用程序资源 - 画布和绘制 - Canva.pdf

【Android开发API】应用程序资源-画布和绘制-Canva.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

eoe移动开发者社区www.eoe.cn原文:CanvasandDrawables翻译:用户:D.Winter|D.WinterAndroid框架提供⼀系列2D绘画API,它允许你在画布上渲染自定义的图像和定制已经存在的视图的外型与体验。当绘制2D图像时,你将会使用代表性的两种方法:a.*通过布局在视图对象里绘制你的图像或者动画*。这种方法,你的图像句柄被系统标准视图层绘制进程控制。你简单定义将图像插⼊视图中。b.*直接在画布上绘制图像*。此方法,你要亲自调用相应类的onDraw()方法(passingityourCanvas),或者其中⼀个画布draw开头的方法(比如drawPicture())。这样做,你还:在控制任意的动画。在你绘制简单图像时,方法a是最好的选择。它不需要不断改变也不属于高性能游戏。比如,你在视图中想要绘制静态的或者预先确定的动画在另外的静态应用中。更多信息请查看Drawables。当你的应用需要规律性的在画布上重绘时,方法b更为合适。就像电⼦游戏,你要自⼰重绘画布。然而,我们还有其他方法来实现:*在UIActivity的同⼀线程里创建的自定义视图组建中,调用invalidate()再控制onDraw()回调.*或者,在单独的线程中,管理⼀个SurfaceView并在画布中绘图(你不需要请求invalidate())。当你开发⼀个应用专门来完成绘制和控制图像的动画,你应该使用画布。画布⼯作机制就像⼀个接⼝,你表面图像将会被绘制。它控制所有绘画调用。通过画布,隐藏的位图(Bitmap)v完成了绘图。它被放在窗体里。在onDraw()的回调方法事件中绘图,你只需要调用画布即可。当处理SurfaceView对象时,你也可以从SurfaceHolder.lockCanvas()获取⼀个画布。(所有这些场景将在下面的章节中讨论。)然而,你需要创建⼀个新的画布,你必须定义⼀个实际执行的位图Bitmap。这个位图Bitmap是画布所必须的。你可以像这样设置⼀个新画布:Bitmapb=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);现在你的画布将绘制你定义的位图Bitmap。你还可以将这个位图Bitmap移到另外⼀个画布,使用Canvas.drawBitmap(Bitmap,...)方法。通过View.onDraw()或SurfaceHolder.lockCanvas()获得画布绘制图像的方法是值得推荐的。(请看下面章节).Canvas类有自⼰的设置绘画方法。像drawBitmap(...),drawRect(...),drawText(...)等等。你会用到的其他类也会有draw()方法。比如,你有可能有⼀些Drawable对象需要放到画布中。Drawable有自⼰的draw()方法,并将Canvas作为参数。*View绘图*如果你的应用不需要⼤量的处理或者帧速率(或许是⼀个棋类游戏,贪吃蛇,或者其他),你应该考虑创建⼀个自定义的View组件并通过View.onDraw()在画布中绘制。Android框架提供了预定义的Canvas来完成绘图调用,这么做是最方便的。首先,继承View类(或者其⼦类)并且定义onDraw()回调方法。这个方法在接到Android框架绘图请求时被调用。通过onDraw()回调执行所有画布绘图方法。1/5eoe移动开发者社区www.eoe.cnAndroid框架必须只调用onDraw()方法。每时每刻你的应用准备被绘制,你必须调用invalidate()使View无效。这表面你将会看到你的View被绘制,Android将会随即调用你的onDraw()方法(尽管不能保证实时的回调)。在你的View组件onDraw()里,使用画布进行所有的绘制,使用各种Canvas.draw...()方法,或者其他类的draw()方法他们以Canvas作为参数。当onDraw()完成后,Android框架使用你的Canvas绘制位图Bitmap由系统控制.*注意:为了从⼀个非主Activity的线材请求invalidate,你必须调用[postInvalidate()](http://docs.eoeandroid.com/reference/android/view/View.html#postInvalidate()).继承View类的信息,请看自定义组件。对于⼀个简单的应用程序,请看贪吃蛇,在SDK案例文件:/samples/Snake/.*SurfaceView绘图*SurfaceVi