美文网首页
drawable与bitmap

drawable与bitmap

作者: 兔斯基第2号 | 来源:发表于2018-06-11 15:07 被阅读0次

零碎的记录一些话以便理解。

 * A Drawable is a general abstraction for "something that can be drawn."  Most
 * often you will deal with Drawable as the type of resource retrieved for
 * drawing things to the screen; the Drawable class provides a generic API for
 * dealing with an underlying visual resource that may take a variety of forms.
 * Unlike a {@link android.view.View}, a Drawable does not have any facility to
 * receive events or otherwise interact with the user.

Drawable 只是一个抽象概念, 表示"something that can be drawn".

Though usually not visible to the application, Drawables may take a variety
 * of forms:
 *
 * <ul>
 *     <li> <b>Bitmap</b>: the simplest Drawable, a PNG or JPEG image.
 *     <li> <b>Nine Patch</b>: an extension to the PNG format allows it to
 *     specify information about how to stretch it and place things inside of
 *     it.
 *     <li><b>Vector</b>: a drawable defined in an XML file as a set of points,
 *     lines, and curves along with its associated color information. This type
 *     of drawable can be scaled without loss of display quality.
 *     <li> <b>Shape</b>: contains simple drawing commands instead of a raw
 *     bitmap, allowing it to resize better in some cases.
 *     <li> <b>Layers</b>: a compound drawable, which draws multiple underlying
 *     drawables on top of each other.
 *     <li> <b>States</b>: a compound drawable that selects one of a set of
 *     drawables based on its state.
 *     <li> <b>Levels</b>: a compound drawable that selects one of a set of
 *     drawables based on its level.
 *     <li> <b>Scale</b>: a compound drawable with a single child drawable,
 *     whose overall size is modified based on the current level.
 * </ul>

Drawable 是一个抽象的存在,是一个可画的对象。可能是一个Bitmap/Nine Patch/Vector/Shape/Layer/States/Levels/Scales Drawable。(我)

Drawable 是一个抽象的概念, 而 Bitmap 是其存在的实体之一.

“PNG和JPEG都是图片格式,Bitmap是Java中的一个类, 类本身也是一个抽象的概念, Bitmap中有一个属性 byte[] mBuffer; 这个存储的是图片的二进制信息,PNG 和 JPEG本身也是由二进制数据构成的.”——高爷

“可以简单地理解为 Bitmap 储存的是 像素信息,Drawable 储存的是 对 Canvas 的一系列操作。而 BitmapDrawable 储存的是「把 Bitmap 渲染到 Canvas 上」这个操作。”——nekocode

在实际开发中,Drawable常被用作View的背景或者作为ImageView中的图像显示。Drawable一般都是通过XML来定义的,也可以通过代码构造。

android系统不允许直接修改原图,类似Photoshop中的锁定,必须通过原图创建一个同样大小的Bitmap,并将原图绘制到该Bitmap中,以一个副本的形式来修改图像。代码如下,bm为原图,bmp为创建的副本。

Bitmap bmp = Bitmap.createBitmap(bm.getWidth(),bm.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
canvas.drawBitmap(bm,0,0,paint);

每个Drawable都会有一个draw的方法

参考:

  1. Android bitmap Drawable
  2. https://www.zhihu.com/question/29561539
  3. Android中Bitmap和Drawable详解

相关文章

网友评论

      本文标题:drawable与bitmap

      本文链接:https://www.haomeiwen.com/subject/aovceftx.html