View Javadoc

1   /***
2    *     Ambient - A music player for the Android platform
3    Copyright (C) 2007 Martin Vysny
4    
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9    
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14  
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18  package sk.baka.ambient.views;
19  
20  import sk.baka.ambient.commons.MiscUtils;
21  import android.content.Context;
22  import android.graphics.Canvas;
23  import android.graphics.Paint;
24  import android.util.AttributeSet;
25  import android.widget.ProgressBar;
26  
27  /***
28   * Adds support for showing a text in the progress bar.
29   * 
30   * @author Martin Vysny
31   */
32  public class TextProgressBar extends ProgressBar {
33  
34  	/***
35  	 * The text being shown on the progress bar.
36  	 */
37  	private String text;
38  
39  	/***
40  	 * @param context
41  	 */
42  	public TextProgressBar(Context context) {
43  		super(context);
44  	}
45  
46  	/***
47  	 * @param context
48  	 * @param attrs
49  	 */
50  	public TextProgressBar(Context context, AttributeSet attrs) {
51  		super(context, attrs);
52  	}
53  
54  	/***
55  	 * @param context
56  	 * @param attrs
57  	 * @param defStyle
58  	 */
59  	public TextProgressBar(Context context, AttributeSet attrs, int defStyle) {
60  		super(context, attrs, defStyle);
61  	}
62  
63  	/***
64  	 * Returns currently shown text.
65  	 * 
66  	 * @return the text.
67  	 */
68  	public String getText() {
69  		return text;
70  	}
71  
72  	/***
73  	 * Sets the text currently being shown.
74  	 * 
75  	 * @param text
76  	 *            non-<code>null</code> text.
77  	 */
78  	public void setText(final String text) {
79  		this.text = MiscUtils.emptyIfNull(text);
80  		invalidate();
81  	}
82  
83  	private final Paint textColor = new Paint();
84  	{
85  		textColor.setColor(0xFF000000);
86  		textColor.setAntiAlias(true);
87  	}
88  
89  	@Override
90  	protected synchronized void onDraw(Canvas canvas) {
91  		super.onDraw(canvas);
92  		canvas.drawText(text, 3, 14, textColor);
93  	}
94  
95  	/***
96  	 * Sets the text currently being shown.
97  	 * 
98  	 * @param id
99  	 *            the text resource ID.
100 	 */
101 	public void setText(int id) {
102 		setText(getResources().getString(id));
103 	}
104 }