Android支持三种位图格式:.png(推荐使用)、.jpg(可以接受)、.gif(不推荐)。

你可以使用位图文件的文件名作为资源ID来直接引用位图文件,也可以在XML中定义一个资源别名。

注意:在程序build的过程中位图文件会被aapt工具自动无损压缩来优化。比如,如果一个全彩的PNG图片所需要的色彩不超过256色,aapt工具就会使用一个调色板来将该图转换成一张8位的PNG图。画面质量并没有变化,但是所需的存储空间却减少了。因此,要注意到在build的过程中这个目录下的图片的二进制数据会发生变化。如果你打算使用比特流的方式读取图片来转换成位图资源,请将这些图片放在res/raw/目录下。在/res/raw/目录下的图片不会被优化。

当我们将图片文件放在res/drawable/目录下时,Android就会为每一张图片创建一个Drawable资源。这些资源最终将被编译成BitmapDrawable对象。在Java代码中,通过R.drawable.filename的形式引用这些资源;在XML中,使用@[package]:drawable/filename的形式来引用。

例:

比如我们有一张图片存放为res/drawable/myimage.png,下面这个布局文件将该图片应用到一个View组件上:

<ImageView    android:layout_height="wrap_content"    android:layout_width="wrap_content"    android:src="@drawable/myimage" />


而下面的代码则是以Drawable的形式来获取图像:

Resources res = getResources();Drawable drawable = res.getDrawable(R.drawable.myimage);


XML Bitmap

XML Bitmap是定义在XML文件当中,指向一个位图文件的资源。这样就为原生的位图文件起了一个别名。在XML定义时可以为位图定制诸如图像抖动或是平铺等额外属性。

我们可以使用<bitmap>节点作为<item>节点的子节点。比如,当我们要创建一个state list 或者 layer list时,可以不在<item>节点使用android:drawable属性而是将一个<bitmap>节点嵌入到<item>节点当中来定义drawble引用。

XML Bitmap最终将被编译成BitmapDrawable对象。在Java代码中通过R.drawable.filename的形式访问,在XML当中使用@[package:]drawable/filename的形式来访问。

XML bitmap语法:

    <?xml version="1.0" encoding="utf-8"?>    <bitmap        xmlns: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"] />


android:antialias——开启或关闭抗锯齿

android:dither——开启或关闭图像抖动(如果位图与显示屏幕的像素配置不相同时会用到,比如一张ARGB 8888位图和一个RGB565的显示屏)

android:filter——开启或关闭滤镜。当收缩或是拉伸位图时使用这个来使位图看上去更平滑。

android:gravity——当位图大小比它所在的容器小的时候,使用这个属性来决定位图在容器中的位置。可取的值有:top、bottom、left、right、center_vertical、fill_vertical(纵向缩放位图使之与容器等高)、center_horizontal、fill_horizontal(横向缩放位图使之与容器等宽)、center、fill(纵向与橫向都缩放使之完全铺满容器,这也是默认值)、clip_vertical(呃。。。)、clip_horizontal(呃。。。)。

android:tileMode——定义平铺模式。如果定义了,那么位图将会重复,并且Gravity属性将失效。可取的值有disabled(默认值,不启用平铺)、clamp(复制位图边缘的颜色来填充容器剩下的空白部分)、repeat(复制整个位图来填充容器)、mirror(与repeat类似,但是是交替的镜像复制,即相邻的两张是镜像对称的)

比如:

<?xml version="1.0" encoding="utf-8"?><bitmap    xmlns:android="http://schemas.android.com/apk/res/android"    android:src="@drawable/b4"       android:tileMode="mirror"    />


更多相关文章

  1. 手把手带你搭建 Elasticsearch 集群
  2. android 游戏导引(3. 图形引擎之模型管理)
  3. Android(安卓)DOM解析xml
  4. 【Android(安卓)UI】 Shape详解
  5. Android(安卓)Market上发软件要注意哪些问题
  6. java/android 设计模式学习笔记(12)---组合模式
  7. Android(安卓)BitmapFactory图片压缩处理(大位图二次采样压缩处理
  8. View和Layout
  9. android 接触

随机推荐

  1. Android 计步传感器的实现
  2. Android布局中margin,padding,align的用
  3. 采用跑马灯形式显示文本
  4. C# Xamarin For Android自动升级项目实战
  5. 【eoe Android特刊】第二十四期 Android
  6. 限制EditText输入类型与长度
  7. android style & theme
  8. Android图片加载与缓存开源框架:Android G
  9. Android P 指纹 HAL
  10. Android CTS 测试研究