自定义ProgressBar

来源:互联网 发布:sai绘画软件官网 编辑:程序博客网 时间:2024/05/17 04:27


package com.demo;import android.content.Context;import android.graphics.Canvas;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.View;public class ProgressBar extends View implements Runnable{    private int offset;    private int count;    private int mWidth;    private Drawable mBar;    private int len;    public ProgressBar(Context context)    {        super(context);        initProgressBar(context);    }    public ProgressBar(Context context, AttributeSet attrs)    {        super(context, attrs);        initProgressBar(context);    }    private void initProgressBar(Context context)    {        mBar = context.getResources().getDrawable(R.drawable.progressbar);        mWidth = mBar.getIntrinsicWidth();        new Thread(this).start();    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)    {        setMeasuredDimension(200, 30);        count = 2 * getMeasuredWidth() / mWidth;        offset = len = count * mWidth - getMeasuredWidth();    }    @Override    protected void onDraw(Canvas canvas)    {        for (int i = 0; i < count; i++)        {            mBar.setBounds(i * mWidth - offset, 0, (i + 1) * mWidth - offset,                    30);            mBar.draw(canvas);        }        offset = offset > 0 ? offset - 3 : len;    }    @Override    public void run()    {        while (!Thread.currentThread().isInterrupted())        {            try            {                Thread.sleep(100);            }            catch (InterruptedException e)            {                e.printStackTrace();            }            postInvalidate();        }    }}



原创粉丝点击