- 浏览: 229312 次
- 性别:
- 来自: 广州
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
引用:http://dyh7077063.iteye.com/blog/970672
1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象 2、Canvas画布,绘图的目的区域,用于绘图 3、Bitmap位图,用于图的处理 4、Matrix矩阵
二、Bitmap
1、从资源中获取Bitmap
Java代码
1.Resources res = getResources();
2.Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);
2、Bitmap → byte[]
Java代码
1.public byte[] Bitmap2Bytes(Bitmap bm) {
2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
3. bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
4. return baos.toByteArray();
5.}
3、byte[] → Bitmap
Java代码
1.public Bitmap Bytes2Bimap(byte[] b) {
2. if (b.length != 0) {
3. return BitmapFactory.decodeByteArray(b, 0, b.length);
4. } else {
5. return null;
6. }
7.}
4、Bitmap缩放
Java代码
1.public static Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {
2. int w = bitmap.getWidth();
3. int h = bitmap.getHeight();
4. Matrix matrix = new Matrix();
5. float scaleWidth = ((float) width / w);
6. float scaleHeight = ((float) height / h);
7. matrix.postScale(scaleWidth, scaleHeight);
8. Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
9. return newbmp;
10.}
5、将Drawable转化为Bitmap
Java代码
1.public static Bitmap drawableToBitmap(Drawable drawable) {
2. // 取 drawable 的长宽
3. int w = drawable.getIntrinsicWidth();
4. int h = drawable.getIntrinsicHeight();
5.
6. // 取 drawable 的颜色格式
7. Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
8. : Bitmap.Config.RGB_565;
9. // 建立对应 bitmap
10. Bitmap bitmap = Bitmap.createBitmap(w, h, config);
11. // 建立对应 bitmap 的画布
12. Canvas canvas = new Canvas(bitmap);
13. drawable.setBounds(0, 0, w, h);
14. // 把 drawable 内容画到画布中
15. drawable.draw(canvas);
16. return bitmap;
17. }
6、获得圆角图片
Java代码
1.public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {
2. int w = bitmap.getWidth();
3. int h = bitmap.getHeight();
4. Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);
5. Canvas canvas = new Canvas(output);
6. final int color = 0xff424242;
7. final Paint paint = new Paint();
8. final Rect rect = new Rect(0, 0, w, h);
9. final RectF rectF = new RectF(rect);
10. paint.setAntiAlias(true);
11. canvas.drawARGB(0, 0, 0, 0);
12. paint.setColor(color);
13. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
14. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
15. canvas.drawBitmap(bitmap, rect, rect, paint);
16.
17. return output;
18.}
7、获得带倒影的图片
Java代码
1.public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {
2. final int reflectionGap = 4;
3. int w = bitmap.getWidth();
4. int h = bitmap.getHeight();
5.
6. Matrix matrix = new Matrix();
7. matrix.preScale(1, -1);
8.
9. Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, h / 2, w,
10. h / 2, matrix, false);
11.
12. Bitmap bitmapWithReflection = Bitmap.createBitmap(w, (h + h / 2),
13. Config.ARGB_8888);
14.
15. Canvas canvas = new Canvas(bitmapWithReflection);
16. canvas.drawBitmap(bitmap, 0, 0, null);
17. Paint deafalutPaint = new Paint();
18. canvas.drawRect(0, h, w, h + reflectionGap, deafalutPaint);
19.
20. canvas.drawBitmap(reflectionImage, 0, h + reflectionGap, null);
21.
22. Paint paint = new Paint();
23. LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
24. bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
25. 0x00ffffff, TileMode.CLAMP);
26. paint.setShader(shader);
27. // Set the Transfer mode to be porter duff and destination in
28. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
29. // Draw a rectangle using the paint with our linear gradient
30. canvas.drawRect(0, h, w, bitmapWithReflection.getHeight()
31. + reflectionGap, paint);
32.
33. return bitmapWithReflection;
34.}
三、Drawable
1、Bitmap转换成Drawable
Java代码
1.Bitmap bm=xxx; //xxx根据你的情况获取
2.BitmapDrawable bd= new BitmapDrawable(getResource(), bm);
3.因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
2、Drawable缩放
Java代码
1.public static Drawable zoomDrawable(Drawable drawable, int w, int h) {
2. int width = drawable.getIntrinsicWidth();
3. int height = drawable.getIntrinsicHeight();
4. // drawable转换成bitmap
5. Bitmap oldbmp = drawableToBitmap(drawable);
6. // 创建操作图片用的Matrix对象
7. Matrix matrix = new Matrix();
8. // 计算缩放比例
9. float sx = ((float) w / width);
10. float sy = ((float) h / height);
11. // 设置缩放比例
12. matrix.postScale(sx, sy);
13. // 建立新的bitmap,其内容是对原bitmap的缩放后的图
14. Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height,
15. matrix, true);
16. return new BitmapDrawable(newbmp);
17.}
1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象 2、Canvas画布,绘图的目的区域,用于绘图 3、Bitmap位图,用于图的处理 4、Matrix矩阵
二、Bitmap
1、从资源中获取Bitmap
Java代码
1.Resources res = getResources();
2.Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);
2、Bitmap → byte[]
Java代码
1.public byte[] Bitmap2Bytes(Bitmap bm) {
2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
3. bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
4. return baos.toByteArray();
5.}
3、byte[] → Bitmap
Java代码
1.public Bitmap Bytes2Bimap(byte[] b) {
2. if (b.length != 0) {
3. return BitmapFactory.decodeByteArray(b, 0, b.length);
4. } else {
5. return null;
6. }
7.}
4、Bitmap缩放
Java代码
1.public static Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {
2. int w = bitmap.getWidth();
3. int h = bitmap.getHeight();
4. Matrix matrix = new Matrix();
5. float scaleWidth = ((float) width / w);
6. float scaleHeight = ((float) height / h);
7. matrix.postScale(scaleWidth, scaleHeight);
8. Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
9. return newbmp;
10.}
5、将Drawable转化为Bitmap
Java代码
1.public static Bitmap drawableToBitmap(Drawable drawable) {
2. // 取 drawable 的长宽
3. int w = drawable.getIntrinsicWidth();
4. int h = drawable.getIntrinsicHeight();
5.
6. // 取 drawable 的颜色格式
7. Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
8. : Bitmap.Config.RGB_565;
9. // 建立对应 bitmap
10. Bitmap bitmap = Bitmap.createBitmap(w, h, config);
11. // 建立对应 bitmap 的画布
12. Canvas canvas = new Canvas(bitmap);
13. drawable.setBounds(0, 0, w, h);
14. // 把 drawable 内容画到画布中
15. drawable.draw(canvas);
16. return bitmap;
17. }
6、获得圆角图片
Java代码
1.public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {
2. int w = bitmap.getWidth();
3. int h = bitmap.getHeight();
4. Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);
5. Canvas canvas = new Canvas(output);
6. final int color = 0xff424242;
7. final Paint paint = new Paint();
8. final Rect rect = new Rect(0, 0, w, h);
9. final RectF rectF = new RectF(rect);
10. paint.setAntiAlias(true);
11. canvas.drawARGB(0, 0, 0, 0);
12. paint.setColor(color);
13. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
14. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
15. canvas.drawBitmap(bitmap, rect, rect, paint);
16.
17. return output;
18.}
7、获得带倒影的图片
Java代码
1.public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {
2. final int reflectionGap = 4;
3. int w = bitmap.getWidth();
4. int h = bitmap.getHeight();
5.
6. Matrix matrix = new Matrix();
7. matrix.preScale(1, -1);
8.
9. Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, h / 2, w,
10. h / 2, matrix, false);
11.
12. Bitmap bitmapWithReflection = Bitmap.createBitmap(w, (h + h / 2),
13. Config.ARGB_8888);
14.
15. Canvas canvas = new Canvas(bitmapWithReflection);
16. canvas.drawBitmap(bitmap, 0, 0, null);
17. Paint deafalutPaint = new Paint();
18. canvas.drawRect(0, h, w, h + reflectionGap, deafalutPaint);
19.
20. canvas.drawBitmap(reflectionImage, 0, h + reflectionGap, null);
21.
22. Paint paint = new Paint();
23. LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
24. bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
25. 0x00ffffff, TileMode.CLAMP);
26. paint.setShader(shader);
27. // Set the Transfer mode to be porter duff and destination in
28. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
29. // Draw a rectangle using the paint with our linear gradient
30. canvas.drawRect(0, h, w, bitmapWithReflection.getHeight()
31. + reflectionGap, paint);
32.
33. return bitmapWithReflection;
34.}
三、Drawable
1、Bitmap转换成Drawable
Java代码
1.Bitmap bm=xxx; //xxx根据你的情况获取
2.BitmapDrawable bd= new BitmapDrawable(getResource(), bm);
3.因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
2、Drawable缩放
Java代码
1.public static Drawable zoomDrawable(Drawable drawable, int w, int h) {
2. int width = drawable.getIntrinsicWidth();
3. int height = drawable.getIntrinsicHeight();
4. // drawable转换成bitmap
5. Bitmap oldbmp = drawableToBitmap(drawable);
6. // 创建操作图片用的Matrix对象
7. Matrix matrix = new Matrix();
8. // 计算缩放比例
9. float sx = ((float) w / width);
10. float sy = ((float) h / height);
11. // 设置缩放比例
12. matrix.postScale(sx, sy);
13. // 建立新的bitmap,其内容是对原bitmap的缩放后的图
14. Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height,
15. matrix, true);
16. return new BitmapDrawable(newbmp);
17.}
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1044本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 887在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 907http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 841android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1096http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 919http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1071http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 883Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2586import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2717Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1300我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1341MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1782一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1015创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1781Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1204Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1141http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 944android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1182在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2067最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
android 画图 bitmap drawable canvas paint
文档中描述了Drawable Bitmap 几种转换方法供初学者使用。方法都是经过实践验证的。
很多开发者表示,不知道Android的Drawable和Bitmap之间如何相关转换。下面Android123给大家两种比较简单高效的方法。 一、Bitmap转Drawable 代码如下: Bitmap bm=xxx; //xxx根据你的情况获取 BitmapDrawable bd...
主要介绍了Android Bitmap和Drawable的对比的相关资料,需要的朋友可以参考下
Android Drawable、Bitmap、byte、灰度 转换
Android Drawable和Bitmap的转换实例详解 通常我们需要通过代码去设置图片,就需要设置图片Bitmap和Drawable的转换,下面整理了几种方式 一、Bitmap转Drawable Bitmap bm=xxx; //xxx根据你的情况获取 ...
android中的drawable集合,包括Bitmap、shape、Layer、Transition等等
Drawable Bitmap之间的转化Drawable Bitmap之间的转化
读取本地drawable中较大的资源图片 从文件得到BitMap 从数组得到Bitmap 从流中得到Bitmap 图片透明度处理 获取源图片的BITMAP,压缩,本地图片 bitmap转byte[] 获取缩略图 保存图片 光晕效果 获取bitmap的字节大小 ...
Android Drawable、Bitmap、byte、灰度 之间的转换
很多网友刚刚开始学习Android平台,对于Drawable、Bitmap、Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap、Canvas相关的都有所变化。...
详细的介绍了android_Drawable、Bitmap、byte[]之间的转换 在android开发中非常实用
一般在android程序中把图片文件放在res/drawable目录下就可以通过R.drawable.id来使用,但在存储卡中的图片怎样引用呢?下面通过实现这个功能来介绍Bitmap的用法。 程序如下: import java.io.File; import android...
2、从资源中获取Bitmap Resources res=getResources(); Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic); 3、Bitmap → byte[] private byte[] Bitmap2Bytes(Bitmap bm){ ByteArrayOutputStream baos...
本类库可以对ImageView,View Background,Drawable和Bitmap添加风格与设置亮度、对比度
自定义Drawable 实现图片圆角、圆形、椭圆形,帮助理解自定义Drawable; 自定义Drawable 实现图片圆角、圆形、椭圆形,帮助理解自定义Drawable;
该文档教我们如何在android保持中保持bitmap数据以及读取的过程