一.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. SQL--空值处理

    --为空 SELECT * FROM dbo.Product WHERE Price IS NULL --不为空 SELECT * FROM dbo.Product WHERE Price IS NO ...

  2. 一个ajax同步与异步引发的血案。

    前言 公司做网上促销活动,需要充值换取相应的抽奖资格,抽奖可以获得丰厚的礼品,而且抽奖资格门槛有点高,领导下达命令保证活动的正常上线与运行,领导很重视,就这样,在领导的安排下进行了相关活动的codin ...

  3. 【原创】Kakfa network包源代码分析

    kafka.network包主要为kafka提供网络服务,通常不包含具体的逻辑,都是一些最基本的网络服务组件.其中比较重要的是Receive.Send和Handler.Receive和Send封装了底 ...

  4. 基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动

    为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此对基于MVC的Web界面继续进行一些研究和优化,力求在功能和界面上保持和Winform一致,本文 ...

  5. .Net在线付款---Paypal在线付款开发过程

    原文:.Net在线付款---Paypal在线付款开发过程 最近在做一个Web订单项目,项目有一个需求就是集成Paypal与Paydollar在线付款,一开始看到这个需求也是傻了眼,因为以前从来没有做过 ...

  6. 关于OpenCart的一个小建议

    OpenCart是一套老牌的开源自由B2C电商系统,最近watch了其托管在在github上的项目,发现还是很活跃的,每天都有人反馈bug. 初步的看一下,它是支持在后台管理多个店铺的,而且可以同一个 ...

  7. Rest.Ler PHP API Server解决方案

    https://github.com/Luracast/Restler 通过composer安装依赖后,整个vendor将近三十兆.这太不爽了.搞PHP的人如果没有洁癖的追求,跟搞Java的咸鱼有神码 ...

  8. 2016暑假多校联合---Rikka with Sequence (线段树)

    2016暑假多校联合---Rikka with Sequence (线段树) Problem Description As we know, Rikka is poor at math. Yuta i ...

  9. java顺序表和树的实现

    一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...

  10. Android活动启动模式

    在android中,android活动是以栈的方式进行存储,在栈中的活动不断被重新激活至前台和不断被终止也不断被排序.因此对于栈中的活动管理也是一个比较麻烦的事情. android给我们提供了两类活动 ...