Android Drawable资源详解:Bitmap, Nine-Patch, StateList与更多
需积分: 10 112 浏览量
更新于2024-09-28
收藏 310KB PDF 举报
"这篇文档主要介绍了Android中的Drawable资源,它是对图像的一种抽象,涵盖了BitmapFile、Nine-PatchFile、StateList、Color以及Shape等不同类型的Drawable。Drawable资源可以在Android应用程序中用于绘制和设置视图的背景等。"
在Android开发中,Drawable资源扮演着至关重要的角色。它们是Android系统用来表示和操作图像的一种方式,可以是静态的图片,也可以是根据状态变化的图像集合。以下是Drawable资源的详细说明:
1. **BitmapFile** - 这是最基础的图像类型,支持.png、.jpg和.gif格式。BitmapDrawable是与Bitmap文件关联的Drawable对象。Android会自动对放入`res/drawable`目录的Bitmap文件进行优化,如将真彩色PNG转化为8位PNG以节省内存。如果需要避免这种优化,可以将图片存放在`res/raw`目录。
2. **Nine-PatchFile** - Nine-Patch是一种特殊的PNG图片,它包含可拉伸和不变形的区域定义,用于适应不同尺寸的视图。NinePatchDrawable允许内容区域在水平和垂直方向上动态扩展,常用于按钮、背景等需要自适应大小的元素。
3. **StateList** - StateListDrawable是根据控件的状态显示不同图像的Drawable,例如,按钮在按下、默认、聚焦等不同状态下可以显示不同的图片。定义在XML文件中,它可以为不同状态引用多个Bitmap图像。
4. **Color** - 通过XML定义的颜色资源,可以指定纯色或具有圆角的矩形颜色,还可以包含渐变效果。PaintDrawable通常用于创建简单的颜色背景。
5. **Shape** - ShapeDrawable允许开发者创建自定义的几何形状,如矩形、圆形、线等,并可以设置填充颜色、描边宽度、渐变等属性。它在XML中定义,提供了高度的灵活性来设计视图的背景或其他图形元素。
6. **AnimationDrawable** - 虽然在本文档中没有详细介绍,AnimationDrawable是用来创建帧动画的,可以通过XML定义一系列的Drawable,按照指定的时间顺序播放,常用于实现动效。
在实际使用中,Drawable资源可以通过R类引用,如`R.drawable.filename`,或者在XML布局文件中直接引用,如`@drawable/filename`。例如,以下代码展示了如何在ImageView中设置BitmapDrawable作为背景:
```xml
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/myimage" />
```
这里,`myimage.png`是放置在`res/drawable`目录下的图片资源,`android:src`属性将其设置为ImageView的图像来源。
Drawable资源是Android开发中不可或缺的一部分,它提供了一种灵活的方式来管理和展示图像,包括静态图像、可拉伸图像、状态相关的图像以及自定义形状,极大地丰富了UI的表现力。
2021-12-24 上传
2021-09-22 上传
2021-10-11 上传
2020-06-30 上传
2012-09-17 上传
2021-10-02 上传
2018-04-08 上传
2022-11-26 上传
AnndyPeng
- 粉丝: 5
- 资源: 1
最新资源
- QGitTag:Qt5的一个库,它使用GitHub API提供有关标签的信息
- C#图表分析显示彩票中奖情况
- RevMan-HAL:RevMan HAL是用于自动将文本添加到RevMan文件中特殊部分的工具。 现在,您还可以在不同阶段之间进行选择。 要下载,请点击自述文件中的链接
- slmp协议说明.zip
- 毕业设计&课设-非线性反馈控制的MATLAB仿真代码.zip
- eslint-config:为ESLintReact特定的掉毛规则
- 面积守恒flash数学课件
- git-stat:用于从github获取统计信息的命令行应用程序
- protoc-3.13.0-win64.rar
- l-曲线matlab代码-SlushFund-2.0---Active-Interface-Tracking:多相无功传输代码
- ES-2Sem-2021-Grupo52:ES项目
- bucketfish-docker:用于使用Docker编译Barrelfish以及与Gitlab CI Runners集成的设置
- 毕业设计&课设-基本遗传算法MATLAB程序.zip
- Shopee-Case-Study
- VitamioPlayer.rar
- yserial:NoSQL y_serial Python模块–使用SQLite仓库压缩对象