ScaleDrawable

ScaleDrawable_第1张图片
介绍

其他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看起来就越小。

语法



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

android:drawable

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

android:scaleGravity

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


ScaleDrawable_第2张图片
image.png

android:scaleHeight

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

android:scaleWidth

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

测试例子




在XML中使用

 

在代码中得到

 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是铺满全屏的,所以你点击旁边空白处也可以触发点击事件。

你可能感兴趣的:(ScaleDrawable)