`

Drawable常用处理方法

阅读更多
public class DrawableTool {

	/**
	 * Drawable转化为Bitmap
	 * 
	 * @param drawable
	 * @return Bitmap
	 */
	public static Bitmap drawableToBitmap(Drawable drawable) {
		// 取 drawable 的长宽
		int w = drawable.getIntrinsicWidth();
		int h = drawable.getIntrinsicHeight();

		// 取 drawable 的颜色格式
		Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
				: Bitmap.Config.RGB_565;
		// 建立对应 bitmap
		Bitmap bitmap = Bitmap.createBitmap(w, h, config);
		// 建立对应 bitmap 的画布
		Canvas canvas = new Canvas(bitmap);
		drawable.setBounds(0, 0, w, h);
		// 把 drawable 内容画到画布中
		drawable.draw(canvas);
		return bitmap;
	}

	/**
	 * Drawable缩放
	 * 
	 * @param context
	 * @param drawable
	 * @param w
	 *            目标宽度
	 * @param h
	 *            目标高度
	 * @return Drawable
	 */
	public static Drawable zoomDrawable(Context context, Drawable drawable,
			int w, int h) {
		int width = drawable.getIntrinsicWidth();
		int height = drawable.getIntrinsicHeight();
		// drawable转换成bitmap
		Bitmap oldbmp = drawableToBitmap(drawable);
		// 创建操作图片用的Matrix对象
		Matrix matrix = new Matrix();
		// 计算缩放比例
		float sx = ((float) w / width);
		float sy = ((float) h / height);
		// 设置缩放比例
		matrix.postScale(sx, sy);
		// 建立新的bitmap,其内容是对原bitmap的缩放后的图
		Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height,
				matrix, true);
		return new BitmapDrawable(context.getResources(), newbmp);
	}

}

 

分享到:
评论

相关推荐

    android中图形图像处理之drawable用法分析

    主要介绍了android中图形图像处理之drawable用法,较为详细的分析了Android中绘图所涉及的各种常用技巧与方法,具有一定参考借鉴价值,需要的朋友可以参考下

    Android 按钮事件处理----Button

    常用Button类,初学者实用。 android:id="@+id/toggleButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_close"/> android:id="@+id/...

    ​TV常用效果控件TvWidget.zip

    TvWidget是一个TV常用效果控件,包括焦点、边框处理等。效果图:使用 BorderView border=new BorderView(this);  border.setBackgroundResource(R.drawable.item_highlight);  RelativeLayout main= ...

    2010年谢彦的android笔记

    3.2.11 缩放drawable 68 3.2.12 解析apk包内容 69 3.3 Java对C库的调用 70 3.3.1 android中使用JNI 70 3.3.2 安装使用NDK 72 3.3.3 在源码中将库打进apk 73 3.3.4 简单的C库调试方法 75 3.4 典型应用 76 3.4.1 语音...

    Android常用的图片加载库

    前言:图片加载涉及到图片的缓存、图片的处理、图片的显示等。四种常用的图片加载框架,分别是Fresco、ImageLoader、 Picasso、 Glide。 Universal Image Loader:ImageLoader是比较老的框架,一个强大的图片加载库...

    android笔记.rar

    3.2.11 缩放drawable ... ...68 2 3.2.12 解析apk包内容 ... ...69 3.3 Java对C库的调用 ... ...70 3.3.1 android中使用JNI... ..70 3.3.2 安装使用NDK ... .72 3.3.3 在源码中将库打进apk ... ...73 ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--StringUtils工具类的常用方法 |--TabHost一个界面显示多Activity |--TextView单行跑马灯效果 |--TextView虚拟获得焦点 |--uploadServlet |--uri之表示资源resource |--ViewPage的使用 |--view中的tag用法之存储...

    Android实例代码

    15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature; 光传感器Light; 压力传感器Pressure; 第16章、GPS应用开发 16.1、支持GPS的核心API: 16.2、获取...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature; 光传感器Light; 压力传感器Pressure; 第16章、GPS应用开发 16.1、支持GPS的核心API: 16.2、获取...

    疯狂Android讲义源码

     1.3 Android常用开发工具的用法 10  1.3.1 创建、删除和浏览AVD 10  1.3.2 使用Android模拟器  (Emulator) 14  1.3.3 使用DDMS进行调试 15  1.3.4 Android Debug Bridge(ADB)  的用法 16  1.3.5 使用DX...

    疯狂Android讲义.part2

    1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览AVD 10 1.3.2 使用Android模拟器 (Emulator) 14 1.3.3 使用DDMS进行调试 15 1.3.4 Android Debug Bridge(ADB) 的用法 16 1.3.5 使用DX编译Android应用 ...

    疯狂Android讲义.part1

    1.3 Android常用开发工具的用法 10 1.3.1 创建、删除和浏览AVD 10 1.3.2 使用Android模拟器 (Emulator) 14 1.3.3 使用DDMS进行调试 15 1.3.4 Android Debug Bridge(ADB) 的用法 16 1.3.5 使用DX编译Android应用 ...

    Rezenerator:工具自动执行Android项目的可绘制转换和缩放

    它的工作方式很简单,您可以在目录中提供“源”可绘制文件,例如SVG文件,PSD文件或高分​​辨率PNG文件,并且该工具会在所需的res/drawable-*自动生成相应的PNG文件。您的应用程序的文件夹。 工作原理 Rezenerator...

    APKTool批处理版l

    目前,网上常用的APK汉化方法有三种: 一是使用Hex Worksho,这种方法操作繁琐、费时费力,而且经常出现搜不到想要修改的字符的情况; 二是使用汉化浪子大侠的Android ResEdit(目前最新版本AndroidResEdit v1.5),...

    xUtils3 demo

    事件注解去除不常用的功能, 提高性能. 数据库api简化提高性能, 达到和greenDao一致的性能. 图片绑定支持gif, webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转... 使用Gradle构建时添加一下依赖即可: compile 'org....

    Google Android SDK开发范例大全(完整版)

    简介 黑莓和 iPhone 都提供了受欢迎的、高容量的移动平台,但是却分别针对两个不同的消费群体。黑莓是企业业务用户的不二选择。... <application android:icon="@drawable/icon" android:label="@string/app_name...

    Android学习系列教程实例.pdf

    5.3. 触屏事件处理 ............................... 160 5.3.1. 原理分析 .............................. 160 5.3.2. 示例分析 .............................. 162 5.3.3. 运行效果 ...............................

    Google Android SDK开发范例大全(第3版)part2

     全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及...

Global site tag (gtag.js) - Google Analytics