- 浏览: 111744 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (134)
- java (134)
- [转]sqlserver 数据类型 及使用考虑 (1)
- 保存、读取、删除到sdcard图片 (1)
- hashcode 重写 (1)
- sql2008导出数据 (1)
- Android开发(1):随机绘制彩色实心圆 (1)
- JPA 应用技巧 1:实体类和实体 DAO 模板 (1)
- 狩魂之神即将开测 - 2012年最值得期待的网页游戏 (1)
- mantis (1)
- MediaWiki (1)
- ExtMail (1)
- MDaemon搭建公司项目环境 (1)
- NIO 之 选择就绪模式 (1)
- web应用系统架构设计 (1)
- XML CDATA (1)
- firefox+Firebug调试JavaScript、HTML和CSS (1)
- 在SUSE 11中安装Windows虚拟机 (1)
- 将字节流(byte[])转换成文件 (1)
- HTML5网站 (1)
- 在Android中自定义IOS风格的按钮 (1)
- 基于SVG的WebGIS的一个雏形 (1)
- 程序名称DreamIT(梦想IT)提供许多IT公司的面试和笔试试题 (1)
- 介绍一个ASP.NET开发工具Web Matrix (1)
- C#信息采集工具实现 (1)
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布 (1)
- 2011面试题目之猴子偷桃 (1)
- Linux tar压缩时排除某个目录或文件的参数 (1)
- Crack JRebel 4.0,无需重启JVM,热部署解决方案 (1)
- Groovy Sql使用Spring的事务管理 (1)
- <<让oracle跑的更快1>>读书笔记2 (1)
- 不要再浪费时间 (1)
- JSP (1)
- PHP (1)
- Python (1)
- Ruby (1)
- Perl概要及各自特点 (1)
- JVM 内存结构(转) (1)
- [转载]JPA 批注参考(1) (1)
- Hadoop配置部分内容 (1)
- HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合 (1)
最新评论
-
alexyao8:
顶起
[G4Studio开源平台]如何搭建G4开发环境 -
greatghoul:
太二了。
不要再浪费时间 -
wengbo316:
它们一定是花果山的猴子,数数能数到3K多呢。。。
2011面试题目之猴子偷桃 -
mycar:
额.待补充...........
保存、读取、删除到sdcard图片 -
沙舟狼客:
这太折磨人了, 还有人要看吗?
[] javaeye rss抓取
Android开发(1):随机绘制彩色实心圆
本文介绍了如何利用Android的绘图技术随机绘制彩色实心圆。效果如图1所示。
图1
这个程序的核心是画布,也就是Canvas对象。要想在Canvas上绘制图形,需要将Canvas放在View上。因此,首先需要建立一个画布类,这个画布类是View的子类。当画布刷新时,会调用onDraw方法来重绘制画布,我们可以从onDraw方法的参数来获得要绘制图形的Canvas对象。
由于画布重绘时会清空所有的内容,因此,要想绘制多个实心圆,需要使用一个List变量将曾经绘制的实心圆的相关信息(圆心坐标、半径、画笔颜色)保存起来,以便绘制下一个实心圆时重绘前面绘制的所有的实心圆。如果不用List对象保留绘制历史,则只能绘制最后一个实心圆。下面来看看这个画布类的代码。
package mobile.android.ch02.first;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class CircleCanvas extends View
{
// 保存绘制历史
public List<CircleInfo> mCircleInfos = new ArrayList<CircleCanvas.CircleInfo>();
// 保存实心圆相关信息的类
public static class CircleInfo
{
private float x; // 圆心横坐标
private float y; // 圆心纵坐标
private float radius; // 半径
private int color; // 画笔的颜色
public float getX()
{
return x;
}
public void setX(float x)
{
this.x = x;
}
public float getY()
{
return y;
}
public void setY(float y)
{
this.y = y;
}
public float getRadius()
{
return radius;
}
public void setRadius(float radius)
{
this.radius = radius;
}
public int getColor()
{
return color;
}
public void setColor(int color)
{
this.color = color;
}
}
public CircleCanvas(Context context)
{
super(context);
}
// 当画布重绘时调用该方法,Canvas表示画布对象,可以在该对象上绘制基本的图形
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
// 根据保存的绘制历史重绘所有的实心圆
for (CircleInfo circleInfo : mCircleInfos)
{
Paint paint = new Paint();
// 设置画笔颜色
paint.setColor(circleInfo.getColor());
// 绘制实心圆
canvas.drawCircle(circleInfo.getX(), circleInfo.getY(), circleInfo.getRadius(), paint);
}
}
}
下面我们来编写主程序。在创建工程时会要求输入一个“Create Activity”,由于我们输入的是“Main”,因此,生成的主类就是Main.java。打开Main.java文件,输入如下的代码。
package mobile.android.ch02.first;
import java.util.Random;
import mobile.android.first.CircleCanvas.CircleInfo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
public class Main extends Activity
{
private CircleCanvas mCircleCanvas; // 定义一个画布类
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 装载布局文件(在2.2.3节配置的main.xml文件)
ViewGroup viewGroup = (ViewGroup)getLayoutInflater().inflate(R.layout.main, null);
mCircleCanvas = new CircleCanvas(this); // 创建CircleCanvas(画布类)对象
// 将CircleCanvas对象添加到当前界面的视图中(两个按钮的下方)
viewGroup.addView(mCircleCanvas, new LayoutParams(LayoutParams.FILL_PARENT, 350));
setContentView(viewGroup);
}
// 开始随机绘制圆形(第一个按钮的单击事件)
public void onClick_DrawRandomCircle(View view)
{
Random random = new Random();
float randomX =(float)( 100 + random.nextInt(100)); // 随机生成圆心横坐标(100至200)
float randomY =(float)( 100 + random.nextInt(100)); // 随机生成圆心纵坐标(100至200)
float randomRadius =(float)( 20 + random.nextInt(40)); // 随机生成圆的半径(20至60)
int randomColor = 0;
// 产生0至100的随机数,若产生的随机数大于50,则画笔颜色为蓝色
if(random.nextInt(100) > 50)
{
randomColor = Color.BLUE;
}
else
{
// 产生0至100的随机数,若产生的随机数大于50,则画笔颜色为红色
if(random.nextInt(100) > 50)
randomColor = Color.RED;
// 否则,画笔颜色为绿色
else
randomColor = Color.GREEN;
}
CircleInfo circleInfo = new CircleInfo();
circleInfo.setX(randomX);
circleInfo.setY(randomY);
circleInfo.setRadius(randomRadius);
circleInfo.setColor(randomColor);
mCircleCanvas.mCircleInfos.add(circleInfo); // 将当前绘制的实心圆信息加到List对象中
mCircleCanvas.invalidate(); // 使画布重绘
}
// 清空画布(第二个按钮的单击事件)
public void onClick_Clear(View view)
{
mCircleCanvas.mCircleInfos.clear(); // 清除绘制历史
mCircleCanvas.invalidate(); // 使画布重绘
}
}
本文截选自《Android开发权威指南》,如需转载,请注明出处。
转发微博,赢取《Android开发权威指南》,截止到9月12日,机会难得!活动地址:http://event.weibo.com/208255《Android开发权威指南》答疑论坛:http://books.51happyblog.com
新浪微博:http://t.sina.com.cn/androidguy 昵称:李宁_Lining
华章培训网视频教程:实现Android版的多功能日历
《Android/OPhone开发完全讲义》(本书版权已输出到台湾)
样章和目录下载
互动网
当当网 卓越亚马逊
《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》
script.txt文件下载
样章下载
互动网
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-16915591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
发表评论
-
HD2刷机的基础知识 HD2的radio、HSPL、ROM三种组合
2012-02-07 15:13 1100今天看着教程刚刷了台HD2,觉得有用的文章顺便转载过来 ... -
Hadoop配置部分内容
2012-02-04 15:29 741[size=medium;]Hadoop配置部分内容[ ... -
[转载]JPA 批注参考(1)
2012-02-04 11:39 725作为 Java 企业版 5 ... -
JVM 内存结构(转)
2012-02-03 14:49 899http://www.4ucode.com/Study ... -
JSP,PHP,Python,Ruby,Perl概要及各自特点
2012-01-31 15:18 994互联网技术日新月异,编程的语言层出不穷,原本稍微平静了 ... -
不要再浪费时间
2012-01-31 15:08 910不要再浪费时间 &l ... -
<<让oracle跑的更快1>>读书笔记2
2012-01-11 13:24 10231 绑定变量 1 ... -
Groovy Sql使用Spring的事务管理
2011-12-28 18:43 1287Grails如果不想用Hibernate的东东,可以直 ... -
Crack JRebel 4.0,无需重启JVM,热部署解决方案
2011-12-28 18:28 1170http://dl.dropbox.com/u/229 ... -
Linux tar压缩时排除某个目录或文件的参数
2011-12-21 13:48 1303在对某个目录进行压缩的时候,有时候想排除掉某个目录,例 ... -
2011面试题目之猴子偷桃
2011-12-21 11:14 1508<span style="" ... -
Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
2011-12-20 14:53 1602首先是准备工作 ... -
C#信息采集工具实现
2011-12-20 12:34 918简单C#信息采集工具实现 最近想整只爬虫玩玩,顺便熟 ... -
介绍一个ASP.NET开发工具Web Matrix
2011-12-19 09:49 966想学习或者开发个小型的ASP.NET程序,装个VS.N ... -
程序名称DreamIT(梦想IT)提供许多IT公司的面试和笔试试题
2011-12-19 09:24 916<font style="bac ... -
基于SVG的WebGIS的一个雏形
2011-12-14 13:19 680我和一位师弟,经过了很多天的努力,终于做出了一个简单的 ... -
在Android中自定义IOS风格的按钮
2011-12-12 10:09 1095<p class="MsoNorm ... -
HTML5网站
2011-12-12 08:55 808记得刚来现在公司的时候,老大就说,作为移动平台部门的员 ... -
将字节流(byte[])转换成文件
2011-12-09 08:25 1522/** * 将字节流转换成文件 * @par ... -
在SUSE 11中安装Windows虚拟机
2011-12-09 01:29 898Novell公司最近推出 ...
相关推荐
在计算机图形学中,"绘制闪烁实心圆"是一个常见的任务,它涉及到动态图形的创建,这在游戏开发、用户界面设计以及可视化应用等领域中非常常见。本话题将深入探讨如何利用自绘静态文本框来实现这个效果。 首先,我们...
Android开发:Android Studio:动画与图形绘制.pdf
1. **去除Activity自带的默认背景颜色**:Android的Theme主题中默认包含了窗口背景属性。如果不特别需要,可以通过在AppTheme中移除这个背景颜色来减少一层过渡绘制。 - 在AppTheme样式中添加: ```xml ...
【简易画图_MFC实心圆_shinningbu3_】是一个基于MFC(Microsoft Foundation Classes)框架的小程序,主要用于教学或实践目的,帮助用户理解如何在Windows环境下利用MFC库来实现图形绘制功能,特别是绘制实心圆。...
工作需要绘制一张可动态添加的折线图,经过筛选,选择MPAndroidChart:v3.1.0。 **使用方法:** 1、添加build gradle 在项目的build gradle中上述位置中添加“maven { url ‘https://jitpack.io’ }”这串代码。 ...
除了文件交换站点上的圆形绘图仪之外,此功能还可以绘制任意数量的任意大小和 x,y 位置的圆。 输入可以是标量、向量或 ND 数组的任何逻辑组合。 可以使用 LineSpec 和 ColorSpec 名称-值对轻松格式化圆圈。 句法圆...
FILLEDCIRCLE 实心圆绘图 fillCircle(CENTER,R,N,COLOR) 通过在外围使用 N 个点绘制一个以 CENTER 为中心,R 为半径的 COLOR 填充圆。 用法示例, fillCircle([1,3],3,1000,'b'); fillCircle([2,4],2,1000,'r'); ...
在Android平台上,OpenGL ES(OpenGL for Embedded Systems)是用于图形渲染的重要库,广泛应用于游戏开发、3D模型显示等场景。本示例将带你入门Android中的OpenGL ES,通过绘制基本的几何图形——三角形和正方形,...
总结来说,这个“Android自定义view之画圆环”的示例涵盖了许多Android开发中的核心概念,包括自定义View的创建、图形绘制、动画应用以及性能优化。通过学习和实践这个示例,开发者可以更好地理解和掌握Android图形...
在Android开发中,为UI元素添加虚线、圆角和渐变效果是常见的需求,可以提升应用的视觉吸引力。下面将详细讲解如何实现这些效果。 ### 一、虚线(Dashed Line) 在Android中,我们可以使用`Shape Drawable`来创建...
以下是对这个“Android开发 心电图绘制”项目的详细分析和相关知识点的阐述。 首先,自定义心电图意味着我们需要创建一个自定义的Android View类,继承自View或者ViewGroup。在这个类中,我们将重写onDraw()方法,...
在Android开发中,自定义画布Canvas是实现图形绘制的核心工具。Canvas提供了丰富的API,允许开发者在屏幕上绘制各种形状、图像以及文字等。本教程将深入探讨如何利用Canvas实现绘制和清空画布的功能。 首先,我们...
本篇文章将详细讲解如何利用SuperMap iClient for Android实现绘制圆对象,帮助开发者在Android应用中创建具有地理定位功能的地图界面,并在其中进行图形绘制。 首先,要使用SuperMap iClient for Android,你需要...
支持如下: (1)opengl es绘制三角形拼成球体 (2)图片作为纹理映射到整个球面上 (3)双点触控缩放球体 (4)拖动旋转球体
Android DrawText 字符串的绘制 Android DrawText 字符串的绘制是 Android 平台上的一种常见的绘制技术,用于在屏幕上显示文字信息。在 Android 平台上,DrawText 字符串的绘制是通过使用 Canvas 和 Paint 对象来...
4. **图形绘制**:Android提供了Canvas类,允许开发者在屏幕上绘制各种形状,包括圆形和弧线。我们可以利用Canvas的drawArc()方法绘制半圆或1/4圆,同时使用drawLine()或drawRect()来绘制连接菜单项的路径。 5. **...
在Android开发中,有时我们需要创建动态的、可定制的曲线图来展示数据,这通常涉及到自定义View的绘制。这个“android曲线图的绘制”是一个关于如何在Android平台上实现曲线图表的小型示例项目。该项目可能包含了一...
总的来说,这个项目涉及了Android开发中的3D图形编程,通过OpenGL ES绘制不同类型的几何形状,每个形状作为一个独立的类实现,而renderer类则负责把这些形状渲染到屏幕上,创造出丰富的3D视觉效果。理解并掌握这些...
在Android开发中,创建动态视觉效果,如"在空间中绘制随机飞行粒子形成星座",是一种常见的提升用户体验的手段。这种效果通常通过自定义View或者使用特定的图形库来实现。下面将详细介绍如何在Android应用中实现这样...
在Android开发中,有时我们需要在界面上添加一些自定义的图形元素,比如在ImageView上绘制一个圆环。本文将详细讲解如何在ImageView上实现这一功能。我们主要关注三种方法中的第一种,即通过画布(Canvas)进行绘制...