继承自Android.view.View的 MyView类,重写 MyView的onDraw()方法,一开始就会运行绘制的工作,在onDraw()中以Paint将几何图形绘制在Canvas上,以 paint.setColor() 改变图形颜色、以 paint.setStyle()的设置来控制画出的的图形是空心还是实心。程序的最后一段,就是直接在Canvas写上文字,随着Paint对象里的属性设置,也会有不同的外观模式。
package com.graphices;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Path;
import android.graphics.Shader;
import android.graphics.LinearGradient;
public class GraphicesActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*设置ContentView为自定义的MyVieW*/
MyView myView=new MyView(this);
setContentView(myView);
}
/* 自定义继承View 的MyView*/
private class MyView extends View
{
public MyView(Context context){
super(context) ;
}
/*重写onDraw()*/
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
/*设置背景为白色*/
canvas.drawColor(Color.WHITE);
Paint paint=new Paint();
/*去锯齿*/
paint.setAntiAlias(true);
/*设置paint的颜色*/
paint.setColor(Color.RED);
/*设置paint的 style 为STROKE:空心*/
paint.setStyle(Paint.Style.STROKE);
/*设置paint的外框宽度*/
paint.setStrokeWidth(3);
/*画一个空心圆形*/
canvas.drawCircle(40, 40, 30, paint);
/*画一个空心正方形*/
canvas.drawRect(10, 90, 70, 150, paint);
/*画一个空心长方形*/
canvas.drawRect(10, 170, 70,200, paint);
/*画一个空心椭圆形*/
RectF re=new RectF(10,220,70,250);
canvas.drawOval(re, paint);
/*画一个空心三角形*/
Path path=new Path();
path.moveTo(10, 330);
path.lineTo(70,330);
path.lineTo(40,270);
path.close();
canvas.drawPath(path, paint);
/* 画一个空心梯形*/
Path path1=new Path();
path1.moveTo(10, 410);
path1.lineTo(70,410);
path1.lineTo(55,350);
path1.lineTo(25, 350);
path1.close();
canvas.drawPath(path1, paint);
/*设置paint 的style为 FILL:实心*/
paint.setStyle(Paint.Style.FILL);
/*设置paint的颜色*/
paint.setColor(Color.BLUE);
/*画一个实心圆*/
canvas.drawCircle(120,40,30, paint);
/*画一个实心正方形*/
canvas.drawRect(90, 90, 150, 150, paint);
/*画一个实心长方形*/
canvas.drawRect(90, 170, 150,200, paint);
/*画一个实心椭圆*/
RectF re2=new RectF(90,220,150,250);
canvas.drawOval(re2, paint);
/*画一个实心三角形*/
Path path2=new Path();
path2.moveTo(90, 330);
path2.lineTo(150,330);
path2.lineTo(120,270);
path2.close();
canvas.drawPath(path2, paint);
/*画一个实心梯形*/
Path path3=new Path();
path3.moveTo(90, 410);
path3.lineTo(150,410);
path3.lineTo(135,350);
path3.lineTo(105, 350);
path3.close();
canvas.drawPath(path3, paint);
/*设置渐变色*/
Shader mShader=new LinearGradient(0,0,100,100,
new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
null,Shader.TileMode.REPEAT);
paint.setShader(mShader);
/*画一个渐变色圆*/
canvas.drawCircle(200,40,30, paint);
/*画一个渐变色正方形*/
canvas.drawRect(170, 90, 230, 150, paint);
/*画一个渐变色长方形*/
canvas.drawRect(170, 170, 230,200, paint);
/*画一个渐变色椭圆*/
RectF re3=new RectF(170,220,230,250);
canvas.drawOval(re3, paint);
/*画一个渐变色三角形*/
Path path4=new Path();
path4.moveTo(170,330);
path4.lineTo(230,330);
path4.lineTo(200,270);
path4.close();
canvas.drawPath(path4, paint);
/*画一个渐变色梯形*/
Path path5=new Path();
path5.moveTo(170, 410);
path5.lineTo(230,410);
path5.lineTo(215,350);
path5.lineTo(185, 350);
path5.close();
canvas.drawPath(path5, paint);
/*画扇形*/
canvas.drawArc(new RectF(0,0,50,50), 0, 60, true, mPaint);
/*写字*/
paint.setTextSize(24);
canvas.drawText(getResources().getString(R.string.str_text1), 240, 50, paint);
canvas.drawText(getResources().getString(R.string.str_text2), 240, 120, paint);
canvas.drawText(getResources().getString(R.string.str_text3), 240, 190, paint);
canvas.drawText(getResources().getString(R.string.str_text4), 240, 250, paint);
canvas.drawText(getResources().getString(R.string.str_text5), 240, 320, paint);
canvas.drawText(getResources().getString(R.string.str_text6), 240, 390, paint);
}
}
}
分享到:
相关推荐
本主题主要探讨如何在Android平台上利用Canvas类来绘制各种几何图形,如立方体、圆柱体、三角形、矩形、圆形以及直线。 首先,Android中的图形绘制主要依赖于`Canvas`类,它是Android图形系统的核心组成部分。`...
在本压缩包中,我们拥有一个关于几何图形识别的源代码项目。这个项目分为两个主要部分:一个是生成动态链接库(DLL),另一个是基于MFC(Microsoft Foundation Classes)的简单对话框应用程序。这两个部分共同作用,...
本主题聚焦于“Android自定义View之几何图形绘制”,特别是如何利用Android的Canvas API来构建维度图表,如模仿京东白条个人信用评分的维普图。下面将详细介绍这个过程中的关键知识点。 首先,理解Android的View类...
这篇博文将带你深入了解如何在Android中绘制各种几何图形,并提供了一个实践示例。以下是对这个主题的详细解析: 首先,Android提供了`Canvas`类,它是用于进行图形绘制的核心组件。通过`Canvas`,开发者可以画线、...
- **Canvas**:在Android中,Canvas是一个画布,我们可以在这个画布上执行各种绘图操作,如画线、画圆、画矩形、填充颜色等。Canvas提供了丰富的API来支持图形绘制。 - **Bitmap**:通常,我们会在Bitmap对象上...
本篇文章将详细讲解如何在Android中自定义View来绘制几何图形,以矩形为例,结合提供的`MyCanvas`示例进行解析。 首先,要创建一个自定义View,我们需要继承`View`或`ViewGroup`类。在这个例子中,我们将从`View`类...
Android OpenGL ES 提供了一个接口,让开发者能够利用硬件加速的图形处理能力,来绘制出立方体、球体、圆柱等几何形状。在这个场景中,我们看到描述中提到了几个关键的元素:几何形状类和renderer类。 1. **几何...
在`onDraw()`方法中,我们可以调用`Canvas`的各种方法来绘制几何图形。例如,绘制一个红色的矩形: ```java @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRect(10, 10...
通过自定义视图,开发者可以绘制出各种几何图形,如三角形、圆形和矩形等,以满足特定的设计需求。本文将深入探讨如何在Android中利用Canvas对象进行几何图形的绘制。 首先,Android中的自定义视图通常继承自`View`...
博客《android Graphics(一):基本图形绘制---几何形状、路径及文本》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38875149
在Android平台上,开发人员可以利用丰富的图形库和API来创建各种各样的图形,包括2D、3D以及动态画图。这些技术可以帮助我们构建出交互性强、视觉效果丰富的应用程序。以下是一些关于Android图形画图的关键知识点: ...
可以提供预设的几何图形按钮,如圆形、正方形等。点击这些按钮后,可以在`Canvas`上使用对应的`Path`对象绘制这些形状。例如,`addCircle()`和`addRect()`方法可以用于绘制圆和矩形。 6. **实虚线切换**: `Paint...
在安卓平台上,开发人员可以利用Android SDK中的Canvas类来实现绘制几何图形的功能。这个过程涉及到图形学的基本概念,以及Android视图系统的工作原理。Canvas是Android中用于在Bitmap上进行绘图的核心对象,它可以...
它不仅展示了Android平台上的图形渲染能力,也为用户提供了视觉上的享受。下面将详细介绍这个程序的核心知识点。 首先,我们要了解分形。分形是一种自相似的几何形状,它在不同尺度上重复出现,常用于创建自然界的...
这篇代码提供了一个详细的 Android 绘制几何图形的示例代码,展示了如何使用 Canvas 和 Paint 对象来绘制各种几何图形,包括圆形、正方形、矩形、圆角矩形、椭圆、多边形等。同时,代码中也展示了如何使用 Path 对象...
总之,通过自定义`View`类并重写`onDraw()`方法,开发者可以在Android应用中自由绘制各种几何图形,结合事件处理和布局管理,可以创建出具有丰富视觉效果和交互性的界面。通过不断实践和优化,可以提升应用的用户...
在Android平台上,开发一个画板应用是一个常见的任务...通过理解以上知识点,开发者可以构建一个功能丰富的Android画板应用,不仅支持基本图形的绘制,还能提供背景图片选择和其他个性化功能,满足用户的各种创意需求。
在Android开发中,有时我们需要在屏幕上绘制自定义图形,如直线、箭头和折线,以实现各种交互式用户界面。本示例源码提供了一种方法,通过使用`Path`类来绘制这些图形,并实现了图形的平移以及定义点击事件。`Path`...
在Android开发中,实现各种图形绘制是一项常见的任务,这通常涉及到自定义View的使用。本文主要探讨了如何在Android平台上通过自定义View类来绘制不同类型的图形,包括Bezier曲线、直线、椭圆和矩形。 首先,为了...