简体   繁体   English

在Android上随机移动可点击的按钮

[英]Making a randomly moving clickable button on Android

I'm looking to create randomly moving clickable buttons in Android (for a childrens game). 我正在寻找在Android(针对儿童游戏)中创建随机移动的可点击按钮。 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/ 我按照此网站上的代码在屏幕上创建了一些随机移动的圆圈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 谢谢

You can use drawText method for Canvas to draw text: 您可以使用Canvas的drawText方法绘制文本:

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: 要单击视图,您只需要向其添加onClickListener:

        myAnimatedWordsView.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {

           }
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM