对另一个drawable资源,基于当前的level,进行尺寸变换的drawable。
文件位置:
res/drawable/filename.xml
文件名即资源名
编译数据类型:
指向 ScaleDrawable
的指针。
资源引用:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
语法:
<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:scaleHeight="percentage"
android:scaleWidth="percentage" />
元素:
<scale>
定义一个ScaleDrawable,必须作为根元素。
属性:
xmlns:android
String类型。 必须的。定义XML文件的命名空间。必须是 "http://schemas.android.com/apk/res/android"
.
android:drawable
Drawable 资源。必须的。引用一个drawable资源。
android:scaleGravity
关键字。指定缩放后的gravity的位置。
必须是下面的一个或多个值(多个值之间用”|“分隔),下面的值和描述和上一篇的ClipDrawable一样。
值 | 描述 |
---|---|
top | Put the object at the top of its container, not changing its size. |
bottom | Put the object at the bottom of its container, not changing its size. |
left | Put the object at the left edge of its container, not changing its size. This is thedefault. |
right | Put the object at the right edge of its container, not changing its size. |
center_vertical | Place object in the vertical center of its container, not changing its size. |
fill_vertical | Grow the vertical size of the object if needed so it completely fills its container. |
center_horizontal | Place object in the horizontal center of its container, not changing its size. |
fill_horizontal | Grow the horizontal size of the object if needed so it completely fills its container. |
center | Place the object in the center of its container in both the vertical and horizontal axis, notchanging its size. |
fill | Grow the horizontal and vertical size of the object if needed so it completely fills itscontainer. |
clip_vertical | Additional option that can be set to have the top and/or bottom edges of the child clipped toits container's bounds. The clip is based on the vertical gravity: a top gravity clips thebottom edge, a bottom gravity clips the top edge, and neither clips both edges. |
clip_horizontal | Additional option that can be set to have the left and/or right edges of the child clipped toits container's bounds. The clip is based on the horizontal gravity: a left gravity clipsthe right edge, a right gravity clips the left edge, and neither clips both edges. |
android:scaleHeight
Percentage(百分比)缩放的高度,以百分比的方式表示drawable的缩放。形式例如:100%,12.5%。
android:scaleWidth
Percentage(百分比)缩放的宽度,以百分比的方式表示drawable的缩放。形式例如:100%,12.5%。
示例:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/logo"
android:scaleGravity="center_vertical|center_horizontal"
android:scaleHeight="80%" //表示从高度80% 开始缩放,80%为图片高度最小值。level 0不可见。
android:scaleWidth="80%"/> //表示从宽度80% 开始缩放,80%为图片宽度最小值。level 0不可见。
参考:
ScaleDrawable
示例:
在scale.xml中:
-
<?xml version="1.0" encoding="utf-8"?>
-
<scale xmlns:android="http://schemas.android.com/apk/res/android"
-
android:scaleWidth="50%"
-
android:scaleHeight="50%"
-
android:drawable="@drawable/image1"
-
android:scaleGravity="center_vertical|center_horizontal"
-
>
-
</scale>
在layout中使用:
-
<ImageView
-
android:id="@+id/imgView"
-
android:src="@drawable/scale"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"/>
在代码中设置level:
-
ImageView imageView=(ImageView)findViewById(R.id.imgView);
-
ScaleDrawable scaleDrawable=(ScaleDrawable)imageView.getDrawable();
-
scaleDrawable.setLevel(1); //level 1的时候就是50%
//scaleDrawable.setLevel(0); //level 0不可见