Webdeveloper_Jelle
Webdeveloper_Jelle

Reputation: 2856

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?

Upvotes: 0

Views: 823

Answers (2)

Jai
Jai

Reputation: 1984

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;
            }
        });

Upvotes: 1

D.J
D.J

Reputation: 1559

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

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

Upvotes: 1

Related Questions