当前位置: 编程技术>移动开发
本页文章导读:
▪对Canvas跟Matrix的理解 对Canvas和Matrix的理解
不了解Matrix的同学看这里:http://ipjmc.iteye.com/blog/1275366 弄明白matrix那几个方法的使用了,比如preTranslate, setTranslate, postTranslate这些。以前对它们都是.........
▪ Bit地图.Config上的几个图片质量参数 Bitmap.Config下的几个图片质量参数
转自:http://www.cnblogs.com/coding-way/archive/2011/07/26/2117522.htmlBitmap.Config ALPHA_8 Bitmap.Config ARGB_4444 Bitmap.Config ARGB_8888 Bitmap.Config RGB_565 A R .........
▪ NDK编译.so疏失 NDK编译.so出错
http://hi.baidu.com/wind_liao/blog/item/f61f7fc06f4215b78226ac55.html
......
[1]对Canvas跟Matrix的理解
来源: 互联网 发布时间: 2014-02-18
对Canvas和Matrix的理解
不了解Matrix的同学看这里:http://ipjmc.iteye.com/blog/1275366
弄明白matrix那几个方法的使用了,比如preTranslate, setTranslate, postTranslate这些。以前对它们都是一知半解,以为这几个方法没什么区别,其实还是有很大不同的,最紧要是这几个方法的调用顺序对坐标变换的影响。抽象的说pre方法是向前"生长", post方法是向后"生长",具体拿个例子来说,比如一个matrix调用了下列一系列的方法:
则坐标变换经过的4个变换过程依次是:
translate(10, 0) -> scale(0.5f, 1) -> scale(0.7f, 1) -> translate(15, 0)
所以对matrix方法的调用顺序是很重要的,不同的顺序往往会产生不同的变换效果。pre方法的调用顺序和post方法的互不影响,即以下的方法调用和前者在真实坐标变换顺序里是一致的
而matrix的set方法则会对先前的pre和post操作进行刷除,而后再设置它的值,比如下列的方法调用:
其坐标变换顺序是:translate(15, 0) -> scale(1, 0.6f) -> scale(0.7f, 1).
这是因为setScale重新设置了矩阵的值,之前的两个变换是无效的了,所以最终的显示效果只有三个变换效果。
Canvas里scale, translate, rotate, concat方法都是pre方法,如果要进行更多的变换可以先从canvas获得matrix, 变换后再设置回canvas.
转自:http://longshuai2007.blog.163.com/blog/static/14209441420117521823875/
不了解Matrix的同学看这里:http://ipjmc.iteye.com/blog/1275366
弄明白matrix那几个方法的使用了,比如preTranslate, setTranslate, postTranslate这些。以前对它们都是一知半解,以为这几个方法没什么区别,其实还是有很大不同的,最紧要是这几个方法的调用顺序对坐标变换的影响。抽象的说pre方法是向前"生长", post方法是向后"生长",具体拿个例子来说,比如一个matrix调用了下列一系列的方法:
matrix.preScale(0.5f, 1); matrix.preTranslate(10, 0); matrix.postScale(0.7f, 1); matrix.postTranslate(15, 0);
则坐标变换经过的4个变换过程依次是:
translate(10, 0) -> scale(0.5f, 1) -> scale(0.7f, 1) -> translate(15, 0)
所以对matrix方法的调用顺序是很重要的,不同的顺序往往会产生不同的变换效果。pre方法的调用顺序和post方法的互不影响,即以下的方法调用和前者在真实坐标变换顺序里是一致的
matrix.postScale(0.7f, 1); matrix.preScale(0.5f, 1); matrix.preTranslate(10, 0); matrix.postTranslate(15, 0);
而matrix的set方法则会对先前的pre和post操作进行刷除,而后再设置它的值,比如下列的方法调用:
matrix.preScale(0.5f, 1); matrix.postTranslate(10, 0); matrix.setScale(1, 0.6f); matrix.postScale(0.7f, 1); matrix.preTranslate(15, 0);
其坐标变换顺序是:translate(15, 0) -> scale(1, 0.6f) -> scale(0.7f, 1).
这是因为setScale重新设置了矩阵的值,之前的两个变换是无效的了,所以最终的显示效果只有三个变换效果。
Canvas里scale, translate, rotate, concat方法都是pre方法,如果要进行更多的变换可以先从canvas获得matrix, 变换后再设置回canvas.
转自:http://longshuai2007.blog.163.com/blog/static/14209441420117521823875/
[2] Bit地图.Config上的几个图片质量参数
来源: 互联网 发布时间: 2014-02-18
Bitmap.Config下的几个图片质量参数
转自:http://www.cnblogs.com/coding-way/archive/2011/07/26/2117522.html
Bitmap.Config ALPHA_8
Bitmap.Config ARGB_4444
Bitmap.Config ARGB_8888
Bitmap.Config RGB_565
A R G B
透明度 红色 绿色 蓝色
Bitmap.Config ARGB_4444 16 每个像素 占四位
Bitmap.Config ARGB_8888 32 每个像素 占八位
Bitmap.Config RGB_565 16 R占5位 G占6位 B占5位 没有透明度(A)
使用示例:
上面四个函数返回一个可改变的Bitmap对象。
假如我们使用Bitmap.Config.ARGB_8888
参见:
http://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap(int, int, android.graphics.Bitmap.Config)一般情况下我们都是用argb888 但是无可厚非 它也相对的很占内存因为一个像素32位 8位一个字节 如果是800*480的图片的话自己算 估计有1M多了
转自:http://www.cnblogs.com/coding-way/archive/2011/07/26/2117522.html
Bitmap.Config ALPHA_8
Bitmap.Config ARGB_4444
Bitmap.Config ARGB_8888
Bitmap.Config RGB_565
A R G B
透明度 红色 绿色 蓝色
Bitmap.Config ARGB_4444 16 每个像素 占四位
Bitmap.Config ARGB_8888 32 每个像素 占八位
Bitmap.Config RGB_565 16 R占5位 G占6位 B占5位 没有透明度(A)
使用示例:
Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8); Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444); Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
上面四个函数返回一个可改变的Bitmap对象。
假如我们使用Bitmap.Config.ARGB_8888
protected void onDraw(Canvas canvas) { Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); //c.draw...(),通过c可以改变bitmap canvas.draw(bitmap, null, null);//最后在把bitmap画到canvas上 super.onDraw(canvas); }
参见:
http://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap(int, int, android.graphics.Bitmap.Config)一般情况下我们都是用argb888 但是无可厚非 它也相对的很占内存因为一个像素32位 8位一个字节 如果是800*480的图片的话自己算 估计有1M多了
1 楼
yahier
2012-02-22
感谢分享
[3] NDK编译.so疏失
来源: 互联网 发布时间: 2014-02-18
NDK编译.so出错
http://hi.baidu.com/wind_liao/blog/item/f61f7fc06f4215b78226ac55.html
最新技术文章: