How to move multiple bitmaps in single canvas android

Viewed 3784

I want to move multiple bitmap on the same canvas. Using below code i can move one bitmap when touch on the screen but, i can't identify the touch event on the bitmap so that i couldn't move specific bitmap.

public class DrawTopologyView extends View {
Paint paint = new Paint();
Bitmap zed_bitMap, lamp_on_bitmap, fan_on_bitmap, ac_on_bitmap;

int START_X = 5;
int START_Y = 5;

float x = 500-24,y=START_Y;

public DrawTopologyView(Context context) {
    super(context);
    zed_bitMap = BitmapFactory.decodeResource(context.getResources(),
            R.drawable.zed);
    lamp_on_bitmap = BitmapFactory.decodeResource(context.getResources(),
            R.drawable.lamp_on);
    fan_on_bitmap = BitmapFactory.decodeResource(context.getResources(),
            R.drawable.fan_on);
    ac_on_bitmap = BitmapFactory.decodeResource(context.getResources(),
            R.drawable.ac_on);

}

@Override
public void onDraw(Canvas canvas) {

    int CENTER_X = canvas.getWidth() / 2 - 24;
    int CENTER_Y = canvas.getHeight() / 2 - zed_bitMap.getHeight();

    int FULL_WIDTH = canvas.getWidth();
    int FULL_HEIGHT = canvas.getHeight();

    canvas.drawBitmap(zed_bitMap, CENTER_X, CENTER_Y, paint);
    paint.setStrokeWidth(3);
    paint.setPathEffect(new DashPathEffect(new float[] { 5, 5, 5, 5 }, 0));

    canvas.drawBitmap(ac_on_bitmap, START_X, START_Y, paint);
    canvas.drawLine(START_X + 48, START_Y + 48, CENTER_X + 10,
            CENTER_Y + 10, paint);

    canvas.drawLine(250, START_Y + 48, CENTER_X + 10, CENTER_Y + 10, paint);
    canvas.drawBitmap(lamp_on_bitmap, 250 - 24, START_Y, paint);

    canvas.drawLine(500, START_Y + 48, CENTER_X + 10, CENTER_Y + 10, paint);
    canvas.drawBitmap(fan_on_bitmap, x,y, paint);


    // canvas.drawLine(FULL_WIDTH-40,FULL_HEIGHT-120,CENTER_X+30,CENTER_Y+30,
    // paint);
    // canvas.drawBitmap(light_off_bitmap, FULL_WIDTH-60-24,FULL_HEIGHT-130,
    // paint);

}

public boolean onTouchEvent(MotionEvent event) {

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN: {

    }
        break;

    case MotionEvent.ACTION_MOVE: {
        x = (int) event.getX();
        y = (int) event.getY();

        invalidate();
    }

        break;
    case MotionEvent.ACTION_UP:

        x = (int) event.getX();
        y = (int) event.getY();
        Log.d(APPConstant.LOG_TAG, ".................." + x + "......" + y);
        Toast.makeText(getContext(), ".................." + x + "......" + y,Toast.LENGTH_SHORT).show();
        invalidate();
        break;
    }
    return true;
}



}
1 Answers
Related