package com.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
public class DrawActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
}
private static class DrawView extends View {
private Paint[] mPaints;
private Paint mFramePaint;
private RectF[] mOvals;
private RectF mBigOval;
private float mStart;
private float mSweep;
private int mBigIndex;
private boolean[] mUseCenters;
private static final float START_INC = 0;
// 度数增加控制参数
private static final float SWEEP_INC = 2;
public DrawView(Context context) {
super(context);
mPaints = new Paint[4];
mUseCenters = new boolean[4];
mOvals = new RectF[4];
mPaints[0] = new Paint();
mPaints[0].setAntiAlias(true);
mPaints[0].setColor(0x88111111);
mUseCenters[0] = false;
mPaints[1] = new Paint(mPaints[0]);
mPaints[1].setStyle(Paint.Style.FILL);
mPaints[1].setColor(0x88FF0000);
mUseCenters[1] = true;
mPaints[2] = new Paint(mPaints[0]);
mPaints[2].setStyle(Paint.Style.STROKE);
mPaints[2].setStrokeWidth(10);
mPaints[2].setColor(0x8800FF00);
mUseCenters[2] = false;
mPaints[3] = new Paint(mPaints[2]);
mPaints[3].setStyle(Paint.Style.FILL_AND_STROKE);
mPaints[3].setColor(0x880000FF);
mUseCenters[3] = true;
mBigOval = new RectF(40, 10, 280, 250);
mOvals[0] = new RectF(10, 270, 70, 330);
mOvals[1] = new RectF(90, 270, 150, 330);
mOvals[2] = new RectF(170, 270, 230, 330);
mOvals[3] = new RectF(250, 270, 310, 330);
mFramePaint = new Paint();
mFramePaint.setAntiAlias(true);
// 控制图形是否填充
mFramePaint.setStyle(Paint.Style.STROKE);
mFramePaint.setStrokeWidth(5);
}
private void drawArcs(Canvas canvas, RectF oval, boolean useCenter,
Paint paint) {
canvas.drawRect(oval, mFramePaint);
canvas.drawArc(oval, mStart, mSweep, useCenter, paint);
}
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
drawArcs(canvas, mBigOval, mUseCenters[mBigIndex],
mPaints[mBigIndex]);
for (int i = 0; i < 4; i++) {
drawArcs(canvas, mOvals[i], mUseCenters[i], mPaints[i]);
}
mSweep += SWEEP_INC;
if (mSweep > 360) {
mSweep -= 360;
mStart += START_INC;
if (mStart >= 360) {
mStart -= 360;
}
mBigIndex = (mBigIndex) % mOvals.length;
}
invalidate();
}
}
}
分享到:
相关推荐
通过`context.drawImage()`、`context.beginPath()`、`context.arc()`等方法,可以实现复杂的动画效果,如平移、旋转、缩放等。 2. **SVG(Scalable Vector Graphics)** SVG是一种基于XML的矢量图格式,它支持...
在给定的代码中,可以看到这样的定义: ```html <canvas id="drawbox" width="500" height="500"></canvas> ``` 这里创建了一个id为"drawbox"的canvas元素,宽度为500像素,高度为500像素。 接下来,我们需要通过...
在这个项目中,jQuery用于简化DOM元素的选取和事件绑定,使得代码更简洁、易读。 3. **直线、矩形、圆圈、多边形绘制**:在canvas上绘制这些图形,需要使用到Canvas的`beginPath()`、`moveTo()`、`lineTo()`、`arc...
8. **Audio/Video多媒体支持**:HTML5的`<audio>`和`<video>`元素可以直接在网页中嵌入音频和视频,无需依赖Flash等插件,提供了更简单的多媒体处理。 9. **WebSocket**:WebSocket是一种在客户端和服务器之间建立...
在Windows API编程中,GDI(Graphics Device Interface)是一个核心组件,用于处理设备无关的图形、文本、图像和动画。GDI允许程序员创建各种复杂的图形元素,如线条、曲线、矩形、圆以及复杂的形状,并且可以进行...
总的来说,这个“HTML5 canvas幽灵鬼魂动画代码”项目展示了canvas在创建动态网页内容方面的强大能力,通过JavaScript和canvas API,我们可以创造出各种各样的交互式动画效果,不仅限于恐怖主题,也可以应用于游戏、...
API提供了一系列3D对象和方法,如SceneView、PointCloudLayer、BuildingLayer等,使得构建沉浸式的3D地图应用变得简单易行。 同时,2D支持得到了进一步加强,开发者可以在同一应用中无缝切换2D和3D模式,满足不同...
在这些小游戏案例中,大部分的游戏逻辑和动画效果都是通过Canvas API实现的,例如`drawImage()`用于绘制图像,`fillRect()`绘制矩形,`arc()`绘制圆形,以及`clearRect()`清除指定区域等。 2. **Web Audio API**: ...
jQuery,作为一款强大的JavaScript库,为开发者提供了丰富的API和便捷的方法,使得创建复杂的动画效果变得简单易行。 首先,让我们理解CSS在这个过程中的作用。CSS是样式表语言,用于定义HTML或XML(包括SVG、Math...
在canvas_demo中,你可能找到这些基本功能的示例代码,包括如何绘制简单的图形、线条、文本,以及如何处理颜色和渐变。这些示例可以帮助你更好地理解Canvas API的工作原理,并为你自己的项目提供灵感。 通过学习和...
这个代码实现了一个简单的圆球在Canvas画布上弹跳的动画效果。当球碰到画布边缘时,它的速度会在X或Y轴上反转,从而实现弹跳效果。`requestAnimationFrame`函数用于平滑地在每一帧之间绘制动画,使得动画看起来更加...
为了让烟花看起来更自然,代码中会包含许多随机性,例如烟花的颜色、速度、方向、大小等属性都可以是随机生成的。同时,烟花的生命周期也可以看作是一个简单的粒子系统,每个烟花都是一个粒子,有自己的生命周期和...
在这个文件中,开发者会用到Canvas的`context`对象,它提供了各种方法和属性,如`beginPath()`, `arc()`, `stroke()`, `fill()`等,用于在Canvas上画线、圆和其他形状。例如,要画一个圆,可以使用`arc()`方法,它...
开发者可以使用一系列绘图方法(如`fillRect`, `strokeRect`, `arc`等)在canvas上进行画线、填充形状、绘制图像等操作。 2. **饼状图**: 饼状图是一种用于展示数据比例的图表,各个扇区代表不同的数据类别,其大小...
在这个代码中,我们定义了一个表示小球的对象`ball`,包括它的位置、半径、初始速度和重力加速度。`draw`函数负责清除画布、绘制小球并在每次调用时更新小球的位置。当小球触碰到画布底部时,我们会让它反弹,这里...
例如,在Python的PIL库或JavaScript的Canvas API中,可以使用`lineTo()`函数绘制直线,通过控制起点和终点坐标来实现自由线段的绘制。 其次,**直线**是另一个基本的绘图元素。在二维坐标系中,它由两个点定义,...
在这个“html5 canvas网页圆点气泡背景动画效果代码”中,我们将探讨如何利用Canvas API来实现一个动态的、带有圆点气泡效果的背景动画。 首先,Canvas API提供了一个二维绘图环境,可以通过JavaScript来控制。要...
`Ellipse`函数可以画出完美的圆形,而`Arc`则用于画弧线,模拟微笑的表情。 4. **动画效果**: 游戏可能通过定时器API(如`SetTimer`和`KillTimer`)实现笑脸的动态效果,如微笑的动画。定时器触发回调函数,更新...
在这个时钟例子中,`arc()`方法将被用来绘制圆形的钟面,而指针则通过线条或路径来表示。 描述中提到,这个时钟能够获取本地在线时间,这意味着它会实时更新。这涉及到JavaScript的时间和日期处理。JavaScript的`...
例如,可以使用`fillRect()`或`strokeRect()`方法画出蛇的身体单元,用`beginPath()`、`moveTo()`、`lineTo()`等方法画出蛇的路径,而食物可以用小圆点表示,用`arc()`方法画出。 2. **事件处理**:JavaScript通过...