问题
I'm looking to create randomly moving clickable buttons in Android (for a childrens game). I followed the code on this website to create some randomly moving circles around the screen http://www.techrepublic.com/blog/software-engineer/bouncing-a-ball-on-androids-canvas/
with the Animated words view changed to this:
public class AnimatedWordsView extends ImageView {
private Context myContext;
int [] xCoOrd = {-1, -2, -3, -4, -5, -6, -7, -8};
int [] yCoOrd = {-1, -2, -3, -4, -5, -6, -7, -8};
int [] xVeloc = {4, 8, 12, 16, 20, 20, 20, 20};
int [] yVeloc = {2, 4, 6, 8, 10, 12, 14, 16};
private Handler handler;
private final int FRAME_RATE = 30;
public AnimatedWordsView(Context context, AttributeSet attributes){
super(context, attributes);
myContext = context;
handler = new Handler();
}
private Runnable run = new Runnable() {
@Override
public void run() {
invalidate();
}
};
protected void onDraw(Canvas canvas){
BitmapDrawable [] word = {(BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_blue), (BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_green),
(BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_red), (BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_yellow),
(BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_green), (BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_blue),
(BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_red), (BitmapDrawable) myContext.getResources().getDrawable(R.drawable.word_bubble_yellow)};
for(int count = 0; count <=7; count++ ) {
if (xCoOrd[count] < 0 && yCoOrd[count] < 0) {
xCoOrd[count] = this.getWidth() / 2;
yCoOrd[count] = this.getHeight() / 2;
} else {
xCoOrd[count] += xVeloc[count];
yCoOrd[count] += yVeloc[count];
}
if ((xCoOrd[count] > this.getWidth() - word[count].getBitmap().getWidth()) || (xCoOrd[count] < 0)) {
xVeloc[count] = xVeloc[count] * -1;
}
if ((yCoOrd[count] > this.getHeight() - word[count].getBitmap().getHeight()) || (yCoOrd[count] < 0)) {
yVeloc[count] = yVeloc[count] * -1;
}
canvas.drawBitmap(word[count].getBitmap(),xCoOrd[count],yCoOrd[count],null);
}
handler.postDelayed(run, FRAME_RATE);
}
What i'm looking for is something that does something similar to what this does, but allows me to add text to the circles and make them clickable
Is there any way to do this?
Thanks
回答1:
You can use drawText method for Canvas to draw text:
public void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)
Something like this:
Paint paint = new Paint();
canvas.drawPaint(paint);
paint.setColor(Color.MY_COLOR);
paint.setTextSize(24);
canvas.drawText("My Text", x, y, paint);
To click the view you just need to add a onClickListener to it:
myAnimatedWordsView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
来源:https://stackoverflow.com/questions/29503094/making-a-randomly-moving-clickable-button-on-android