有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:使用onDraw在用户点击的任何地方画一个圆圈

我正在开发一个应用程序,当用户双击图像时,它会在屏幕上画一个圆圈。我希望圆圈出现在用户点击屏幕的精确x和y坐标处。现在,它在屏幕的右上角绘制图像。我必须实现onTouchEvent吗?如何实现

以下是触控式听众:(触控是一种图像视图)

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_display);
Intent intent = getIntent();
String path = getIntent().getStringExtra(ImageDisplayActivity.KEY_PATH);
try {
    java.io.FileInputStream in = this.openFileInput(path);
    bitmap = BitmapFactory.decodeStream(in);
    bitmap = bitmap.copy(bitmap.getConfig(), true);
    touch = (ZoomInZoomOut)findViewById(R.id.IMAGEID);
    touch = arrangeImageView(touch);
    touch.setImageBitmap(bitmap);
    in.close();
    touch.setOnTouchListener(new View.OnTouchListener() {
        GestureDetector gestureDetector = new
                GestureDetector(new MyGestureDetector(context));
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    });

} catch (Exception e) {
    e.printStackTrace();
}
}

这是应该画圆圈的课程

class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {
public Context context;

public MyGestureDetector(Context con)
{
    this.context=con;
}

@Override
public boolean onDoubleTap(MotionEvent event) {
     Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(),
     bitmap.getHeight(),
     bitmap.getConfig());
     Canvas canvas = new Canvas(bmOverlay);
     Paint p = new Paint();
     p.setAntiAlias(true);
     p.setColor(Color.RED);
     p.setStrokeWidth(2);
     p.setStyle(Paint.Style.STROKE);
     canvas.drawBitmap(bitmap,new Matrix(),null);
     canvas.drawCircle(event.getX(),event.getY(),
            100, p);
     touch.setImageBitmap(bmOverlay);
    return false;
}
}

共 (0) 个答案