Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
2012-11-08 11:56
507 查看
一、如何创建一个BitmapDrawable对象
Bitmap,代表一个位图图像,Android支持三种格式的位图图像:.png (preferred),.jpg (acceptable), .gif (discouraged)。括号里的说明,代表这三种格式的图片在Android中的支持情况,.png格式图片优先,.jpg格式也可以,但是效果没有.png好,.gif支持最差。可以直接使用图片的名称作为资源ID,来直接引用一个位图图片。也可以再XML文件中创建一个资源别名的ID。在构建应用的时候,Bitmap文件可能会被appt工具压缩自动优化为无损图像。例如,一个真彩色PNG,不需要超过256的颜色可以被转换成一个8位PNG和调色板。这将导致一个图像质量相同,但这需要更少的内存。所以要意识到,在drawable目录中图像的二进制文件在构建程序时可以改变。如果你打算读一个图像作为字节流并将它转换成一个位图,把你的图片放在在res /raw/文件夹里,在那里他们不会被优化。1、通过Bitmap File
一个bitmap文件就是一个.png、.jpg,.gif格式的文件。Android会对存储在res/drawable/目录下的这些文件创建一个Drawable资源。文件位置:res/drawable/filename.png(
.png,
.jpg, or
.gif) 文件名即资源的ID。编译资源数据类型: 指向BitmapDrawable类型的指针。资源引用:In Java:
R.drawable.filenameIn XML:
@[package:]drawable/filename示例:有这样存储的图片
res/drawable/myimage.png,在layout xml文件中将他显示在视图上。
<ImageViewandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/myimage" />在java代码中检索出为一个Drawable对象。
Resources res=getResources();Drawable drawable = res.getDrawable(R.drawable.myimage);//实际上这是一个BitmapDrawable对象BitmapDrawable bitmapDrawable=(BitmapDrawable)drawable;//可以在调用getBitmap方法,得到这个位图Bitmap bitmap=bitmapDrawable.getBitmap();参考:2D Graphics
BitmapDrawable
2、通过XML Bitmap
一个XML bitmap是一个在XML文件中定义的指向一个bitmap文件的资源。其效果是作为一个原始位图文件的别名,并且可以指定一些额外的属性。注意:你可以在<item>节点中使用<bitmap>作为它的子节点。比如,当你定义一个state list或者layer list的时候,可以包括一个android:drawable属性Note: You can use a
<bitmap>element as a child of an
<item>element. Forexample, when creating astate list orlayer list,you can exclude the
android:drawableattribute from an
<item>element and nest a
<bitmap>inside it that defines the drawable item.文件位置:
res/drawable/filename.xmlfilename作为资源的ID编译资源类型指向BitmapDrawable类型的指针资源引用In Java:
R.drawable.filenameIn XML:
@[package:]drawable/filename语法:
<?xml version="1.0" encoding="utf-8"?><bitmapxmlns:android="http://schemas.android.com/apk/res/android"android:src="@[package:]drawable/drawable_resource"android:antialias=["true" | "false"]android:dither=["true" | "false"]android:filter=["true" | "false"]android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |"fill_vertical" | "center_horizontal" | "fill_horizontal" |"center" | "fill" | "clip_vertical" | "clip_horizontal"]android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />节点介绍:
<bitmap>定义位图的来源和属性属性:
xmlns:android
类型:String。定义了XML的命名空间,必须是"http://schemas.android.com/apk/res/android"。如果<bitmap>是根元素,那么他是必须的,如果是嵌套在<itme>里面,那么就不是必须的。
android:src类型:Drawable resource。必需。 引用一个drawableresource.
android:antialias类型:Boolean。是否开启抗锯齿。
android:dither类型:Boolean。如果位图与屏幕的像素配置不同时,是否允许抖动.(例如:一个位图的像素设置是 ARGB 8888,但屏幕的设置是RGB 565)
android:filter类型:Boolean。是否允许对位图进行滤波。对位图进行收缩或者延展使用滤波可以获得平滑的外观效果。
android:gravity类型:关键字。定义位图的重力(gravity),如果位图小于其容器,使用重力指明在何处绘制必需是下面的属性,多个之间用 | 分隔
Value | Description |
---|---|
top | Put the object at the top of its container, not changing its size. |
bottom | Put the object at the bottom of its container, not changing its size. |
left | Put the object at the left edge of its container, not changing its size. |
right | Put the object at the right edge of its container, not changing its size. |
center_vertical | Place object in the vertical center of its container, not changing its size. |
fill_vertical | Grow the vertical size of the object if needed so it completely fills its container. |
center_horizontal | Place object in the horizontal center of its container, not changing its size. |
fill_horizontal | Grow the horizontal size of the object if needed so it completely fills its container. |
center | Place the object in the center of its container in both the vertical and horizontal axis, notchanging its size. |
fill | Grow the horizontal and vertical size of the object if needed so it completely fills itscontainer. This is the default. |
clip_vertical | Additional option that can be set to have the top and/or bottom edges of the child clipped toits container's bounds. The clip is based on the vertical gravity: a top gravity clips thebottom edge, a bottom gravity clips the top edge, and neither clips bothedges. |
clip_horizontal | Additional option that can be set to have the left and/or right edges of the child clipped toits container's bounds. The clip is based on the horizontal gravity: a left gravity clipsthe right edge, a right gravity clips the left edge, and neither clipsboth edges. |
android:tileMode类型:Keyword。定义了tile模式。当tile模式被启用,位图是重复的,并且gravity属性将被忽略。必须是下列之一常量值:
Value | Description |
---|---|
disabled | Do not tile the bitmap. This is the default value. |
clamp | Replicates the edge color if the shader draws outside of its original bounds |
repeat | Repeats the shader's image horizontally and vertically. |
mirror | Repeats the shader's image horizontally and vertically, alternating mirror images so thatadjacent images always seam. |
<?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"android:src="@drawable/icon"android:tileMode="repeat" />参考:
BitmapDrawableCreatingalias resources
二、BitmapDrawable的使用
一个BitmapDrawable就是封装了一个位图。直接以文件的方式,就是封装了一个原始的位图。以Xml方式,可以对原始的位图进行一系列的处理,比如说抗锯齿,拉伸,对齐等等。要了解BitmapDrawable的使用,还需要明白Bitmap、BitmapFactory等类。Bitmap代表了一个原始的位图,并且可以对位图进行一系列的变换操作。BitmapFactory提供一系列的方法用于产生一个Bitmap对象。多用在Canvas中。关于绘图和位图变换以后再学习。BitmapDrawable的使用比较简单,就是在其他的xml文件中直接引用就可以了,不过要注意在xml中定义BitmapDrawable各个属性使用和含义。相关文章推荐
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- Android Drawable Resource学习(十一)、RotateDrawable
- Android Drawable Resource学习(六)、LevelListDrawable
- Android Drawable Resource学习(一)、Drawable Resource简介
- Android Drawable Resource学习(七)、TransitionDrawable
- android - Drawable - BitmapDrawable 学习笔记
- Android Drawable Resource学习(十二)、ShapeDrawable还是GradientDrawable?
- Android Drawable Resource学习(十二)、GradientDrawable
- Android Drawable Resource学习(五)、StateListDrawable
- Android Drawable Resource学习(十一)、RotateDrawable
- Android Drawable Resource学习(五)、StateListDrawable
- Android Drawable Resource学习(十)、ScaleDrawable
- Android Drawable Resource学习(十三)、ShapeDrawable
- Android Drawable Resource学习(九)、ClipDrawable