您现在的位置是:主页 > news > 手机网站开发目的/网络营销与管理

手机网站开发目的/网络营销与管理

admin2025/5/19 22:21:15news

简介手机网站开发目的,网络营销与管理,网站制作方案范文,特价做网站Android 实现将本地资源图片转换成Drawable的方法发布时间:2020-11-06 16:37:09来源:亿速云阅读:255作者:Leah这篇文章将为大家详细讲解有关Android 实现将本地资源图片转换成Drawable的方法,文章内容质量较高&#xf…

手机网站开发目的,网络营销与管理,网站制作方案范文,特价做网站Android 实现将本地资源图片转换成Drawable的方法发布时间:2020-11-06 16:37:09来源:亿速云阅读:255作者:Leah这篇文章将为大家详细讲解有关Android 实现将本地资源图片转换成Drawable的方法,文章内容质量较高&#xf…

Android 实现将本地资源图片转换成Drawable的方法

发布时间:2020-11-06 16:37:09

来源:亿速云

阅读:255

作者:Leah

这篇文章将为大家详细讲解有关Android 实现将本地资源图片转换成Drawable的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

整个过程的思路:

将本地图片(R.drawable.image)变成Drawable对象

将Drawable对象转换成Bitmap对象

将Bitmap对象根据指定大小创建一个新的Bitmap对象

将Bitmap对象转换成Drawable对象

代码:

1. 将本地图片(R.drawable.image)变成Drawable对象Drawable drawable = ContextCompat.getDrawable(context, R.drawable.image);

2. 将Drawable对象转换成Bitmap对象

/**

* 将Drawable转换为Bitmap

* @param drawable

* @return

*/

private Bitmap drawableToBitmap(Drawable drawable) {

//取drawable的宽高

int width = drawable.getIntrinsicWidth();

int height = drawable.getIntrinsicHeight();

//取drawable的颜色格式

Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE

? Bitmap.Config.ARGB_8888

: Bitmap.Config.RGB_565;

//创建对应的bitmap

Bitmap bitmap = Bitmap.createBitmap(width, height, config);

//创建对应的bitmap的画布

Canvas canvas = new Canvas(bitmap);

drawable.setBounds(0, 0, width, height);

//把drawable内容画到画布中

drawable.draw(canvas);

return bitmap;

}

3. 整个流程的执行

后来发现一个更简洁的方法

/**

* 将本地资源图片大小缩放

* @param resId

* @param w

* @param h

* @return

*/

public Drawable zoomImage(int resId, int w, int h){

Resources res = mContext.getResources();

Bitmap oldBmp = BitmapFactory.decodeResource(res, resId);

Bitmap newBmp = Bitmap.createScaledBitmap(oldBmp,w, h, true);

Drawable drawable = new BitmapDrawable(res, newBmp);

return drawable;

}

原来复杂的思路

/**

* 缩放Drawable

*@drawable 原来的Drawable

*@w 指定的宽

*@h 指定的高

*/

public Drawable zoomDrawable(Drawable drawable, int w, int h){

//获取原来Drawable的宽高

int width = drawable.getIntrinsicWidth();

int height = drawable.getIntrinsicHeight();

//将Drawable转换成Bitmap

Bitmap oldbmp = drawableToBitmap(drawable);

//计算scale

Matrix matrix = new Matrix();

float scaleWidth = ((float)w/width);

float scaleHeight = ((float)h/height);

matrix.postScale(scaleWidth, scaleHeight);

//生成新的Bitmap

Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true);

//设置bitmap转成drawable后尺寸不变

//这个很关键后面解释!!

DisplayMetrics metrics = new DisplayMetrics();

manager.getDefaultDisplay().getMetrics(metrics);

Resources resources = new Resources(mContext.getAssets(), metrics, null);

return new BitmapDrawable(resources, newbmp);

}

学习中遇到的问题

看网上的教程是没有下面

DisplayMetrics metrics = new DisplayMetrics();

manager.getDefaultDisplay().getMetrics(metrics);

Resources resources = new Resources(mContext.getAssets(), metrics, null);

这段代码的。

假如我指定的宽高是200,生成的Drawable的宽高却只有100。

原来Bitmap转换成Drawable的尺寸是会变小的。

那段代码就能解决尺寸变小的问题。

如果路过的大神有更好的方法,希望能指点一下小白。

补充知识:Android中如何将res里的图片转换成Bitmap.

1.复制代码即可:Resources res = MainActivity.this.getResources();

Bitmap bmp= BitmapFactory.decodeResource(res, R.mipmap.flower);

关于Android 实现将本地资源图片转换成Drawable的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。