Хорошо, вот что я бы сделал:
Создание пользовательского элемента управления, расширяющего кнопку. Я не собираюсь делать красивую графику для вас, но это даст вам основную идею:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.Button;
public class CounterButton extends Button{
protected int count=0;
protected final Paint myTextPaint = new Paint();
protected final Paint myCirclePaint = new Paint();
public CounterButton(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.ic_dialog_email));
this.myCirclePaint.setARGB(150, 255, 0, 0);
this.myTextPaint.setARGB(150, 255, 255, 255);
}
@Override
protected void onDraw(Canvas canvas) {
if(count!=0){
canvas.drawCircle((float) (this.getWidth()*.75), (float) (this.getHeight()*.4), this.getHeight()/5, myCirclePaint);
canvas.drawText(Integer.toString(count), (float) (this.getWidth()*.75), (float) (this.getHeight()*.4), this.myTextPaint);
}
}
}
Очистите размеры текста, который вы рисуете, расположение круга (и добавьте границу и т. Д.), И у вас есть собственный элемент управления. Вы можете расширить его, чтобы установить фон в xml или динамически, и у вас будет многократно используемый элемент управления со счетчиком чисел в круге.
тогда в вашем коде вы можете сделать:
CounterButton cb=(CounterButton) findViewById(R.id.whateverYouGaveItInXML);
cb.count=SomeNewNumber;
cb.invalidate;
инвалид будет перерисовывать изображение с новым значением в круге.
Я использовал кнопку в том случае, если вы хотите, чтобы она была легко активируемой и все такое - но вы могли бы также легко расширить вид, если вы просто делаете вид.