Android绘图机制二自定义View绘制形 圆形 三角形 扇形 椭圆 曲线文字和图片的坐标讲解资料.docx
- 文档编号:3730065
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:18
- 大小:189.64KB
Android绘图机制二自定义View绘制形 圆形 三角形 扇形 椭圆 曲线文字和图片的坐标讲解资料.docx
《Android绘图机制二自定义View绘制形 圆形 三角形 扇形 椭圆 曲线文字和图片的坐标讲解资料.docx》由会员分享,可在线阅读,更多相关《Android绘图机制二自定义View绘制形 圆形 三角形 扇形 椭圆 曲线文字和图片的坐标讲解资料.docx(18页珍藏版)》请在冰豆网上搜索。
Android绘图机制二自定义View绘制形圆形三角形扇形椭圆曲线文字和图片的坐标讲解资料
Android绘图机制
(二)——自定义View绘制形,圆形,三角形,扇形,椭圆,曲线,文字和图片的坐标讲解
我们要想画好一些炫酷的View,首先我们得知道怎么去画一些基础的图案,比如矩形,圆形,三角形,多边形等….
新建一个项目
然后我们创建一个listview,每个图案一个Activity,这样看起来是不是很顺眼
android: id="@+id/listview" android: layout_width="wrap_content" android: layout_height="wrap_content"/> 编写ListView privateListViewlistview; //item上的数据源 privateString[]name={"矩形","圆形","三角形","扇形","椭圆","曲线","文字和图片"}; //listview的adapter privateArrayAdapter privatevoidinitView(){ //实例化listview listview=(ListView)findViewById(R.id.listview); //实例化数据源 adapter=newArrayAdapter //listview设置adapter listview.setAdapter(adapter); //listview设置点击事件 listview.setOnItemClickListener(newAdapterView.OnItemClickListener(){ @Override publicvoidonItemClick(AdapterView >parent,Viewview,intposition,longid){ //判断点击了第几个 if(id==0){ //矩形 startActivity(newIntent(MainActivity.this,RectActivity.class)); }elseif(id==1){ //圆形 startActivity(newIntent(MainActivity.this,CircleActivity.class)); }elseif(id==2){ //三角形 startActivity(newIntent(MainActivity.this,TrigonActivity.class)); }elseif(id==3){ //扇形 startActivity(newIntent(MainActivity.this,SectorActivity.class)); }elseif(id==4){ //椭圆 startActivity(newIntent(MainActivity.this,OvalActivity.class)); }elseif(id==5){ //曲线 startActivity(newIntent(MainActivity.this,PathActivity.class)); }elseif(id==6){ //曲线 startActivity(newIntent(MainActivity.this,TvIvActivity.class)); } } }); } 效果是这样的 后续可以添加 1.矩形——RectActivity 好的,上面写ListView的代码是不是很简单? 拿我们新建一个RectActivity去画点了,首先我们要新建一个RectView继承View packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.util.AttributeSet; importandroid.view.View; /** *矩形 *CreatedbyLGLon2016/1/7. */ publicclassRectViewextendsView{ //无参 publicRectView(Contextcontext){ super(context); } //有参 publicRectView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); //创建画笔 Paintp=newPaint(); //设置实心 p.setStyle(Paint.Style.FILL); //设置红色 p.setColor(Color.BLACK); //设置画笔的锯齿效果 p.setAntiAlias(true); //绘制 canvas.drawRect(50,100,300,300,p); } } 截图 1.圆形——CircleActivity 我们还是新建一个CircleActivity去画点了,首先我们要新建一个CircleView继承View packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.util.AttributeSet; importandroid.view.View; importandroid.view.WindowManager; /** *圆 *CreatedbyLGLon2016/1/7. */ publicclassCircleViewextendsView{ intwidth; intheight; //无参 publicCircleView(Contextcontext){ super(context); init(); } //有参 publicCircleView(Contextcontext,AttributeSetattrs){ super(context,attrs); init(); } privatevoidinit(){ //获取屏幕的宽高 //Android绘图机制 (一)——自定义View的基础属性和方法里面有讲 WindowManagerwm=(WindowManager)getContext() .getSystemService(Context.WINDOW_SERVICE); width=wm.getDefaultDisplay().getWidth(); height=wm.getDefaultDisplay().getHeight(); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); Paintp=newPaint(); p.setColor(Color.BLACK); //设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width/2,height/2,width/2,p); } } 截图 3.三角形——TrigonActivity 我们还是新建一个TrigonActivity去画点了,首先我们要新建一个trigonView继承View packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.Path; importandroid.util.AttributeSet; importandroid.view.View; /** *三角形 *CreatedbyLGLon2016/1/7. */ publicclassTrigonViewextendsView{ //无参 publicTrigonView(Contextcontext){ super(context); } //有参 publicTrigonView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); Paintp=newPaint(); p.setColor(Color.BLACK); //实例化路径 Pathpath=newPath(); path.moveTo(80,200);//此点为多边形的起点 path.lineTo(120,250); path.lineTo(80,250); path.close();//使这些点构成封闭的多边形 canvas.drawPath(path,p); } } 4.扇形——SectorActivity packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.RectF; importandroid.util.AttributeSet; importandroid.view.View; /** *扇形 *CreatedbyLGLon2016/1/8. */ publicclassSectorViewextendsView{ publicSectorView(Contextcontext){ super(text); } publicSectorView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); //创建画笔 Paintp=newPaint(); p.setColor(Color.BLACK); RectFrectF=newRectF(60,100,200,240); canvas.drawArc(rectF,200,130,true,p); } } 5.椭圆——OvalActivity packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.RectF; importandroid.util.AttributeSet; importandroid.view.View; /** *椭圆 *CreatedbyLGLon2016/1/8. */ publicclassOvalViewextendsView{ publicOvalView(Contextcontext){ super(context); } publicOvalView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); //创建画笔 Paintp=newPaint(); p.setColor(Color.BLACK); RectFrectF=newRectF(60,100,200,240); rectF.set(210,100,250,130); canvas.drawOval(rectF,p); } } 椭圆的思路和扇形是一样的,这里就不演示了 截图 6.曲线——PathActivity packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.graphics.Path; importandroid.util.AttributeSet; importandroid.view.View; /** *CreatedbyLGLon2016/1/8. */ publicclassPathViewextendsView{ publicPathView(Contextcontext){ super(context); } publicPathView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); //创建画笔 Paintp=newPaint(); p.setColor(Color.BLACK); p.reset(); //设置空心 p.setStyle(Paint.Style.STROKE); Pathpath=newPath(); path.moveTo(100,320);//设置Path的起点 path.quadTo(150,310,170,400);//设置路径点和终点 canvas.drawPath(path,p); } } 截图 7.文字和图片——TvIvActivity packagecom.lgl.view.view; importandroid.content.Context; importandroid.graphics.Bitmap; importandroid.graphics.BitmapFactory; importandroid.graphics.Canvas; importandroid.graphics.Color; importandroid.graphics.Paint; importandroid.util.AttributeSet; importandroid.view.View; importcom.lgl.view.R; /** *CreatedbyLGLon2016/1/8. */ publicclassTvIvViewextendsView{ publicTvIvView(Contextcontext){ super(context); } publicTvIvView(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); Paintp=newPaint(); p.setColor(Color.RED); //文本 canvas.drawText("自定义文本",250,330,p); Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher); //图片 canvas.drawBitmap(bitmap,250,360,p); } } 文字和图片感觉不用多说,图片加载需要一个bitmap,而加载bitmap又需要一个工厂类,就是这样 大致的坐标思维 截图 相信看到这里,一些基础的图案都是可以绘制了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android绘图机制二自定义View绘制形 圆形 三角形 扇形 椭圆 曲线文字和图片的坐标讲解资料 Android 绘图 机制 自定义 View 绘制 曲线 文字 图片 坐标 讲解 资料
链接地址:https://www.bdocx.com/doc/3730065.html