Making a randomly moving clickable button on Android

丶灬走出姿态 提交于 2019-12-23 05:50:37

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!