ScaleDrawable

作者: 难得糊涂与君勉 | 来源:发表于2018-01-13 10:39 被阅读125次
介绍

其他Draw文章参考:
Android中Drawable整体介绍

前言

一个Drawable,可以根据当前级别值更改另一个Drawable的大小。 您可以控制Drawable的宽度和高度根据关卡变化的程度,以及重力来控制放置在整个容器中的位置。 最常用来实现诸如进度条之类的东西。

默认级别可以使用android:level属性从XML中指定。 未指定此属性时,默认级别为0,对应于零高度和/或宽度,具体取决于为android.R.styleable#ScaleDrawable_scaleWidth scaleWidth和android.R.styleable#ScaleDrawable_scaleHeight scaleHeight指定的值。 在运行时,级别可以通过setLevel(int)来设置。

Good idea

ScaleDrawable通过level控制,如果通过Handler一样类似的配合使用,就能实现了动态效果,这样比起动画来也是不错的。

一些必要的说明

Level属性从0到10000,默认是0,但是如果是0的话,就是不可见的。
如果ScaleDrawable的级别越大,那么内部的Drawable看起来就越大。
如果ScaleDrawable的等级为了10000,那么就没有缩放效果。
如果ScaleDrawable的XML中所定义的缩放比例越大,那么内部的Drawable看起来就越小。

语法

<?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>

定义缩放可绘制对象。这必须是根元素。
属性:
xmlns:android
字符串。必备。定义 XML 命名空间,其必须是 "http://schemas.android.com/apk/res/android"。

android:drawable

可绘制对象资源。必备。引用可绘制对象资源。

android:scaleGravity

关键字。指定缩放后的重力位置。
必须是以下一个或多个(用 '|' 分隔)常量值:


image.png

android:scaleHeight

百分比。缩放高度,表示为可绘制对象边界的百分比。值的格式为 XX%。例如:100%、12.5% 等。

android:scaleWidth

百分比。缩放宽度,表示为可绘制对象边界的百分比。值的格式为 XX%。例如:100%、12.5% 等

测试例子

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
       android:drawable="@drawable/test"
       android:scaleGravity="bottom"
       android:scaleHeight="50%"
       android:scaleWidth="50%"
    >
</scale>

在XML中使用

 <View
        android:id="@+id/view_my_view"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="140dp"
        android:background="@drawable/scale_drawable"
        />

在代码中得到

 View testView = findViewById(R.id.view_my_view);
        ScaleDrawable scaleDrawable = (ScaleDrawable) testView.getBackground();
        scaleDrawable.setLevel(100);
        testView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(DrawableActivity.this,"点击了有效区域",Toast.LENGTH_SHORT).show();
            }
        });

结果如图:


image.png

通过测试,你点击图片可以触发点击事件,由于view是铺满全屏的,所以你点击旁边空白处也可以触发点击事件。

相关文章

  • 第六章(3) Android中的Drawable

    8. ScaleDrawable ScaleDrawable对应于 标签,它可以根据自己的等级将指定的Drawab...

  • ScaleDrawable

    其他Draw文章参考:Android中Drawable整体介绍 前言 一个Drawable,可以根据当前级别值更改...

网友评论

    本文标题:ScaleDrawable

    本文链接:https://www.haomeiwen.com/subject/metcoxtx.html