Drawable Resource也即可绘制对象资源,是指可在屏幕上绘制的图形,以及可以使用getDrawable(int)等api检索或者应用到具有android:drawable和android:icon等属性的其他xml资源的图形,共有多种不同类型的可绘制对象:

BitmapDrawable(位图文件)

位图文件也即是最简单的可绘制资源,Android支持三种格式的文图文件:.png(首选) 、.jpg(可接受) 、.git(不建议)
您可以使用文件名作为资源ID直接引用位图文件,也可以在xml中创建别名资源ID。

:在构建过程中,可通过 aapt工具自动优化位图文件,对图像进行无损压缩。例如,不需要超过 256 色的真彩色 PNG 可通过调色板转换为 8 位 PNG。这样产生的图像质量相同,但所需内存更少。因此请注意,此目录中的图像二进制文件在构建时可能会发生变化。如果您计划将图像解读为比特流以将其转换为位图,请改为将图像放在 res/raw/文件夹中,在那里它们不会进行优化。

在xml中定义:

<?xml version="1.0" encoding="utf-8"?>
xmlns:android

字符串,定义命明空间其必须是是 "http://schemas.android.com/apk/res/android"
。这仅当 是根元素时才需要,当 嵌套在 内时不需要。

android:src

引用图片资源或者其他的Drawable Resource

android:antialias

启用(true)或停用(false)抗锯齿,不明白抗锯齿含义的同学可以去百度下加深理解。下图是未作抗锯齿处理和做了抗锯齿处理的对比图。一目了然!开启抗锯齿功能会让图片变的平滑,同时也会在一定程度上降低图片的清晰度,但是这个降低的幅度较低以至于可以忽略,因此抗锯齿选项应该开启。


Android中Drawable Resource学习_第1张图片 Paste_Image.png

android:dither

图像的抖动处理,当每个颜色值以低于8位表示时,对应图像做抖动处理可以实现在可显示颜色总数比较低(比如256色)时还保持较好的显示效果,所以抖动选项也应该开启。这里举个例子:

未做抖动处理


Android中Drawable Resource学习_第2张图片 Paste_Image.png

做过抖动处理

Android中Drawable Resource学习_第3张图片 Paste_Image.png

做过抖动处理的图片效果明显比没做过抖动处理的效果图要柔和些。

android:filter

启用或停用位图过滤。当位图收缩或拉伸以使其外观平滑时使用过滤。开启过滤效果可以保持较好的现实效果。所以位图过滤选项应该开启。

android:mipMap

这时一种图像相关的处理技术,也叫纹理映射,比较抽象。默认值为false,日常用的很少,所以这里就不做介绍了。

android:tileMode

关键字。定义平铺模式。当平铺模式启用时,位图会重复。gravity属性在平铺模式启用时将被忽略。
必须是以下常量值之一:
disabled 不平铺位图。这是默认值。
clamp 当着色器绘制范围超出其原边界时复制边缘颜色
repeat 水平和垂直重复着色器的图像。
mirror 水平和垂直重复着色器的图像,交替镜像图像以使相邻图像始终相接。

<?xml version="1.0" encoding="utf-8"?>

布局文件为:

<?xml version="1.0" encoding="utf-8"?>        

下面看下具体的效果:水平和竖直方向的平铺
默认状态下 android:tileMode = "disabled"

android:tileMode = "disabled"
Android中Drawable Resource学习_第4张图片 Paste_Image.png
android:tileMode = "repeat"
Android中Drawable Resource学习_第5张图片 Paste_Image.png
android:tileMode = "mirror"
Android中Drawable Resource学习_第6张图片 Paste_Image.png
android:tileMode = "clamp"
Android中Drawable Resource学习_第7张图片 Paste_Image.png

android:tileModeX: 设置x方向上的平铺方式

android:tileModeY: 设置y方向上的平铺方式

**android:alpha: 设置图片的透明度0.0-1.0之间

android:gravity

取值如下:

top 将对象放在其容器顶部,不改变其大小。
bottom 将对象放在其容器底部,不改变其大小。
left 将对象放在其容器左边缘,不改变其大小。
right 将对象放在其容器右边缘,不改变其大小。
center_vertical 将对象放在其容器的垂直中心,不改变其大小。
fill_vertical 按需要扩展对象的垂直大小,使其完全适应其容器。
center_horizontal 将对象放在其容器的水平中心,不改变其大小。
fill_horizontal 按需要扩展对象的水平大小,使其完全适应其容器。
center 将对象放在其容器的水平和垂直轴中心,不改变其大小。
fill 按需要扩展对象的垂直大小,使其完全适应其容器。这是默认值。
clip_vertical 可设置为让子元素的上边缘和/或下边缘裁剪至其容器边界的附加选项。裁剪基于垂直重力:顶部重力裁剪上边缘,底部重力裁剪下边缘,任一重力不会同时裁剪两边。
clip_horizontal 可设置为让子元素的左边和/或右边裁剪至其容器边界的附加选项。裁剪基于水平重力:左边重力裁剪右边缘,右边重力裁剪左边缘,任一重力不会同时裁剪两边。

更多相关文章

  1. Android 开发中Parcel存储类型和数据容器
  2. 根据文本生成位图
  3. android 从矢量图SVG获取位图bitmap
  4. Android背景平铺
  5. Android 背景图片重复平铺
  6. Android 颜色渲染(四) BitmapShader位图渲染
  7. Android 开发中 Parcel存储类型和数据容器
  8. Android中ViewGroup等容器控件的使用

随机推荐

  1. Android(安卓)keytool 生成证书MD5指纹
  2. android 自定义的AlertDialog强化版
  3. android widget 之CheckBox
  4. Android(安卓)编译手册
  5. android 应用中加入支付功能(支付宝集成)
  6. onRetainNonConfigurationInstance和getL
  7. Android(安卓)Sdk Manager更新
  8. Android入门教学视频免费下载
  9. Android(安卓)Adapter
  10. android 博客精选