java - Android:在位图上画一个圆圈

标签 java android bitmap draw gesture

我正在尝试制作一个在位图上绘制圆圈的应用程序。现在,我有一个可以生成圆圈的按钮。相反,我想在用户双击(而不是按下按钮)的位置绘制圆圈。我怎样才能以编程方式做到这一点?以下是目前为止的 Activity 内容:

public static final String KEY_PATH = "img.jpg";
private ZoomInZoomOut touch;
private Bitmap bitmap;

@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();
        Button draw = (Button) findViewById(R.id.draw);
        draw.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v)
            {
                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.BLUE);
                p.setStrokeWidth(2);
                p.setStyle(Paint.Style.STROKE);
                canvas.drawBitmap(bitmap,new Matrix(),null);
                canvas.drawCircle(1000, 1000, 20, p);
               touch.setImageBitmap(bmOverlay);
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

最佳答案

您必须实现GestureDetector并将代码放入单击/双击中。在这里您可以用位图替换按钮。

TestActivity.java

iv.setOnClickListener(new OnClickListener() {           
                @Override
                public void onClick(View v) {
                    //putyour first activity call.
                }
    }

iv.setOnTouchListener(new OnTouchListener() {
             GestureDetector gestureDetector = new GestureDetector(new MyGestureDetector(context));
         @Override
         public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
         }
});

现在您必须创建 GestureDetector.java 类。

public class MyGestureDetector extends SimpleOnGestureListener {
public Context context;
public String phno;

public MyGestureDetector(Context con)
{
    this.context=con;       
}
@Override
public boolean onDown(MotionEvent e) {
    return super.onDown(e);
}
public MyGestureDetector(Context con) {
    this.context=con;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
    System.out.println("in Double tap");

    return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
    System.out.println("in single tap up");
            //put your second activity.
    return super.onSingleTapUp(e);
}   
}

关于java - Android:在位图上画一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128374/

相关文章:

java - Eclipse Java Maven 项目禁用 dafault 项目方面

java - Android 网络服务 asp .asmx

Android比较/搜索多张图片

java - Android 只能向下和横向移动位图

android - 使用 Overlays 时如何缓存 android.graphics.path 或 Bitmap?

java - 在java中生成不重复的随机数

java - Spring Boot Rest 中的 Jersey 名称绑定(bind)技术

android - 如何动态改变进度条背景android的颜色

java - 仅java.runtimeException API 19至15

java - 查找数组中的模数