自定义不确定进度可绘制缩放

时间:2011-11-09 10:09:14

标签: android progress-bar drawable scale

尝试使用将使用垂直缩放的自定义不确定drawable。它出来看起来很奇怪,好像最下面的像素行是唯一缩放的像素,所以看起来像是这样。

enter image description here

我希望它可以垂直缩放,因此它看起来像传统的糖果条纹不确定进度条。我需要它可扩展的原因是它将覆盖的区域将被加权,所以我不能有静态大小。

设置最小高度似乎没有任何改变。将抽屉更换为9-patch螺丝向上翻转(它变成一个png覆盖整个区域而不是水平拼接。最后,我需要水平拼接和垂直缩放。

任何人都有我的想法?

编辑:

我在ProgressBar中看到,他们将所有位图包装起来:

        final Bitmap tileBitmap = ((BitmapDrawable) drawable).getBitmap();
        if (mSampleTile == null) {
            mSampleTile = tileBitmap;
        }

        final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape());

        final BitmapShader bitmapShader = new BitmapShader(tileBitmap,
                Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
        shapeDrawable.getPaint().setShader(bitmapShader);

        return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT,
                ClipDrawable.HORIZONTAL) : shapeDrawable;

换句话说,强制您的位图使用Clamp进行平铺,而不是尊重原始平铺设置。我确信这是我不知道的原因。我能想到的唯一想法就是编写自己的进度条类来完成我自己的平铺。

1 个答案:

答案 0 :(得分:0)

可能你应该使用模式。请参阅文档drawable-resourse,请查看 文档的“XML Bitmap”部分。有一个tileMode =“重复”我认为这将解决你的问题。

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />