一.drawable  图形对象,可以转载常用格式的图像,可能是(位图)Bitmapdrawable,或者shapedrawable(图形),还可能是多种其他图片格式GIF,PNG,JEPG

二.Bitmap 就是位图,用于图片的处理

三.Canvas 意为画布,就是绘画的目标区域,用来管理Bitmp或者path路径

下面就是讲到drawable转换成Bitmap的方法

我所知有两种方法(两种方法谁好谁坏,得看情况)

(1)常见的一种方法就是创建个Bitmap出来,再用画布绑定这个位图,将drawable绘到Bitmap上(此方法用于此时的drawable对象不是bitmap图像时)

Bitmap bitmap=Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
//创建一个size宽size高的一个位图 Canvas canvas=new Canvas(bitmap);
//将画布绑定到该位图上,为接下来的drawable绘画做准备 drawable.setBounds(0,0,size,size);
//drawable设置大小与位图相同 drawable.draw(canvas);
//将drawable通过画布画到Bitmap上去

(2)另外一种方法就是直接获取Bitmap(bitmapdrawable)

Bitmap icon=BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_resource)
//将drawable对象中的icon_resource图像转换成位图文件icon

或者

BitmapDrawable bd = (BitmapDrawable) drawable;
//先转换成Bitdrawable
bitmap = bd.getBitmap();
//再通过getBitmap()获取到Bitmap

另外关于drawmap()方法的说明

drawBitmap()方法:绘制图像,该方法用于在画布上绘制图像,是通过Bitmap对象来实现,当要引入图片资源时,我们可以采取该方法。

drawBitmap (Bitmap bitmap, float left, float top, Paint paint)

参数说明

bitmap:Bitmap对象,代表了图像资源。

left:图像显示的左边位置。

top:图像显示的上边位置。

paint:绘制时所使用的画笔。

在上述方法1中就是采用了该方法。

public class MyTile extends View
{
public Bitmap[] bitmap1;
private static final int size=12;
public MyTile(Context context, AttributeSet attrs)
{
super(context, attrs);
Get_Bitmap();
// TODO 自动生成的构造函数存根
} /* (非 Javadoc)
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
public void Get_Bitmap()
{
bitmap1=new Bitmap[1];
Bitmap bitmap=Bitmap.createBitmap(size, size, Config.ARGB_8888);
//创建一个size正方形大小的新位图
Drawable drawable=getResources().getDrawable
(R.drawable.greenstar);
//获取drawable对象
Canvas canvas=new Canvas(bitmap);
//Bitmap绑定画布
drawable.setBounds(0,0,size,size);
//设置drawable对象大小size
drawable.draw(canvas);
//最后将drawable画到Bitmap的canvas上去 bitmap1[0]=bitmap;
}
protected void onDraw(Canvas canvas)
{
// TODO 自动生成的方法存根
super.onDraw(canvas);
Paint paint=new Paint();
paint.setColor(Color.BLACK);
canvas.drawBitmap(bitmap1[0], 200, 200, paint);
} }
  

  

上述方法可以裁定图片的大小尺寸,在自定义位图大小的情况下通常采用这种方法

drawable以及Bitmap的基本操作的更多相关文章

  1. Android Drawable、Bitmap、byte[]之间的转换

    转自http://blog.csdn.net/june5253/article/details/7826597 1.Bitmap-->Drawable Bitmap drawable2Bitma ...

  2. Drawable和Bitmap区别

    Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低.我们理解为一种存储对象比较好 ...

  3. 获取应用图标,Drawable 转bitmap

    获取应用图标: PackageManager p = context.getPackageManager(); Drawable draw=null; ApplicationInfo info; tr ...

  4. 简单谈谈Resource,Drawable和Bitmap之间的转换

    一直接触这些东西,还是归个类整理一下比较好. Resource -> Drawable Drawable draw1 = this.getResources().getDrawable(R.dr ...

  5. android 获取资源文件 r.drawable中的图片转换为drawable、bitmap

    1.R-Drawable Resources resources = mContext.getResources(); Drawable drawable = resources.getDrawabl ...

  6. Android -- Drawable与Bitmap测试

    Drawable                                                                                 以下这个是测试加载10 ...

  7. Drawable和Bitmap转换

    一.Bitmap转Drawable Bitmap mBitMap=getYourBitMap(); //getYourBitMap()是你获取BitMap的方法 BitmapDrawable mBit ...

  8. Drawable、Bitmap、byte[]之间的转换

    android在处理一写图片资源的时候,会进行一些类型的转换: 1 Drawable → Bitmap 的简单方法 ((BitmapDrawable)res.getDrawable(R.drawabl ...

  9. Drawable与Bitmap(转)

    Drawable                                                                                 以下这个是测试加载10 ...

随机推荐

  1. Autofac - 服务

    上一篇中, 留了一个小问题,在一个接口下面, 注册多个类, 并能正常获取. 之前的方式是不能做到的, 在服务中, 有一种实现方式是可以的. 一.服务 1. 类型 - 描述服务的基本方法 上一篇其实使用 ...

  2. WebForm 基础

    IIS安装 webForm需要IIS安装 1.安装:控制面板--程序或功能--打开或关闭windows功能--Internet信息服务(打上勾)--确定 2.让vs和IIS相互认识vs:vs2012- ...

  3. CPU介绍

    CPU内核主要分为两部分:运算器和控制器. (一) 运算器 cpu基本想到的是计算,因此有算数计算,还有逻辑计算单元以及移位简单的运算:fp运算单独拿出:要运算就需要输入数字,因此有寄存器组,即通用寄 ...

  4. 【书籍下载链接】_1_第一轮_C语言书籍

    各位朋友,如果您觉得下载的电子书,看的还可以,请购买纸质版的图书,如果您觉得 您下载的书,不值得一看请在下载后直接删除. Windows汇编:http://dl.vmall.com/c0jk1v970 ...

  5. Scalaz(44)- concurrency :scalaz Future,尚不完整的多线程类型

    scala已经配备了自身的Future类.我们先举个例子来了解scala Future的具体操作: import scala.concurrent._ import ExecutionContext. ...

  6. inflate的基本用法,类似于findviewbyId

    Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. android上还有一个与Inflate()类 ...

  7. 为vs2012添加背景和皮肤

    每天对着电脑用VS进行编码开发,难免有点单调.我们可以试着像设置电脑桌面壁纸一样设置VS皮肤. 先看下效果 1.打开vs2012,工具——扩展和更新 2.选择联机,搜索并分别安装如下两个插件 3.安装 ...

  8. OGNl和ValueStack的基础和深入分析

    一.OGNL 1)什么是OGNL? 解析:OGNL是Object Graph Navigation Language(对象图导航语言)它是强大的表达式语言. 2)用途:通过简单一致的表达式语法来读取和 ...

  9. 说说IT技术团队招聘那点事

    因为近来由于新项目的需要,各种招聘比较多,几乎每周都要面试几个人,顺便对以前的面试和带开发经验进行简单的总结 1.首先负责招聘的人一定得是自己团队的人,而且在招聘的时候一定要想清楚目标候选人进来的职责 ...

  10. Code First :使用Entity. Framework编程(1) ----转发 收藏

    这个是在学习EF CodeFirst时发现的,对于初学者还是不错的.果断转发,方便自己以后查阅和学习. 对于学习Code First 这个教程讲解的还是很详细. 第一章:欢迎来到Code First ...