【问题标题】:Android: Using onDoubleTap to draw a circleAndroid:使用onDoubleTap画圆
【发布时间】:2015-03-19 19:21:20
【问题描述】:

我创建了一个扩展 ImageView 的公共类,名为 ZoomInZoomOut。在这个视图中,放下一根手指允许用户拖动图像。两根手指合拢和合拢允许用户放大或缩小。这些都可以正常工作。

现在我想双击以在用户触摸的确切 x 和 y 坐标处绘制一个圆圈。出于某种原因,下面的代码没有画一个圆圈……什么也没有发生。

class MyGestureDetector extends SimpleOnGestureListener {



    @Override
    public boolean onDoubleTap(MotionEvent event) {


        Bitmap bmOverlay = Bitmap.createBitmap(containerWidth,
               containerHeight,
                Bitmap.Config.ARGB_8888);
        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(bmOverlay, matrix, null);
        canvas.drawCircle(event.getX(),event.getY(),
                100, p);

        return true;
    }



    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }
}

【问题讨论】:

    标签: java android gesture ondraw gesturedetector


    【解决方案1】:

    在绘制位图后,您没有对它做任何事情。您还尝试将位图绘制到从位图创建的画布上。

    您应该覆盖 onDraw 并在那里绘制您的位图,同时使用 onDoubleTap 根据需要更新位图。

    【讨论】:

    • 我应该在哪里覆盖 onDraw?在显示 imageView 的 Activity 中?
    • 您需要创建一个自定义视图来直接处理视图中的绘图,而不是尝试绘制和移动位图。查看developer.android.com/training/custom-views/custom-drawing.html
    • 实际上,这个 MyGestureDetector 类在一个扩展 ImageView 的类中。那么我应该制作另一个自定义视图来处理绘图吗?
    • 你可以直接使用 ImageView 的 onDraw。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多