Android 基础 View 控件系列之 Drawable

640?wx_fmt=gif

640?wx_fmt=gif

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

640?wx_fmt=jpeg

Drawable 是Android 中图像显示的常用方法。Drawable是指可在屏幕上绘制的图形,已经通过getDrawable(int)等API检索或者应用到具有 android:drawable 和 android:icon 等属性的其他XML 资源的图形。

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

  1. Drawable 分类

  2. Bitmap 位图 BitmapDrawable

  3. 可拉伸图(*.9.png) NinePatchDrawable。

  4. 图层 LayerDrawable

  5. 不同状态图(选择器) StateListDrawable

  6. 级别列表 LevelListDrawable

  7. 转换图像 TransitionDrawable

  8. 插入可绘制对象

  9. 剪裁可绘制对象 ClipDrawable

  10. 缩放可绘制对象 ScaleDrawable

  11. 形状可绘制对象 ShapeDrawable

  12. Drawable与 Bitmap 常用方法总结

1.Drawable 简介

继承关系如下:

[java.lang.Object]
   ↳     android.graphics.drawable.Drawable

Drawable 分类如下:

  1. Bitmap 位图 BitmapDrawable

  2. 可拉伸图(*.9.png) NinePatchDrawable。

  3. 图层LayerDrawable

  4. 不同状态图(选择器) StateListDrawable

  5. 级别列表LevelListDrawable

  6. 转换图像 TransitionDrawable

  7. 插入可绘制对象

  8. 剪裁可绘制对象 ClipDrawable

  9. 缩放可绘制对象 ScaleDrawable

  10. 形状可绘制对象 ShapeDrawable

资源引用:

在 Java中:R.drawable.filename

XML 中:@[package:]drawable/filename

1. Bitmap 位图 BitmapDrawable

位图图像。Android支持以下三种格式的位图文件:.png(首选)、.jpg(可接受)、.gif(不建议)。这些文件保存到 res/drawable/目录中

注意:

使用方法如下:

1.常规位图

  • XML 布局中使用方法

640?wx_fmt=png

xml 布局中 使用drawable

  • Java 代码中使用方法

640?wx_fmt=png

Java代码中使用Drawable对象

2.XML 位图

  • 在XML中创建位图资源文件

注意一下属性使用方法:

  1. antialias 

  2. ditherRGB 8888位图和 RGB 565屏幕),启用或停用位图抖动。

  3. filter

  4. mipmapmipmap提示

5.tileMode

640?wx_fmt=png

bitmap_xml 位图使用方法

  • 引用XML位图资源方法

640?wx_fmt=png

xml中使用位图的方法

  • java 代码实现方法

    640?wx_fmt=png

    java 代码使用位图的方法

2. 可拉伸图(*.9.png) NinePatchDrawable。

NinePatch是一种 PNG 图像,在其中可定义当视图中的内容超出正常图像边界时 Android缩放的可拉伸区域。此类图像通常指定为至少有一个尺寸设置为 "wrap_content" 的视图的背景,而且当视图扩展以适应内容时,九宫格图像也会扩展以匹配视图的大小。Android 的标准 Button小部件使用的背景就是典型的九宫格图像,其必须拉伸以适应按钮内的文本(或图像)。

  1. 常规使用方法同其他图片引用方式

  1. XML .9.png 图片同Bitmap XML的使用方式

640?wx_fmt=png

9.png 图片使用方法

3. 图层 LayerDrawable

LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。每个可绘制对象由单一 <layer-list>元素内的 <item>元素表示。

640?wx_fmt=png

LayerDrawable使用举例

4. 不同状态图(选择器) StateListDrawable

StateListDrawable是在 XML中定义的可绘制对象,它根据对象的状态,使用多个不同的图像来表示同一个图形。例如,Button 小部件可以是多种不同状态(按下、聚焦或这两种状态都不是)中的其中一种,而且可以利用状态列表可绘制对象为每种状态提供不同的背景图片。

您可以在 XML 文件中描述状态列表。每个图形由单一 <selector>元素内的 <item>元素表示。每个<item>均使用各种属性来描述应用作可绘制对象的图形的状态。

在每个状态变更期间,将从上到下遍历状态列表,并使用第一个与当前状态匹配的项目 —此选择并非基于“最佳匹配”,而是选择符合状态最低条件的第一个项目。

  1. 常规使用方法同其他图片引用方式

  1. 选择器 XML的使用方式

640?wx_fmt=png

状态选择器

5. 级别列表 LevelListDrawable

管理大量备选可绘制对象的可绘制对象,每个可绘制对象都分配有最大的备选数量。使用setLevel()设置可绘制对象的级别值会加载级别列表中android:maxLevel 值大于或等于传递到方法的值的可绘制对象资源。R.drawable.filename@[package:]drawable/filename

640?wx_fmt=png

LevelListDrawable 使用方法

可通过 setLevel()或 setImageLevel() 更改级别。

6. 转换图像 TransitionDrawable

TransitionDrawable 是可在两种可绘制对象资源之间交错淡出的可绘制对象。

每个可绘制对象由单一<transition>元素内的 <item> 元素表示。不支持超过两个项目。要向前转换,请调用 startTransition()。要向后转换,则调用 reverseTransition()

  • xml 布局声明

640?wx_fmt=png

640?wx_fmt=jpeg

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

640?wx_fmt=jpeg

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

640?wx_fmt=jpeg

既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

posted @ 2018-12-06 08:51  程序员Android的博客  阅读(301)  评论(0编辑  收藏  举报