- 浏览: 127553 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (145)
- java (145)
- Java网络编程 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- tomcat部署web工程的两种方法 (1)
- JAX-RS 从傻逼到牛叉 1:REST 基础知识 (1)
- FreyjaJdbcTemplate 大致上完工了,想请人重构。。 (1)
- 开始认识自己 (1)
- 设计模式-Abstract Factory 模式 (1)
- 数据库中主键的设计原则 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- mac环境变量 (1)
- STC单片机ADC转换的例子 (1)
- myeclipse 8下安装Ibator . (1)
- OSGI与Android结合 (1)
- CSDN BLOG EXPERT (1)
- Java中网络操作的开源库CommonsNet (1)
- Apache License Version 2.0 英文内容及中文翻译 (1)
- JTest (1)
- GeoCon 用C#编写的开源的地理信息数据转换工具 (1)
- ERP简易教程 (1)
- 提高站点在搜索引擎上的排名 (1)
- Wifi (1)
- 腾讯Q+开放平台,相信又是一次成功的模仿 (1)
- C#坦克大战网络版代码 (1)
- Problem16 (1)
- Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较) (1)
- ava框架数据库连接池比较(c3p0 (1)
- dbcp和proxool)bonecp (1)
- 继续向成熟男人靠拢 (1)
- Qt4.7中 默认的构造函数 (1)
- xml CDATA (1)
- 只针对中英文混合分词的中文分词器 (1)
- 典型相关分析及其适用范围和spss操作(转) (1)
- llvm (1)
- java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access (1)
最新评论
-
xm3530:
什么鬼?都没法看,发出来干嘛
Android中利用App实现消息推送机制的代码实例 -
lvtenglongxiaohei:
太经典了!
学习一下!
ERP简易教程 -
lvtenglongxiaohei:
<br> 一天中午,丈 ...
ERP简易教程 -
hzw2312:
加油~~~!!!
开始认识自己 -
123048591:
显示乱码
tomcat部署web工程的两种方法
大家先看图片:
因为前一段时间在写画图类,刚好有一个线程控制画图闪烁的,我就想说我能不能做一个心形闪烁的,出来的效果就如图,先贴再讲解代码:
里面设置两个类,一个是我们的activity类,这个类用来显示示图,然后建一个继承surfaceview的类,我们在这里面画图。先贴两个累的代码:
主类名:iaiaimainactivity,画图类类名:love.
关于这个程序要讲解的几点:
1. 画图的时候你可以继承view,也可以继承surfaceview,这两者的区别在于:surfaceview是在一个新起的单独线程中可以重新绘制画面而view必须在ui的主线程中更新画面。surfaceview可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了surfaceholder类,使用getholder方法获取,还有涉及的surfacecreated(surfaceholder holder),surfacedestroyed(surfaceholder holder),surfacechanged(surfaceholder holder, int format, int width, int height)方法,而在surfaceholder.callback 接口回调中可以通过重写来改变这些方法
2.程序其实很简单, 既然生命了runnable接口,就有相对应的run方法,在surfacecreate()的时候开启线程,线程每隔200ms就刷新一次,这样我们看到的效果就是闪烁的,每200毫秒 画一次图,根据经过的间隔时间来设置画笔的颜色,然后通过循环描点,画出心形,然后设置字体大小,画字和字下面的横线。
3.关于心形函数,是从一个例子中看来得,关于x和y的得到,
x = r * math.cos(math.pi / 45 * j) * math.sin(math.pi / 45 * i) + 320 / 2; y = -r * math.sin(math.pi / 45 * j) + 400 / 4;
320是屏幕的宽度,本来竖屏我设置的是480,可是下面得写字,就设置为400的了,关于画更好看的心形还有一个函数,大家可以看下:
因为前一段时间在写画图类,刚好有一个线程控制画图闪烁的,我就想说我能不能做一个心形闪烁的,出来的效果就如图,先贴再讲解代码:
里面设置两个类,一个是我们的activity类,这个类用来显示示图,然后建一个继承surfaceview的类,我们在这里面画图。先贴两个累的代码:
主类名:iaiaimainactivity,画图类类名:love.
package com.iaiai.activity;import android.app.activity;import android.os.bundle;/** * * <p> * title: iaiaiactivity.java * </p> * <p> * e-mail: 176291935@qq.com * </p> * <p> * qq: 176291935 * </p> * <p> * http: iaiai.iteye.com * </p> * <p> * create time: 2011-8-11 * </p> * * @author 丸子 * @version 0.0.1 */public class iaiaiactivity extends activity { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); love love = new love(this); setcontentview(love); }}
package com.iaiai.activity;import android.content.context;import android.graphics.canvas;import android.graphics.color;import android.graphics.paint;import android.graphics.rectf;import android.graphics.typeface;import android.view.surfaceholder;import android.view.surfaceview;/** * * <p> * title: love.java * </p> * <p> * e-mail: 176291935@qq.com * </p> * <p> * qq: 176291935 * </p> * <p> * http: iaiai.iteye.com * </p> * <p> * create time: 2011-8-11 * </p> * * @author 丸子 * @version 0.0.1 */public class love extends surfaceview implements surfaceholder.callback, runnable { boolean mbloop = false; surfaceholder msurfaceholder = null; private canvas canvas; int micount = 0; int y = 50; /** * @param context */ public love(context context) { super(context); msurfaceholder = this.getholder(); msurfaceholder.addcallback(this); this.setfocusable(true); this.setkeepscreenon(true); mbloop = true; } /* * (non-javadoc) * * @see * android.view.surfaceholder.callback#surfacechanged(android.view.surfaceholder * , int, int, int) */ @override public void surfacechanged(surfaceholder holder, int format, int width, int height) { // todo auto-generated method stub } /* * (non-javadoc) * * @see * android.view.surfaceholder.callback#surfacecreated(android.view.surfaceholder * ) */ @override public void surfacecreated(surfaceholder holder) { // todo auto-generated method stub new thread(this).start(); } /* * (non-javadoc) * * * @seeandroid.view.surfaceholder.callback#surfacedestroyed(android.view. * surfaceholder) */ @override public void surfacedestroyed(surfaceholder holder) { // todo auto-generated method stub mbloop = false; } /* * (non-javadoc) * * @see java.lang.runnable#run() */ @override public void run() { // todo auto-generated method stub while (mbloop) { try { thread.sleep(200); } catch (exception e) { // todo: handle exception } synchronized (msurfaceholder) { draw(); } } } private void draw() { // todo auto-generated method stub canvas = msurfaceholder.lockcanvas(); try { if (msurfaceholder == null || canvas == null) { return; } if (micount < 100) { micount++; } else { micount = 0; } paint paint = new paint(); paint.setantialias(true); paint.setcolor(color.black); canvas.drawrect(0, 0, 320, 480, paint); switch (micount % 6) { case 0: paint.setcolor(color.blue); break; case 1: paint.setcolor(color.green); break; case 2: paint.setcolor(color.red); break; case 3: paint.setcolor(color.yellow); break; case 4: paint.setcolor(color.argb(255, 255, 181, 216)); break; case 5: paint.setcolor(color.argb(255, 0, 255, 255)); break; default: paint.setcolor(color.white); break; } int i, j; double x, y, r; for (i = 0; i <= 90; i++) { for (j = 0; j <= 90; j++) { r = math.pi / 45 * i * (1 - math.sin(math.pi / 45 * j)) * 20; x = r * math.cos(math.pi / 45 * j) * math.sin(math.pi / 45 * i) + 320 / 2; y = -r * math.sin(math.pi / 45 * j) + 400 / 4; canvas.drawpoint((float) x, (float) y, paint); } } paint.settextsize(32); paint.settypeface(typeface.create(typeface.serif, typeface.italic)); rectf rect = new rectf(60, 400, 260, 405); canvas.drawroundrect(rect, (float) 1.0, (float) 1.0, paint); canvas.drawtext("loving you", 75, 400, paint); msurfaceholder.unlockcanvasandpost(canvas); } catch (exception e) { } }}
关于这个程序要讲解的几点:
1. 画图的时候你可以继承view,也可以继承surfaceview,这两者的区别在于:surfaceview是在一个新起的单独线程中可以重新绘制画面而view必须在ui的主线程中更新画面。surfaceview可以控制表面的格式,比如大小,显示在屏幕中的位置,最关键是的提供了surfaceholder类,使用getholder方法获取,还有涉及的surfacecreated(surfaceholder holder),surfacedestroyed(surfaceholder holder),surfacechanged(surfaceholder holder, int format, int width, int height)方法,而在surfaceholder.callback 接口回调中可以通过重写来改变这些方法
2.程序其实很简单, 既然生命了runnable接口,就有相对应的run方法,在surfacecreate()的时候开启线程,线程每隔200ms就刷新一次,这样我们看到的效果就是闪烁的,每200毫秒 画一次图,根据经过的间隔时间来设置画笔的颜色,然后通过循环描点,画出心形,然后设置字体大小,画字和字下面的横线。
3.关于心形函数,是从一个例子中看来得,关于x和y的得到,
x = r * math.cos(math.pi / 45 * j) * math.sin(math.pi / 45 * i) + 320 / 2; y = -r * math.sin(math.pi / 45 * j) + 400 / 4;
320是屏幕的宽度,本来竖屏我设置的是480,可是下面得写字,就设置为400的了,关于画更好看的心形还有一个函数,大家可以看下:
评论
3 楼
夜之son
2011-09-29
实在不敢恭维
2 楼
cheney_love
2011-08-18
楼主是原作?
1 楼
walldr2161
2011-08-18
先留个爪,效果不错,问题是代码排版。。。。
利用俺的酒葫芦先收了,回家了在看,上班中。。。。。。。。。。。。。
利用俺的酒葫芦先收了,回家了在看,上班中。。。。。。。。。。。。。
发表评论
-
java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access
2012-02-08 14:17 1060<div>Java数据库连接(JDBC)由 ... -
llvm
2012-02-07 16:29 881llvm ... -
典型相关分析及其适用范围和spss操作(转)
2012-02-07 15:43 1583看文章《科学学研 ... -
只针对中英文混合分词的中文分词器
2012-02-03 10:39 1013该版本说明 1、只针对中英文混合分词 需要一些中文和 ... -
xml CDATA
2012-02-03 08:45 1210<h2 style="font-si ... -
Qt4.7中 默认的构造函数
2012-02-01 09:14 1089<p><span style=&qu ... -
继续向成熟男人靠拢
2012-01-11 17:04 880转自徒儿的人人。 ... -
ava框架数据库连接池比较(c3p0,dbcp和proxool)bonecp
2012-01-11 14:13 1135<h1 style="text ... -
Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较)
2011-12-28 15:23 963<span style="font- ... -
Problem16
2011-12-28 12:53 668package com.shui.mu.yao.io. ... -
C#坦克大战网络版代码
2011-12-20 13:09 983简单C#坦克大战网络版代码 写完单机版 http ... -
腾讯Q+开放平台,相信又是一次成功的模仿
2011-12-20 10:44 861今天看到两则新 ... -
Wifi
2011-12-19 13:14 1088. Confirm if Wifi is On ... -
提高站点在搜索引擎上的排名
2011-12-19 12:04 938对于拥有网站的各位站长来说,都希望自己的站点能够在各种 ... -
ERP简易教程
2011-12-16 16:47 922注明:下面的帖子 ... -
GeoCon 用C#编写的开源的地理信息数据转换工具
2011-12-14 12:29 956<p class="MsoNorma ... -
JTest
2011-12-14 09:00 1029接到parasoft公司一位先生打来的电话,说下个月第 ... -
Apache License Version 2.0 英文内容及中文翻译
2011-12-13 12:59 2340</span> <p class= ... -
Java中网络操作的开源库CommonsNet
2011-12-13 12:39 817<p class="MsoNorma ... -
CSDN BLOG EXPERT
2011-12-13 08:59 1094<img src="http://p. ...
相关推荐
在Android中,我们主要使用Canvas类来进行图形绘制。Canvas提供了各种方法,如drawRect(), drawCircle(), drawPath()等,用于在Bitmap上绘制几何形状、线条和路径。在这个项目中,我们可能会看到一个自定义View类,...
首先,我们要了解Android中的`Paint`类。`Paint`是Android图形系统的核心部分,用于定义绘制图形时的颜色、样式和效果。通过设置`Paint`对象的属性,我们可以控制线条的宽度、颜色、透明度、抗锯齿效果、字体样式等...
在JavaScript中,我们可以利用Canvas API来实现各种复杂的图形操作,包括鼠标画图和线程画线。本教程将深入探讨如何使用Canvas进行这些功能。 首先,创建一个Canvas元素非常简单,只需在HTML中添加一个`<canvas>`...
SketchView利用Android的`Canvas`和`Matrix`类来处理所有的图形绘制和变换操作。Canvas是Android图形系统的基础,可以用来在屏幕上绘制各种形状和图片;而Matrix则用于对图形进行旋转、缩放、平移等变换。 2. **...
2. **自定义View**:在Android中,为了实现交互式画图,通常需要创建自定义的`View`类,重写`onDraw()`方法,在这里调用`Canvas`的绘图方法进行实际的绘制工作。同时,还需要处理触摸事件(`MotionEvent`),以便...
- Android的`Canvas`类:它是Android图形系统的核心,用于在`Bitmap`上进行绘制操作,如画线、矩形、圆形等。 - `Path`对象:用于创建和管理复杂的绘图路径,支持直线、曲线等。 - `Paint`对象:定义了绘制的颜色...
在Android中,`Canvas`类是用于在屏幕上绘制的基本对象。通过`onDraw()`方法,你可以利用`Canvas`进行绘图操作,如画线、填充形状等。同时,`SurfaceView`是一种优化的视图,适用于高性能的图形绘制,如游戏或实时...
本篇文章将深入解析“Android代码-画图工具源码.zip”中的关键知识点,帮助开发者理解和构建自己的Android画图应用。 1. **SurfaceView**:Android画图工具的核心是SurfaceView,它是一个可以显示连续动画或处理高...
- SurfaceView是Android中的一个特殊视图,它提供了在单独的线程上进行渲染的能力,这对于高性能的图形操作,如画图应用,非常关键。SurfaceView可以确保画图操作不会阻塞UI线程,提高应用的响应速度。 2. **...
在Android中,颜色可以通过ARGB(Alpha, Red, Green, Blue)格式表示。开发者可以使用`Color`类提供的静态方法来创建颜色,例如`Color.argb()`,或者直接使用十六进制颜色代码。颜色的动态变化可能是通过定时器或...
- 在Android中,画图功能通常通过继承自`View`类来实现,创建一个自定义的`DrawView`,重写`onDraw()`方法,在这里进行绘图操作。 3. **Canvas和Paint对象**: - `Canvas`是画布,用于绘制图形。开发者可以在`...
首先,让我们探讨一下Android中的画图机制。Android提供了一个名为`Canvas`的类,它是绘画的基础,允许开发者在`Bitmap`或`Surface`上绘制图形。`Canvas`提供了各种方法,如`drawRect`, `drawCircle`, `drawLine`, `...
在Android平台上,开发一个画图板应用涉及到许多关键的技术点,包括用户交互、图形渲染、数据存储以及资源管理等。以下是对"基于Android系统的画图板"这一主题的详细解析: 1. **用户交互**:Android系统提供了丰富...
在2016年的这个系列教程中,我们将重点探讨如何在Android中利用Canvas和Drawable进行图形绘制。 首先,你需要了解`Canvas`类,它是Android画图的核心。`Canvas`提供了在Bitmap上绘制各种形状和图像的方法,如线、圆...
Canvas是Android中用于在Bitmap上进行绘图的对象。通过Canvas,我们可以绘制线条、形状、文本、图像等元素。Canvas提供了各种绘图方法,如`drawLine()`、`drawRect()`、`drawCircle()`、`drawText()`等。 2. **...
- `Canvas`是Android中用于在Bitmap或屏幕表面绘制的基本类。它提供了多种绘图方法,如`drawRect()`, `drawCircle()`, `drawText()`等。 - `Paint`对象则用于设置图形的样式,如颜色、线条宽度、文字样式等。它...
Android中利用画图类和线程画出闪烁的心形,送给亲爱的他 android自带的示例程序 BluetoothChat 变蓝牙串口助手(内含DIY蓝牙遥控车附源码实例教程) Android高手过招 FAQ 网友收集的android开发书籍(可下载哦)...
1. **主线程与UI线程**:Android应用程序的UI更新必须在主线程(UI线程)中进行,因此,画图操作也需要在这个线程内执行。如果需要频繁或长时间的绘图,应该使用SurfaceView或者OpenGL ES来避免阻塞主线程。 2. **...
4. **触控事件处理**: 在Android中,`MotionEvent`类用于处理触摸屏幕产生的事件。在画图应用中,你需要监听`ACTION_DOWN`, `ACTION_MOVE`, `ACTION_UP`等事件,根据手指的按下、移动和抬起来追踪绘画路径。通过对每...
1. **自定义View**:在Android中,自定义View通常是为了实现特定的用户交互或视觉效果。在这个画图程序中,`CustomDrawView`会重写`onTouchEvent`方法来处理用户的触摸输入。当用户触摸屏幕时,程序会记录下触点的...