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


Paste_Image.png

android:dither

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

未做抖动处理


Paste_Image.png

做过抖动处理

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"
Paste_Image.png
android:tileMode = "repeat"
Paste_Image.png
android:tileMode = "mirror"
Paste_Image.png
android:tileMode = "clamp"
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在布局中动态增加view时的层级控制
  2. Android大图片内存清理
  3. Android四大启动模式
  4. Android学习笔记(二) 布局方式的介绍
  5. Android简单、灵活、高效的图片裁剪框架 Android-ImageClipper
  6. Drawable Mutations(Android(安卓)Drawable 深入分析)
  7. Android(安卓)Drawable Resource学习(二)、BitmapDrawable和Bitmap
  8. 根据文本生成位图
  9. android > 获取图片 从 本地 /相机

随机推荐

  1. handler机制简析
  2. 初窥 Android 模拟器 2.0,这些年来最大最
  3. Android - 小功能 - Android短信功能实现
  4. Android主题与Toolbar样式之间的关系
  5. android 修改properties属性最大长度
  6. android 发送短信的两种方式,以及接收报告
  7. 1.3 Android App 组件架构
  8. Android 安全卫士 第二天_注意事项
  9. 使用kotlin编写Android第一个Activity
  10. javafx控件的显示与隐藏