- 浏览: 175505 次
- 性别:
- 来自: 深圳
最新评论
-
ningv:
修改proguard.bat还是不行,看了LZ提供的论坛,里面 ...
有关 Conversion to Dalvik format failed with error 1 -
额外日记:
太棒了
Spring Framework API 2.5 chm版 -
chunjuan0126:
楼主,我现在用的是Android 4.3的,Android-1 ...
有关 Conversion to Dalvik format failed with error 1 -
夜色蓝:
真的好用,谢谢啦
有关 Conversion to Dalvik format failed with error 1 -
winnerph:
3q
Spring Framework API 2.5 chm版
CanvasView
CanvasDemoActivity
package com.sonzer.CanvasDemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; /** * 绘图常用方法演示 * @author sonzer * */ public class CanvasView extends View { private Paint mPaint1 = null; private Bitmap mBitmap = null; public CanvasView(Context context) { super(context); // 初始化画笔 mPaint1 = new Paint(); mPaint1.setColor(Color.RED);// 设置笔刷颜色 mPaint1.setStrokeWidth(2);// 设置笔刷粗细 mPaint1.setAntiAlias(true);// 设置抗锯齿 //初始化图片 mBitmap = ((BitmapDrawable) getResources().getDrawable( R.drawable.sonzer_pic)).getBitmap(); mBitmap = rotate(mBitmap, 10, 0, 0);// 图像旋转 mBitmap = scale(mBitmap, 0.3f, 0.3f, 0, 0);// 图像缩放 mBitmap = dispose(mBitmap, mBitmap.getWidth(), mBitmap.getHeight());// 灰度处理 // 抗锯齿(感觉不明显) // canvas.setDrawFilter(new PaintFlagsDrawFilter(0, // Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); alphaAnimation();//透明度渐变动画 // translateAnimation();//平移动画 // scaleAnimation();//缩放动画 // rotateAnimation();//旋转动画 } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.drawColor(Color.WHITE);// 设置画布背景颜色 canvas.clipRect(0, 0, 320, 480);// 设置画布范围 canvas.drawLine(20, 20, 100, 30, mPaint1);// 绘制线段 canvas.drawPoint(60, 50, mPaint1);// 绘制点 canvas.drawRect(new Rect(20, 70, 120, 100), mPaint1); // 绘制矩形 canvas.drawRoundRect(new RectF(140, 70, 230, 100), 10, 10, mPaint1); // 绘制圆角矩形 canvas.drawCircle(50, 140, 30, mPaint1);// 绘制圆形 canvas.drawArc(new RectF(140, 110, 230, 170), 180, 90, true, mPaint1);// 绘制圆弧 canvas.drawOval(new RectF(240, 110, 280, 170), mPaint1);// 绘制椭圆形 canvas.drawText("绘制文字", 20, 200, mPaint1);// 绘制文字 float[] points = new float[] { 35, 220, 20, 250, 20, 250, 50, 250, 35, 220, 50, 250 }; canvas.drawLines(points, mPaint1);// 绘制线段序列,相当3条线,6个坐标 canvas.drawBitmap(mBitmap, 20, 270, null);// 绘制图片 } /** * 图像旋转 * * @param mBitmap * @param angle * @param px * @param py * @return */ public Bitmap rotate(Bitmap mBitmap, float angle, float px, float py) { Matrix matrix = new Matrix(); matrix.reset(); matrix.setRotate(angle, px, py); mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true); return mBitmap; } /** * 图像缩放 * * @param sx * @param sy * @param px * @param py * @return */ public Bitmap scale(Bitmap mBitmap, float sx, float sy, float px, float py) { Matrix matrix = new Matrix(); matrix.reset(); matrix.setScale(sx, sy, px, py); mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true); return mBitmap; } /** * 灰度处理 * * @param mBitmap * @param width * @param height * @return */ public Bitmap dispose(Bitmap mBitmap, final int width, final int height) { int bitmap[] = new int[width * height]; mBitmap.getPixels(bitmap, 0, width, 0, 0, width, height); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { int index = i * width + j; // 获取RGB值 int r = (bitmap[index] >> 16) & 0xff; int g = (bitmap[index] >> 8) & 0xff; int b = (bitmap[index]) & 0xff; // 计算灰度值 double gray = r * 0.3 + g * 0.59 + b * 0.11; // 0xff000000 | (R << 16) | (G << 8) | B bitmap[index] = 0xff000000 | ((int) gray << 16) | ((int) gray << 8) | (int) gray; } } Bitmap bm = Bitmap.createBitmap(width, height, Config.ARGB_4444); bm.setPixels(bitmap, 0, width, 0, 0, width, height); mBitmap = bm; bitmap = null; return mBitmap; } /** * 透明度渐变动画 */ public void alphaAnimation() { Animation alpha = new AlphaAnimation(0.0f, 1.0f); alpha.setDuration(3000); this.startAnimation(alpha); } /** * 平移动画 */ public void translateAnimation() { Animation translate = new TranslateAnimation(10, 100, 10, 100); translate.setDuration(3000); this.startAnimation(translate); } /** * 缩放动画 */ public void scaleAnimation() { Animation scale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scale.setDuration(3000); this.startAnimation(scale); } /** * 旋转动画 */ public void rotateAnimation() { Animation rotate = new RotateAnimation(0.0f, 360.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setDuration(3000); this.startAnimation(rotate); } }
CanvasDemoActivity
package com.sonzer.CanvasDemo; import android.app.Activity; import android.os.Bundle; public class CanvasDemoActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CanvasView view=new CanvasView(this); setContentView(view); } }
- CanvasDemo.rar (256 KB)
- 下载次数: 117
发表评论
-
<转载>ThinkAndroid
2014-09-19 13:44 22ThinkAndroid是一个免费的开源的、简易的、遵循Apa ... -
第四部分 开发工具及测试工具
2014-08-20 15:35 2684第四部分 开发工具及测试工具-内容来自互联网 主要介绍和 ... -
第三部分 优秀项目
2014-08-20 15:34 721第三部分 优秀项目- ... -
第二部分 工具库
2014-08-20 15:33 1634第二部分 工具库-内容来自互联网 主要包括那些不错的开发 ... -
第一部分 个性化控件(View)
2014-08-20 15:30 2256第一部分 个性化控件(View)-内容来自互联网 主要介 ... -
is not translated in zh-rCN
2014-06-13 13:34 1264新版本的SDK会出现,xxx is not translat ... -
解决eclipse连接不上手机
2014-06-05 15:57 2917:: by sonzer :: 2014-06-05 ... -
android 抓包实际应用
2013-05-14 17:16 1555前提条件: 手机已经root 手机存在/system ... -
android 显示特殊符号
2011-12-11 20:39 19754在android上使用ASCII显示特殊符号 在xml中表示如 ... -
viewGroup 绘制任一背景图公式
2011-12-11 15:29 2486之前有看到有关直接调用桌面的壁纸 不过要求系统最低为2.1 为 ... -
复习下日期的不同表示
2011-11-12 20:03 1734import java.text.DateFormat; ... -
解决facebook sdk里的一个bug
2011-11-10 11:00 1333发现在facebook里post传输时,总是出现: Key ... -
解决 Proguard 引入第三方jar可能can't find referenced class
2011-10-25 20:28 1今天朋友的项目在导出时,出现了这样的错误(xxx为包名或类名) ... -
在facebook中用到的读取证书hash 值
2011-10-22 22:10 1618keytool -exportcert -alias 作者 ... -
通过包名启动程序
2011-07-28 22:48 2290之前在启动外部程序都是通过包名和类名来启动,如下: Int ... -
TextView 中文字滚动的必要条件
2011-07-14 14:02 2485在有多个控件中,TextView要让其文字能滚动的的必要条件如 ... -
全局变量
2011-06-02 16:33 11881.定义一个存放变量的类 package sonzer. ... -
应用程序返回到桌面
2011-06-02 15:00 1240应用程序返回到桌面 相应于按了HOME键 Intent ... -
获取SD卡上 未安装 APK文件 的图标等
2011-05-10 16:06 5685各版本通用 /** * 获 ... -
Android 获取应用程序的大小,数据大小,缓存大小
2011-04-11 15:29 16491以下方法支持Android1.1到2.3.3,即目前所有版本 ...
相关推荐
在Android平台上,开发一款简单的画图应用涉及到许多关键知识点,主要集中在Android Studio的使用、UI设计、绘图机制以及交互处理。以下是对这些知识点的详细解释: 1. **Android Studio**: Android Studio是...
在Android平台上,开发一款画图板应用涉及到许多关键知识点,主要集中在自定义View、画布(Canvas)以及触摸事件处理上。下面将详细解释这些技术点。 1. **自定义View**: Android系统允许开发者创建自己的视图组件...
在Android平台上,画图功能是通过Canvas类和相关的图形API实现的,这使得开发者能够创建丰富的自定义视图和交互式图形界面。本压缩包"android 画图集合.zip"包含多个示例项目,旨在帮助开发者深入理解Android图形...
Android的画图主要通过Canvas类来实现,这是一个用于绘制2D图形的类,它提供了多种绘图方法,如绘制线条、形状、文本以及位图等。下面将详细介绍Android画图的相关知识点。 一、Canvas类 Canvas是Android图形系统的...
Android 画图程序源码分析 在Android平台上开发一款画图程序,涉及到许多核心技术和组件。这个"Android 画图程序源码.rar"文件提供了一个实际的案例,可以帮助我们深入理解Android图形系统的工作原理,以及如何创建...
这个"Android画图示例集合"项目,通过实际代码示例,将帮助开发者熟悉以上知识点,并能熟练地在Android应用中进行自定义图形绘制。在实践中不断探索和学习,你将能够创建出更多创新和吸引人的用户界面。
在Android平台上,开发一款画图板应用是一项常见的任务,它能提供给用户一个自由创作的空间。这个"android简单的画图板实现代码"就是一个适合初学者的示例项目,旨在帮助开发者了解如何在Android环境中实现画图功能...
本教程将通过分析提供的“android画图程序源代码”来深入理解Android图形绘制的基本概念和技术。 首先,Android提供了多种方式来绘制图形,主要包括Canvas、Paint、Path以及Bitmap等类。Canvas是绘画的基础,它提供...
《Android画图工具源码详解》 在移动设备领域,Android操作系统以其开源、灵活的特点深受开发者喜爱。在Android平台上开发一款画图工具,不仅可以满足用户日常的手绘需求,还可以为艺术家提供创作空间。本篇文章将...
在Android平台上,开发一款自动画图程序涉及到许多关键知识点,这些知识对于理解Android应用开发以及图形绘制至关重要。从"Android 画图程序源码.zip"的标题和描述中,我们可以推测该程序具备自动绘图功能,并能动态...
在Android平台上,开发一个画图板应用涉及到许多关键的技术点,包括用户交互、图形渲染、数据存储以及资源管理等。以下是对"基于Android系统的画图板"这一主题的详细解析: 1. **用户交互**:Android系统提供了丰富...
2. **自定义View**:在Android中,为了实现交互式画图,通常需要创建自定义的`View`类,重写`onDraw()`方法,在这里调用`Canvas`的绘图方法进行实际的绘制工作。同时,还需要处理触摸事件(`MotionEvent`),以便...
在Android平台上,开发一个简易画图工具是一项常见的任务,它能提供给用户一个自由创作的空间。这个特定的项目,"android简易画图工具",是一个基于Android编程的画板应用,开发者对原有的代码进行了更新和优化,...
本文将详细解析"android画图板"这个主题,介绍如何在Android中实现一个基本的画线功能,并探讨两种不同的实现方法。 首先,我们要了解Android中的画布(Canvas)和画笔(Paint)概念。Canvas是Android图形系统的一...
在Android平台上,开发人员可以利用Canvas和Bitmap等组件来实现丰富的图形绘制功能,包括但不限于画图、签名等交互式操作。Canvas是Android图形系统的核心部分,它提供了在内存中的Bitmap上绘制各种形状、线条和图像...
以上是Android图形绘制的基本概念和常用方法。通过这些工具,开发者可以创造出丰富多样的视觉效果,为用户带来更加生动和有趣的体验。在实际项目中,还需要结合具体的业务需求和性能优化技巧,才能实现高质量的图形...
在Android开发领域,画图是实现用户界面个性化和复杂功能的重要手段。本教程将带你走进Android画图的世界,让你从新手快速成长为能绘制出丰富多彩图形的开发者。在2016年的这个系列教程中,我们将重点探讨如何在...
在安卓(Android)平台上开发应用程序时,有时我们需要创建具有用户交互功能的画图程序,让用户能够在屏幕上自由绘制。本资源“安卓Android源码——画图程序源码.zip”提供了这样一个应用的源代码,帮助开发者理解和...