您的位置:首页 > 移动开发 > Android开发

Android Drawable Resource学习(十)、ScaleDrawable

2015-07-25 07:33 477 查看
对另一个drawable资源,基于当前的level,进行尺寸变换的drawable。

文件位置:

res/drawable/filename.xml


文件名即资源名编译数据类型:

指向
ScaleDrawable
的指针。资源引用:In Java:
R.drawable.filename


In XML:
@[package:]drawable/filename
语法:

<span class="pun"><?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pun">?></span><span class="pln">
</span><span class="tag"><</span><a target=_blank style="color: rgb(202, 0, 0);">scale</a><span class="pln">
    </span><span class="atn">xmlns:android</span><span class="pun">=</span><span class="atv">"http://schemas.android.com/apk/res/android"</span><span class="pln">
    </span><span class="atn">android:drawable</span><span class="pun">=</span><span class="atv">"@drawable/</span><em>drawable_resource</em><span class="atv">"</span><span class="pln">
    </span><span class="atn">android:scaleGravity</span><span class="pun">=</span><span class="atv">["top"</span><span class="pln"> | </span><span class="atv">"bottom"</span><span class="pln"> | </span><span class="atv">"left"</span><span class="pln"> | </span><span class="atv">"right"</span><span class="pln"> | </span><span class="atv">"center_vertical"</span><span class="pln"> |
                          </span><span class="atv">"fill_vertical"</span><span class="pln"> | </span><span class="atv">"center_horizontal"</span><span class="pln"> | </span><span class="atv">"fill_horizontal"</span><span class="pln"> |
                          </span><span class="atv">"center"</span><span class="pln"> | </span><span class="atv">"fill"</span><span class="pln"> | </span><span class="atv">"clip_vertical"</span><span class="pln"> | </span><span class="atv">"clip_horizontal"</span><span class="pln">]
    </span><span class="atn">android:scaleHeight</span><span class="pun">=</span><span class="atv">"</span><em>percentage</em><span class="atv">"</span><span class="pln">
    </span><span class="atn">android:scaleWidth</span><span class="pun">=</span><span class="atv">"</span><em>percentage</em><span class="atv">"</span><span class="pln"> </span><span class="tag">/></span>
元素:
<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%。

示例:

<span class="pun"><?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pun">?></span><span class="pln">
</span><span class="tag"><scale</span><span class="pln"> </span><span class="atn">xmlns:android</span><span class="pun">=</span><span class="atv">"http://schemas.android.com/apk/res/android"</span><span class="pln">
    </span><span class="atn">android:drawable</span><span class="pun">=</span><span class="atv">"@drawable/logo"</span><span class="pln">
    </span><span class="atn">android:scaleGravity</span><span class="pun">=</span><span class="atv">"center_vertical|center_horizontal"</span><span class="pln">
    </span><span class="atn">android:scaleHeight</span><span class="pun">=</span><span class="atv">"80%"</span><span class="pln"> //表示从高度80% 开始缩放,80%为图片高度最小值。level 0不可见。
    </span><span class="atn">android:scaleWidth</span><span class="pun">=</span><span class="atv">"80%"</span><span class="tag">/></span><span class="pln"> </span><span class="pln">//表示从宽度80% 开始缩放,80%为图片宽度最小值。level 0不可见。</span>
参考:

ScaleDrawable


示例:

在scale.xml中:

[java] view
plaincopy

<?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中使用:

[java] view
plaincopy

<ImageView

android:id="@+id/imgView"

android:src="@drawable/scale"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

在代码中设置level:

[java] view
plaincopy

ImageView imageView=(ImageView)findViewById(R.id.imgView);

ScaleDrawable scaleDrawable=(ScaleDrawable)imageView.getDrawable();

scaleDrawable.setLevel(1); //level 1的时候就是50%

<pre name="code" class="java"> //scaleDrawable.setLevel(0); //level 0不可见</pre><br>

<pre></pre>

<p></p>

<pre></pre>

<br>

<img src="http://img.my.csdn.net/uploads/201212/03/1354516551_4610.jpg" alt=""><br>

<p></p>

<p><br>

</p>

<pre></pre>



<div style="padding-top:20px">

<p style="font-size:12px;">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>

</div>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: