作者:mobiledu2502924121 | 来源:互联网 | 2023-05-18 12:01
Iwanttomovemultiplebitmaponthesamecanvas.Usingbelowcodeicanmoveonebitmapwhentouch
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 个解决方案