前言
这是android资源类型的第三篇文章,将学习使用android的可绘制资源对象 ,本篇的内容挺多的。
概述
首先来说一下可绘制资源吧,要不然都不知道我们要干啥,Android给出的解释是,可绘制对象资源是图形的一般概念,是指可在手机屏幕上绘制的图形,以及可以使用getDrawable(int)检索的或应用到拥有 android:drawable 和 android:icon 等属性的其他 XML 资源的图形,接下来我们将分类讲解android的可绘制资源。
可绘制对象资源
可绘制资源指的是存放在res/drawable文件夹下的位图资源,在使用的时候会编译成不同的Drawable对象,他们的使用方式也是相同的在xml文件中引用和在代码中使用,让我们来一个一个看看他们的真面目吧。
- 位图文件
这可能是开发者平时用的最多的类型了 ,在我们为ImageView设置背景的时候,我们会将图片资源放入到drawable文件夹中接着在布局的xml文件中使用,其中放在drawable文件夹中文件就是位图文件。
这里的one.png 就是一个位图文件。
编译资源类型:位图文件编译之后会指向BitmapDrawable的资源指针
使用示例:包括在xml文件中和在代码中的使用
//布局文件中通过@drawable/文件名使用
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/one" />
// kotlin代码中使用
val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.one, null)
- xml位图
xml位图是在xml文件中定义的资源,指向位图文件。实际上是原始文件的别名。xml可以指定位图的其他性质,例如抖动和层叠。
这就是一个xml位图
编译资源类型:位图文件编译之后会指向BitmapDrawable的资源指针
语法:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
位图使用的资源
android:src="@[package:]drawable/drawable_resource"
是否抗锯齿
android:antialias=["true" | "false"]
是否启动位图抖动
android:dither=["true" | "false"]
布尔值。启用或停用位图过滤。当位图收缩或拉伸以使其外观平滑时使用过滤。
android:filter=["true" | "false"]
关键字。定义位图的重力。重力指示当位图小于容器时,可绘制对象在其容器中放置的位置。
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:mipMap=["true" | "false"]
关键字。定义平铺模式。当平铺模式启用时,位图会重复。重力在平铺模式启用时将被忽略。
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
使用示例:包括在xml文件中和在代码中的使用
//布局文件中通过@drawable/文件名使用
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bitmap_xml" />
使用可以参考 BitmapDrawable这个源文件