1
2package com.android.browser.view;
3
4import com.android.browser.R;
5
6import android.content.Context;
7import android.graphics.Canvas;
8import android.graphics.drawable.Drawable;
9import android.util.AttributeSet;
10import android.widget.ProgressBar;
11
12
13public class StopProgressView extends ProgressBar {
14
15    Drawable mOverlayDrawable;
16    Drawable mProgressDrawable;
17    int mWidth;
18    int mHeight;
19
20    /**
21     * @param context
22     * @param attrs
23     * @param defStyle
24     * @param styleRes
25     */
26    public StopProgressView(Context context, AttributeSet attrs, int defStyle, int styleRes) {
27        super(context, attrs, defStyle, styleRes);
28        init(attrs);
29    }
30
31    /**
32     * @param context
33     * @param attrs
34     * @param defStyle
35     */
36    public StopProgressView(Context context, AttributeSet attrs, int defStyle) {
37        super(context, attrs, defStyle);
38        init(attrs);
39    }
40
41    /**
42     * @param context
43     * @param attrs
44     */
45    public StopProgressView(Context context, AttributeSet attrs) {
46        super(context, attrs);
47        init(attrs);
48    }
49
50    /**
51     * @param context
52     */
53    public StopProgressView(Context context) {
54        super(context);
55        init(null);
56    }
57
58    private void init(AttributeSet attrs) {
59        mProgressDrawable = getIndeterminateDrawable();
60        setImageDrawable(mContext.getResources()
61                .getDrawable(R.drawable.ic_stop_holo_dark));
62    }
63
64    public void hideProgress() {
65        setIndeterminateDrawable(null);
66    }
67
68    public void showProgress() {
69        setIndeterminateDrawable(mProgressDrawable);
70    }
71
72    @Override
73    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
74        super.onLayout(changed, left, top, right, bottom);
75        mWidth = (right - left) * 2 / 3;
76        mHeight = (bottom - top) * 2 / 3;
77    }
78
79    @Override
80    protected void onDraw(Canvas canvas) {
81        super.onDraw(canvas);
82        if (mOverlayDrawable != null) {
83            int l = (getWidth() - mWidth) / 2;
84            int t = (getHeight() - mHeight) / 2;
85            mOverlayDrawable.setBounds(l, t, l + mWidth, t + mHeight);
86            mOverlayDrawable.draw(canvas);
87        }
88    }
89
90    public Drawable getDrawable() {
91        return mOverlayDrawable;
92    }
93
94    public void setImageDrawable(Drawable d) {
95        mOverlayDrawable = d;
96    }
97
98}
99