欢迎来到天天文库
浏览记录
ID:76623907
大小:84.50 KB
页数:10页
时间:2022-01-18
《Android Canvas绘图详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、如有侵权,请联系网站删除,仅供学习与交流AndroidCanvas绘图详解【精品文档】第10页如有侵权,请联系网站删除,仅供学习与交流AndroidCanvas绘图详解(图文)摘要Android中使用图形处理引擎,2D部分是androidSDK内部自己提供,3D部分是用OpenGLES1.0。今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳过这篇文章。大部分2D使用的api都在android.graphics和android.graphics.drawable包中。他们提供了图Android中使用图形处理引擎,2D部分是
2、androidSDK内部自己提供,3D部分是用OpenGLES1.0。今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳过这篇文章。大部分2D使用的api都在android.graphics和android.graphics.drawable包中。他们提供了图形处理相关的:Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、BitmapDrawable和TransitionDrawable等。以图形处理来说,我们最常用到的就是在一个View上
3、画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View.invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。下面我们就主要来了解下Canvas的使用方法。Canvas对象的获取方式有两种:一种我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。另一种就是当你想创建一个Canvas对象时使用的方法:12Bitmap
4、b=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);上面代码创建了一个尺寸是100100的Bitmap,使用它作为Canvas操作的对象,这时候的Canvas就是使用创建的方式。当你使用创建的Canvas在bitmap上执行绘制方法后,你还可以将绘制的结果提交给另外一个Canvas,这样就可以达到两个Canvas协作完成的效果,简化逻辑。但是androidSDK建议使用View.onDraw参数里提供的Canvas就好,没必要自己创建一
5、个新的Canvas对象。接下来我们看看Canvas提供我们哪些绘制图形的方法。我们创建一个自定义View对象,使用onDraw方法提供的Canvas进行绘制图形。CanvasDemoActivity.java:123456packagecom.android777.demo.uicontroller.graphics;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.
6、Color;【精品文档】第10页如有侵权,请联系网站删除,仅供学习与交流7891011121314151617181920212223242526272829303132333435363738394041424344454647importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.view.View;publicclassCanvasDemoActivityextendsActivity{@OverrideprotectedvoidonCreate(Bu
7、ndlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(newCustomView1(this));}/使用内部类自定义一个简单的View@authorAdministrator/classCustomView1extendsView{Paintpaint;publicCustomView1(Contextcontext){super(context);paint=newPaint();//设置一个笔刷大小是3的黄色的画笔paint.setCo
8、lor(Color.YELLOW);paint.setStrokeJoin(Paint.Join.ROUND);paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeWid
此文档下载收益归作者所有