- 浏览: 237405 次
- 性别:
- 来自: 广州
最新评论
-
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 1093本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 930在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 942http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 884android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1128http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 947http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1161http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 927Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2649import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2806Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1340我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1371MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1814一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1073创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1818Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1266Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1180http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1018android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1228在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2098最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
在Android开发中,Drawable和Bitmap是两种常用的图像资源类型,它们各有特点且在不同场景下有不同的优势。了解和掌握它们之间的相互转换对于优化性能和提高用户体验至关重要。本篇将详细介绍如何在Android中进行...
Android Bitmap和Drawable的对比 Android Bitmap和Drawable是Android平台中两种常见的图形对象,虽然它们都可以用来显示图像,但是它们之间有着很大的区别。本文将对Android Bitmap和Drawable进行对比,帮助开发者...
在Android平台上,绘制图形是一项基本任务,涉及到多个关键类,如Bitmap、Drawable和Canvas,以及Paint。这些类共同构成了Android图形系统的核心,使得开发者能够创建丰富的用户界面和自定义视图。 首先,Bitmap是...
通过上述方法,开发者可以根据实际需求灵活地在`Drawable`和`Bitmap`之间进行转换,从而更好地处理Android应用中的图像资源管理问题。这些转换技巧对于优化用户体验、提高应用性能都有着重要的意义。
在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...
很多开发者表示,不知道Android的Drawable和Bitmap之间如何相关转换。下面Android123给大家两种比较简单高效的方法。 一、Bitmap转Drawable 代码如下: Bitmap bm=xxx; //xxx根据你的情况获取 BitmapDrawable bd...
例如,可以将一个背景色、一个边框和一个图标组合在一个Drawable中。通过设置层的顺序和属性,可以实现不同的视觉效果。 4. **Transition Drawable**: Transition Drawable用于实现Drawable之间的平滑过渡,常用于...
在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...
### Android中Drawable、Bitmap与byte[]之间的转换 在Android应用开发过程中,经常需要对图像资源进行处理,这就涉及到了不同图像格式之间的转换。本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法...
`android-gif-drawable`是一个流行的开源库,专门用于在Android应用中渲染和播放GIF图像。这个库提供了高效且灵活的方式来处理GIF动画,使其能够在各种视图组件上显示,包括自定义View。下面我们将深入探讨这个库的...
Android Drawable和Bitmap的转换实例详解 通常我们需要通过代码去设置图片,就需要设置图片Bitmap和Drawable的转换,下面整理了几种方式 一、Bitmap转Drawable Bitmap bm=xxx; //xxx根据你的情况获取 ...
Bitmap是Android平台中用于处理图像的核心类,它用于表示位图图像数据。下面是对Bitmap用法的详细总结: 1. **Drawable转换为Bitmap**: 当我们需要将一个Drawable对象(如从XML布局文件中加载的图像)转换为...
在Android开发中,Bitmap是处理图像的基本类,用于在内存中表示位图图像。当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。...
在Android开发中,自定义Drawable是提升应用UI个性化和性能优化的重要手段。本文将深入探讨如何通过自定义Drawable实现图片的圆角、圆形以及椭圆形显示,帮助开发者更好地理解和运用这一技术。 首先,我们了解...
相比直接使用Android原生的Bitmap和Canvas来处理GIF,`android-gif-drawable`库提供了更为便捷和高效的解决方案。 在Android应用中集成`android-gif-drawable`库,通常需要以下步骤: 1. **添加依赖**:在你的`...
读取本地drawable中较大的资源图片 从文件得到BitMap 从数组得到Bitmap 从流中得到Bitmap 图片透明度处理 获取源图片的BITMAP,压缩,本地图片 bitmap转byte[] 获取缩略图 保存图片 光晕效果 获取bitmap的字节大小 ...
很多网友刚刚开始学习Android平台,对于Drawable、Bitmap、Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap、Canvas相关的都有所变化。...
在Android开发中,Drawable是图形资源的核心组成部分,用于表示各种屏幕元素的外观,如按钮、背景、图标的形状和颜色。这些图形资源可以通过XML文件进行定义,提供了丰富的自定义选项。本篇将深入探讨Android ...