一、 相关概念
1. Drawable 就是一个可画的 对象,其可能是一张位图( BitmapDrawable ),也可能是一个 图形( ShapeDrawable ),还有可能是一 个图层( LayerDrawable ),我们根据画图的需求,创建相应的可画对象
2. Canvas 画布,绘制的目 的区域,用于绘图
3. Bitmap 位图,用于图的 处理
4. Matrix 矩阵,此例中用 于操作图片
二、 步骤
1. 把 drawable 画到位图对象上
2. 对位图对象做缩放(或旋转等)操作
3. 把位图再转换成 drawable
三、 示例
static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成 bitmap
{
int width = drawable.getIntrinsicWidth(); // 取 drawable 的长宽
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565; // 取 drawable 的颜色格式
Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应 bitmap
Canvas canvas = new Canvas(bitmap); // 建立对应 bitmap 的画布
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas); // 把 drawable 内容画到画布中
return bitmap;
}
static Drawable zoomDrawable(Drawable drawable, int w, int h)
{
int width = drawable.getIntrinsicWidth();
int height= drawable.getIntrinsicHeight();
Bitmap oldbmp = drawableToBitmap(drawable); // drawable 转换成 bitmap
Matrix matrix = new Matrix(); // 创建操作图片用的 Matrix 对象
float scaleWidth = ((float)w / width); // 计算缩放比例
float scaleHeight = ((float)h / height);
matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例
Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的 bitmap ,其内容是对原 bitmap 的缩放后的图
return new BitmapDrawable(newbmp); // 把 bitmap 转换成 drawable 并返回
}
}
转:http://blog.csdn.net/infsafe/article/details/5482194
分享到:
相关推荐
- ScaleDrawable:用于缩放其他Drawable资源的Drawable。 - StateListDrawable:可以包含多种状态(如选中、按下等),根据不同的状态显示不同的Drawable。 - TransitionDrawable:用于在两个Drawable资源之间创建...
同时,Android也提供了BitmapShader来实现位图的复杂渲染效果,如平铺、缩放等。 除此之外,Drawable还有动态变化的能力。LevelListDrawable可以根据指定的级别显示不同的Drawable;TransitionDrawable可以实现两个...
在Android开发中,Drawable是图形和图像处理的重要组成部分,它是一种可以绘制到Canvas上的对象,广泛用于界面元素的装饰和状态表示。以下是对Android中drawable集合的详细解释: 1. **Bitmap Drawable**: Bitmap ...
11. **ScaleDrawable**:缩放Drawable,可以按比例缩放一个Drawable。常用于实现点击按钮时放大或缩小的效果。 12. **RotateDrawable**:旋转Drawable,可以按指定角度旋转一个Drawable。可用于制作旋转图标或动态...
- ScaleDrawable:缩放Drawable的大小,提供动画效果。 - ClipDrawable:根据指定方向裁剪Drawable,常用于实现滑块效果。 4. 使用Drawable的最佳实践 了解并熟练运用Drawable的不同类型和属性,可以帮助开发者...
在Android开发中,Drawable是图形资源的核心组成部分,用于在用户界面上绘制各种图像,如按钮、背景、图标等。理解并熟练运用Drawable的各种高效用法对于优化应用性能和提升用户体验至关重要。以下是一些关于Android...
在Android开发中,`drawable`资源是至关重要的组成部分,它主要负责存储应用程序中使用的各种图形元素,如图标、背景图片等。本知识点将深入探讨`drawable`资源的使用、分类和适应不同屏幕密度的重要性。 首先,`...
### Android Drawable 下的 XML 详解 #### 一、概述 在Android开发中,`drawable`是一种非常重要的资源类型,主要用于存放应用所需的图形图像资源。这些资源可以被用于UI设计、图标绘制等多种场景。通常,开发者会...
在Android开发中,Drawable和Bitmap是两种常用的图像资源类型,它们各有特点且在不同场景下有不同的优势。了解和掌握它们之间的相互转换对于优化性能和提高用户体验至关重要。本篇将详细介绍如何在Android中进行...
在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...
本篇文章将深入探讨如何浏览和使用Android系统中的图片资源,特别是`android.R.drawable`中的资源。`android.R.drawable`是Android SDK提供的一个预定义的资源集合,包含了大量的图标和图形,适用于各种UI组件和状态...
在Android开发中,图片资源的处理是常见的...通过以上方法,开发者可以灵活地在Android应用中处理各种图像资源,实现不同场景下的需求,如图片缩放、格式转换、灰度化等。这对于提升应用的性能和用户体验具有重要意义。
综上所述,通过结合SurfaceView、手势检测和矩阵变换,我们可以实现在Android应用中对图片的流畅缩放和滑动操作。然而,由于SurfaceView的特性,这个过程可能会比使用ImageView等其他组件更为复杂。因此,开发者需要...
### Android Drawable 分类详解 #### 一、概述 在 Android 开发中,`Drawable` 是一个非常重要的概念,它主要用于定义界面中的图形图像资源。`Drawable` 的具体实现类多种多样,可以用来创建复杂的视觉效果,例如...
在Android开发中,Drawable是图像资源的一个核心概念,它不仅限于普通的图片,还包括各种图形、状态列表、层叠图像等。本篇文章将深入探讨Android中的Drawable及其在图像处理中的应用。 首先,Drawable是一个接口,...
Android Drawable是Android开发中不可或缺的一部分,它是一种抽象类,用于表示可以在Canvas上绘制的各种图像,通常作为View的背景。Drawable提供了丰富的功能,包括显示图片、纯色、九宫格图以及自定义形状等。 ...
在Android开发中,自定义Drawable是提升应用UI个性化和性能优化的重要手段。本文将深入探讨如何通过自定义Drawable实现图片的圆角、圆形以及椭圆形显示,帮助开发者更好地理解和运用这一技术。 首先,我们了解...
Drawable Animation主要适用于简单的帧动画,例如旋转、缩放或平移等效果。 在Android中,Drawable不仅仅是一个静态图像,它还可以作为动画序列的容器。通过将多张图片放入一个Drawable资源文件中,我们可以创建一...
为确保在不同密度屏幕上显示效果一致,开发者需要提供不同密度的Drawable资源,并遵循3:4:6:8的比例进行缩放。nodpi表示不受设备密度影响的资源,而tvdpi是针对电视屏幕的特殊密度。 Android系统采用配置限定符来...
在Android开发中,Drawable是图形对象的抽象表示,用于在界面上绘制各种图像,如背景、按钮、图标等。理解并熟练使用不同类型的Drawable对于优化应用的视觉效果和性能至关重要。下面将详细介绍Android中常见的...