Android中Drawable Bitmap Canvas Paint之间区别
----------------------------------------------------------------------------------------------------------------------------------
位图也是一种数据结构,说实话,我到今天才知道,以前真是没听过这东西。我个人的理解就是:一个比特位,有0,1的区分。用这个0,1去作为标示位。我的理解多数是肤浅,不正确的,看看网络上的大牛们的理解吧。
http://dongxicheng.org/structure/bitmap/
http://blog.csdn.net/smfwuxiao/article/details/7161761
----------------------------------------------------------------------------------------------------------------------------------
2014-3-11号补充
一直都没有用过Canvas, Paint, 原来害怕碰到这个东西,其实看懂了也就那么回事,没什么难的,是我自己把自己给吓住了。
我之前一直不懂的一件事就是,比如看下面的代码: Bitmap bitmap=Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas=new Canvas(bitmap);
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setTextSize(25);
canvas.rotate(15);
canvas.drawText("Hello Android 1", 20, 30, paint);
canvas.translate(50, 50);
// 注意:save()方法
// 保存在此save()方法之前的canvas的操作
// 比如:roate(),translate(),clipXXX()
canvas.save();
paint.setColor(Color.GREEN);
paint.setTextSize(15);
canvas.rotate(60);
canvas.translate(-20,-20);
canvas.drawText("Hello Android 2", 20, 60, paint);
//注意:restore()方法
// 将save()方法之后Canvas的roate(),translate(),clipXXX()的操作清空
canvas.restore();
我之前一直以为在调用 canvas.restore(); 之后,在 canvas.save(); 和 canvas.restore(); 之间的这段操作都会被revert掉,就是取消掉,比如我画了一个圆,在我调用该了 canvas.restore() 之后,这个圆就消失了,我之前一直都是这么理解的,但是我试过几次之后,发现并不会消失,然后就没有然后了,就一直不理解着~
今天又看了一下,终于理解了~
其实 canvas.restore(); 之后,是对 canvas.save(); 和 canvas.restore(); 之间的这段操作做一些处理的,但是你已经画上去的东西不会有影响,只是你的类似 rotate,translate, clipRect等操作会被revert,被取消掉,然后恢复到 save() 之前的状态~这才是真正的理解。之前一直都是错误的,真悲剧~
参考链接:
官方文档: http://developer.android.com/guide/topics/graphics/2d-graphics.html
Android画布Canvas的save()和restore()以及clipRect()方法测试
这篇文章很好的解释了Canvas 的save(), restore(), ClipRect()方法。
http://blog.csdn.net/lfdfhl/article/details/9074017
android绘图canvas的sava、restore、rotate以及若干问题,canvas绘图的理解
这个图文并茂,写的也挺好的~
http://blog.csdn.net/dinko321/article/details/7679019
canvas 之save ,与restore
http://www.eoeandroid.com/thread-120962-1-1.html 一个系列的介绍: http://blog.csdn.net/lonelyroamer/article/details/8299812
http://blog.csdn.net/lonelyroamer/article/details/8264189
http://blog.csdn.net/lonelyroamer/article/details/8349601
http://blog.sina.com.cn/s/blog_7f311ef5010183o6.html http://rayleung.iteye.com/blog/440623
http://www.2cto.com/kf/201312/263154.html
http://byandby.iteye.com/blog/826304
http://www.cnblogs.com/playing/archive/2011/05/10/2042241.html
http://blog.csdn.net/xxxx1243/article/details/5834187
http://blog.csdn.net/xxxx1243/article/details/5834155
http://blog.csdn.net/shichaosong/article/details/8110286
http://blog.csdn.net/qinjuning/article/details/6936783
http://blog.csdn.net/rhljiayou/article/details/7212620
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html
更多相关文章
- Android中的SystemClock类
- Android周笔记(9.8-14)(持续更新)
- Android使用libgdx实现模拟方向键控制角色移动的方法
- Android(安卓)UI 之 ListView
- LinearLayout中添加分割线
- Android纯透明的Activity
- 【Android】点击应用进而打开base.apk的调用流程再分析
- android强制键盘关闭
- TextView 行间距以及字间距