简体   繁体   中英

Canvas Android, how can i do an OnTouchEvent when a bitmap is touched instead of the full screen?

I have this function:

@Override
public boolean onTouchEvent(MotionEvent event1)
{
    if(event1.getAction()==MotionEvent.ACTION_DOWN){
        if(!player.getPlaying() && newGameCreated && reset)
        {
            player.setPlaying(true);
            player.setUp(true);
        }
        if(player.getPlaying())
        {

            if(!started)started = true;
            reset = false;
            player.setUp(true);
        }
        return true;
    }
    if(event1.getAction()==MotionEvent.ACTION_UP)
    {
        player.setUp(false);
        return true;
    }

    return super.onTouchEvent(event1);
}

This function will do it on full screen.
But how do i make it only for when my bitmap is touched?

float x = event1.getX();
float y = event1.getY();

if(rect.contains((int)x, (int)y))
{
    // touch in image
}
//where rect is rectangle of bitmap

You could implement the parent layout touch and pass it to your view (where you binded your canvas) as child layout. You could follow as per below :

1) Implement parent layout touch event

yourparentlayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                // this method will pass your parent touch to your canvas parent view
                canvasparent.dispatchTouchEvent(event);

                return true;
            }
        });

2) Implement onTouch listener to your canvasparent

canvasparent.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                Rect viewRect = new Rect();
                yourimageview.getGlobalVisibleRect(viewRect);
                if (!viewRect.contains((int) event.getRawX(), (int) event.getRawY())) {
                    Log.d("Touch : "," Touching Outside Of your canvasparent");
                }else{
                    Log.d("Touch : ","Touching Inside Of your canvasparent");
                }
                return false;
            }
        });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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