资讯专栏INFORMATION COLUMN

Drawable 使用详解

JinB / 1696人阅读

摘要:启用或停用位图过滤。当位图收缩或拉伸以使其外观平滑时使用过滤。在每个状态变更期间,将从上到下遍历状态列表,并使用第一个与当前状态匹配的项目此选择并非基于最佳匹配,而是选择符合状态最低条件的第一个项目。每个可绘制对象由单一元素内的元素表示。

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

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

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

Drawable 分类

Bitmap 位图 BitmapDrawable

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

图层 LayerDrawable

不同状态图(选择器) StateListDrawable

级别列表 LevelListDrawable

转换图像 TransitionDrawable

插入可绘制对象

剪裁可绘制对象 ClipDrawable

缩放可绘制对象 ScaleDrawable

形状可绘制对象 ShapeDrawable

Drawable与 Bitmap 常用方法总结

1.Drawable 简介 继承关系如下:
[java.lang.Object]
   ↳
     android.graphics.drawable.Drawable
Drawable 分类如下:

Bitmap 位图 BitmapDrawable

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

图层 LayerDrawable

不同状态图(选择器) StateListDrawable

级别列表 LevelListDrawable

转换图像 TransitionDrawable

插入可绘制对象

剪裁可绘制对象 ClipDrawable

缩放可绘制对象 ScaleDrawable

形状可绘制对象 ShapeDrawable

资源引用:

Java 中:
R.drawable.filename

XML 中:
@[package:]drawable/filename

1. Bitmap 位图 BitmapDrawable

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

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

使用方法如下:

1.常规位图

XML 布局中使用方法

        

Java 代码中使用方法

getResources().getDrawable(R.drawable.xml_bitmap)
2.XML 位图

在XML中创建位图资源文件

注意一下属性使用方法:

antialias

     启用、停用抗锯齿  

dither

    当位图的像素配置与屏幕不同时(例如:`RGB 8888 `位图和 `RGB 565 `屏幕),启用或停用位图抖动。

filter
启用或停用位图过滤。当位图收缩或拉伸以使其外观平滑时使用过滤。

mipmap

  启用或停用` mipmap `提示

5.tileMode

    定义平铺模式。当平铺模式启用时,位图会重复。重力在平铺模式启用时将被忽略

xml_bitmap 位图实现




    

引用XML位图资源方法

        

java 代码实现方法

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

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

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

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



3. 图层 LayerDrawable

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




    
    
    
    
    
    

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

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

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

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

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

选择器 XML的使用方式

5. 级别列表 LevelListDrawable

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




    

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

6. 转换图像 TransitionDrawable

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

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

xml 布局声明



    
    

java 代码中使用

7. 插入可绘制对象

XML 文件中定义的以指定距离插入其他可绘制对象的可绘制对象。当视图需要小于视图实际边界的背景时,此类可绘制对象很有用。





8. 剪裁可绘制对象 ClipDrawable

XML 文件中定义的对其他可绘制对象进行裁剪(根据其当前级别)的可绘制对象。您可以根据级别以及用于控制其在整个容器中位置的重力,来控制子可绘制对象的裁剪宽度和高度。通常用于实现进度栏之类的项目。

xml 初始化剪裁样式




java 代码中使用

9. 缩放可绘制对象 ScaleDrawable

XML 文件中定义的更改其他可绘制对象大小




10. 形状可绘制对象 ShapeDrawable

XML 中定义的一般形状。

绘制直线



    "
    
    
    
    

2.绘制圆角矩形




    
    
    
    

12. Drawable与 Bitmap 常用方法总结

由于涉及内容比较多,已经另起文章讲述。

Drawable与 Bitmap 常用方法总结

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75827.html

相关文章

  • ImageView 使用详解

    极力推荐文章:欢迎收藏Android 干货分享 showImg(https://segmentfault.com/img/remote/1460000019975020); 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、ImageView 的继承关系二、ImageView 常用方...

    shery 评论0 收藏0
  • GridView 使用详解

    摘要:简介继承关系如下主要使用方法主要通过使用自定义来适配数据,进而显示到中。如果不是太明白,可以查看上篇文章使用详解至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢 极力推荐文章:欢迎收藏Android 干货分享 showImg(https://segmentfault.com/img/remote/1460000019975020); 阅读五分...

    dayday_up 评论0 收藏0
  • ListView 使用详解

    showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); 极力推荐文章:欢迎收藏Android 干货分享 showImg(https://segmentfault.com/img/remote/1460000019975020); 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章...

    clasnake 评论0 收藏0
  • Drawable与 Bitmap 转换总结

    摘要:进行缩放然后比对进行缩放调用中转换成创建操作图片用的对象计算缩放比例设置缩放比例建立新的,其内容是对原的缩放后的图至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢 showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); 极力推荐文章:欢迎收藏Androi...

    snifes 评论0 收藏0

发表评论

0条评论

JinB

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<