Android Drawable Resource学习(十)、ScaleDrawable

对另一个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一样。

描述
topPut the object at the top of its container, not changing its size.
bottomPut the object at the bottom of its container, not changing its size.
leftPut the object at the left edge of its container, not changing its size. This is thedefault.
rightPut the object at the right edge of its container, not changing its size.
center_verticalPlace object in the vertical center of its container, not changing its size.
fill_verticalGrow the vertical size of the object if needed so it completely fills its container.
center_horizontalPlace object in the horizontal center of its container, not changing its size.
fill_horizontalGrow the horizontal size of the object if needed so it completely fills its container.
centerPlace the object in the center of its container in both the vertical and horizontal axis, notchanging its size.
fillGrow the horizontal and vertical size of the object if needed so it completely fills itscontainer.
clip_verticalAdditional 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_horizontalAdditional 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不可见

 

 




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值