- 浏览: 576568 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
hxlniada:
[color=darkred][/color][size=sm ...
利用Handler来更新android的UI -
jack_ye:
...
检测Android中触摸屏手势的动作与坐标 -
z278013421:
Android Services使用示例 -
东方vs不败:
写的不错,挺好的
利用Handler来更新android的UI -
liangxping:
就是双缓存机制而已。
Android中SurfaceView的使用示例
在读Android SDK里面的samples里面游戏的时候,很多时候都看到对canvas的save()和restore()运用。
下面是个小程序,使用了这两个方面,使得旋转红色方块的时候,保证蓝色方块不受影响。
代码如下:
package com.ray.test; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } class MyView extends SurfaceView implements SurfaceHolder.Callback{ private SurfaceHolder mHolder; private Canvas canvas; public MyView(Context context) { super(context); mHolder = getHolder(); mHolder.addCallback(this); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { canvas = mHolder.lockCanvas(); Paint mPaint = new Paint(); mPaint.setColor(Color.BLUE); canvas.drawRect(100, 200, 200, 300, mPaint); canvas.save(); canvas.rotate(45); mPaint.setColor(Color.RED); canvas.drawRect(150, 10, 200, 60, mPaint); canvas.restore(); mHolder.unlockCanvasAndPost(canvas); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } } }
- Test.rar (24.1 KB)
- 下载次数: 621
评论
7 楼
hurry07
2010-06-24
puhao7117441 写道
但是貌似有个问题是,旋转canvas和直接旋转对象两个比起来,旋转画布所得到的质量似乎要低一些……
这个可以通过设置画笔的抗锯齿来抵消, 不过有的图片即使抗锯齿了也不行
6 楼
白夜古月
2010-06-18
意思就是 save() 和restore() 是用来划定操作的一个范围 这里可以不只是旋转
5 楼
puhao7117441
2010-06-17
但是貌似有个问题是,旋转canvas和直接旋转对象两个比起来,旋转画布所得到的质量似乎要低一些……
4 楼
hurry07
2010-06-16
多谢楼主的分享, 看了代码就清晰很多了
另外有一个问题
canvas.rotate(45); 是逆时旋转了 45 度 而matirx.setRotate(45) 是不是顺时针的 45
另外有一个问题
canvas.rotate(45); 是逆时旋转了 45 度 而matirx.setRotate(45) 是不是顺时针的 45
3 楼
bieguojun
2010-04-16
lishuyan0818 正解
2 楼
lishuyan0818
2010-03-15
其实楼主的代码 save 和 restore并不会影响蓝色方块的绘制。
看看我下面的代码,如果有save 和 restore,那么平移、缩放、旋转等操作只对 save到 restore之间的代码有影响。也就是说只有红色的方块是旋转的。
如图:
如果上面的代码,注释1和注释2部分的代码被注释的话,那么绿色的方块一样是被旋转的。
如图:
看看我下面的代码,如果有save 和 restore,那么平移、缩放、旋转等操作只对 save到 restore之间的代码有影响。也就是说只有红色的方块是旋转的。
如图:
canvas = mHolder.lockCanvas(); Paint mPaint = new Paint(); mPaint.setColor(Color.BLUE); canvas.drawRect(100, 200, 200, 300, mPaint); canvas.save(); //注释1 canvas.rotate(45); mPaint.setColor(Color.RED); canvas.drawRect(150, 10, 200, 60, mPaint); canvas.restore(); //注释2 mPaint.setColor(Color.GREEN); canvas.drawRect(200, 10, 250, 100, mPaint); mHolder.unlockCanvasAndPost(canvas);
如果上面的代码,注释1和注释2部分的代码被注释的话,那么绿色的方块一样是被旋转的。
如图:
1 楼
kevin2562
2010-03-09
@Override
public void surfaceCreated(SurfaceHolder holder) {
canvas = mHolder.lockCanvas();
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);
canvas.drawRect(100, 200, 200, 300, mPaint);
canvas.save();
canvas.rotate(45);
mPaint.setColor(Color.RED);
canvas.drawRect(150, 10, 200, 60, mPaint);
canvas.restore();
mHolder.unlockCanvasAndPost(canvas);
}
这段代码搂主能加上注释么?
纯代码理解有困难
public void surfaceCreated(SurfaceHolder holder) {
canvas = mHolder.lockCanvas();
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);
canvas.drawRect(100, 200, 200, 300, mPaint);
canvas.save();
canvas.rotate(45);
mPaint.setColor(Color.RED);
canvas.drawRect(150, 10, 200, 60, mPaint);
canvas.restore();
mHolder.unlockCanvasAndPost(canvas);
}
这段代码搂主能加上注释么?
纯代码理解有困难
发表评论
-
类似Chome的翻转效果
2012-09-18 23:14 2348简单的demo,屏幕上下滑动翻转View,类似Android ... -
3D编程基础数学之旋转及在Android中的应用
2012-02-10 00:11 0最近因为兴趣,看了一些3D编程的书,有种感觉就是写这些书的作者 ... -
Android中屏幕Density对BitmapDrawable的影响
2011-07-08 21:44 7850很早之前写的文章了,发在这里记录一下。 在之前的 ... -
Android程序与Javascript的交换
2010-04-16 21:40 0hello! -
Android Services使用示例
2010-01-12 16:50 14051Android开发中,当需要创建在后台运行的程序的时候,就要 ... -
Android游戏开发之服务器端
2010-01-09 16:38 6675首先我不知道这篇文章发到Android开发板块是否适合的,因为 ... -
Android ListView常用用法
2009-12-03 20:56 36607ListView是比较常用的控件,但一直都觉得创建ListVi ... -
Android View添加 Listener 小技巧示例
2009-12-02 15:35 9795在开发中为控件添加Listener是非常常见的工作,最简单的添 ... -
Android Gesture 手势识别使用实例
2009-10-20 11:56 10160很高兴能在Android1.6的sdk看到手势识别这一 ... -
Android第二个游戏 DragonFeed(勇者喂恶龙)
2009-10-12 17:57 7974这是参加学校一个小比赛的参赛游戏,之前一直在忙 认证考试和项目 ... -
Android 震动示例--心跳效果
2009-10-02 23:58 7678正在开发第二个游戏,计时就要结束的时候,为了营造紧张的气氛, ... -
Android adb的使用略解
2009-09-30 16:08 40226安卓网的一个帖子,写得不错,记下来 ADB全称Android ... -
Android游戏开发之连连看算法
2009-09-29 00:36 10357因为有朋友在站内信中问到连连看的具体算法,所以我就把算法pos ... -
android游戏开发之选关画面
2009-09-21 15:44 3981在游戏开发中,往往要提供选关的页面,选择关卡可以简单地使用li ... -
Android重力感应Demo
2009-09-11 23:33 13995android中的很多游戏的游戏都使用了重力感应的技术,但其a ... -
Android游戏开发之爆炸效果
2009-09-02 00:29 18368在做Android游戏MagicBubble开发的时候 ... -
Android 的第一个游戏
2009-08-18 08:48 7885学了android1个多月,做了一款连连看游戏,上了andro ... -
Android 2d物理引擎Box2d的使用示例
2009-08-04 09:06 14207Box2d是一个很出名的2d物理引擎,大家可以google之。 ... -
利用Handler更新Android UI的另一种方法
2009-07-29 11:28 11851文字程序很简单,一个View,一个Activity,利用han ... -
android布局学习利器-Hierarchy Viewer
2009-07-27 18:17 8075Hierarchy Viewer 帮你分析应用程序UI布局 ...
相关推荐
android中canvas的save和restore用法 源码 测试代码
讲解使用canvas.save()和canvas.restore()的demo
Android Canvas演示代码,
android 中canvas的save和resotre用法 测试代码
android 画曲线图 画三角形(多边形),可以画成股票K线图,儿童成长曲线等,使用android的canvas
主要介绍了 Android canvas drawBitmap方法详解及实例的相关资料,需要的朋友可以参考下
Android 自定义画布canvas 实现绘制和清空画布功能,内含源码、apk
Android Canvas绘图演示代码
该代码是一个完整的Android工程,详细演示如了如何使用Android中的各种drawXXX方法,以及画笔Paint如何影响绘制的效果。 具体参见博文: http://blog.csdn.net/iispring/article/details/49770651
android 使用canvas把矩形图片变成圆角矩形显示 参考网址:http://blog.csdn.net/rhljiayou/article/details/7212620
Android canvas 放大 缩小 平移 各种绘图 自定义view 请自行修改
使用Android canvas 画图,供入门参考。图例见:http://blog.csdn.net/u010351494/article/details/46443351
android利用Paint在Canvas上实现竖排写字
学习Android自定义控件的必学前导知识——Canvas
NULL 博文链接:https://byandby.iteye.com/blog/825330
Android下使用Canvas画图,详细参见博客:http://www.cnblogs.com/plokmju/p/android_Canvas.html
Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
一:canvas中的save和restore 一直以来没有特别明白canvas中的save()和restore()函数,这次终于通过微信小程序中使用此函数的时候弄明白了,以下代码可以运行在微信小程序中~~ 看效果: (此图片来源于网络,如有...
实现在Kotlin中更方便使用canvas
对学习android的朋友在画图上有很大的参考意义