动画在drawable中绘制到画布

时间:2015-09-17 07:18:23

标签: android animation canvas android-drawable

我有一个drawable,它使用onLevelChange绘制一个进度条,并调用draw()在画布底部画一条线。如何设置此线条的动画?

public class BorderProgressDrawable extends Drawable {

    private static final int MAX_LEVEL = 10000;

    private int mLevel = 0;
    private Paint mPaint;

    public BorderProgressDrawable(Context context) {
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setColor(context.getResources().getColor(R.color.accent));
        mPaint.setStrokeWidth((float) CommonMethods.dpToPx(context.getResources().getDisplayMetrics(), 4));
    }

    @Override
    public void draw(final Canvas canvas) {
        int width = canvas.getWidth();
        int height = canvas.getHeight();
        float visibleWidth = (((float) mLevel) / MAX_LEVEL) * width;
        canvas.drawLine(0, height, visibleWidth, height, mPaint);
    }

    @Override
    public void setAlpha(int i) {
        mPaint.setAlpha(i);
    }

    @Override
    public void setColorFilter(ColorFilter colorFilter) {
        if (colorFilter != null) mPaint.setColorFilter(colorFilter);
    }

    @Override
    public int getOpacity() {
        return mPaint.getAlpha();
    }

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

0 个答案:

没有答案