【问题标题】:custom indeterminate progress drawable scaling自定义不确定进度可绘制缩放
【发布时间】:2011-11-09 10:09:13
【问题描述】:

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

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

设置最小高度似乎没有任何改变。将可绘制对象更改为 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 强制您的位图平铺,而不是尊重您的原始平铺设置。我确信有一个我不知道的原因。我能想到的唯一想法就是编写自己的进度条类来进行自己的平铺。

【问题讨论】:

    标签: android progress-bar drawable scale


    【解决方案1】:

    也许你应该使用模式。请参阅文档drawable-resourse 请查看 文档的“XML 位图”部分。有一个 tileMode="repeat" 我认为这会解决你的问题。

    <?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"] />
    

    【讨论】:

    • 只是添加了一些东西,尝试了这个,但它不起作用。谢谢你的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多