【问题标题】:Custom progress bar with different height不同高度的自定义进度条
【发布时间】:2015-11-13 16:24:45
【问题描述】:

谁能帮我创建一个类似这样样式的进度条:

我知道这是一个常见问题并且可以找到解决方案,但我没有看到进度条比其他部分高。

那么有人可以帮我创建这个吗?

【问题讨论】:

标签: android android-view android-progressbar


【解决方案1】:

在@pskink 代码的帮助下,我设法为这个问题创建了一个解决方案。所以这里是代码,我希望它对将来的人有所帮助!

public class ProgressDrawable extends Drawable {
    private final int mForeground;
    private final int mBackground;
    private final Paint mPaint = new Paint();
    private final RectF mSegment = new RectF();

    public ProgressDrawable(int fgColor, int bgColor) {
        mForeground = fgColor;
        mBackground = bgColor;
    }

    @Override
    protected boolean onLevelChange(int level) {
        invalidateSelf();
        return true;
    }

    @Override
    public void draw(Canvas canvas) {
        float level = getLevel() / 10000f;
        Rect b = getBounds();

        float gapWidth = b.height();
        float segmentWidth = b.width();
        mSegment.set(0, 0, segmentWidth * level, b.height());
        mPaint.setColor(mForeground);

        mSegment.set(0, b.height() / 3, segmentWidth, b.height() - (b.height() / 3));
        mPaint.setColor(mBackground);
        canvas.drawRect(mSegment.left, mSegment.top, mSegment.right, mSegment.bottom, mPaint);
    }

    @Override
    public void setAlpha(int alpha) {
    }

    @Override
    public int getIntrinsicHeight() {
        return 3;
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSLUCENT;
    }
}

及用法:

Drawable d = new ProgressDrawable(getActivity().getResources().getColor(R.color.toolbar_text_blue), getActivity().getResources().getColor(R.color.toolbar_text_blue));
                    dataProgress.setProgressDrawable(d);
                    dataProgress.setProgress(percent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2016-01-25
    • 2016-05-06
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多