我正在尝试建立一个可以在画布上绘画的儿童应用程序。

我有一个具有ImageView的布局,看起来像这样:


带字母的绿色背景是imageview,画布应在该处覆盖并允许用户在其上进行绘制。另外,我想允许用户通过按色球体来更改颜色笔触。

我该如何继续?

最佳答案

这里的答案可能有助于您允许用户使用画布:https://stackoverflow.com/a/7401699/2698582.

要允许用户使用不同的颜色绘画,可以使用如下颜色选择器:https://code.google.com/p/android-color-picker/,或用Google搜索其他颜色选择器。

如果定义新的点类并更改此示例代码的一部分,则可以添加此颜色更改:

private class ColoredPoint {
    public int x, y, color = Color.BLACK;
}

public class DrawView extends View implements OnTouchListener {
    List<ColoredPoint> points = new ArrayList<ColoredPoint>();
    Paint paint = new Paint();
    int currentColor = Color.BLACK;

    public DrawView(Context context) {
        super(context);
        setFocusable(true);
        setFocusableInTouchMode(true);
        this.setOnTouchListener(this);
        paint.setColor(currentColor);
    }

    @Override
    public void onDraw(Canvas canvas) {
        for (ColoredPoint point : points) {
            paint.setColor(point.color);
            canvas.drawCircle(point.x, point.y, 2, paint);
        }
    }

    public boolean onTouch(View view, MotionEvent event) {
        ColoredPoint point = new ColoredPoint();
        point.color = currentColor;
        point.x = event.getX();
        point.y = event.getY();
        points.add(point);
        invalidate();
        return true;
    }
}


最后,根据您选择的颜色选择器,此代码将有所不同。基本上,您将在色球中添加触摸侦听器以显示颜色弹出框。假设弹出窗口有一个“确定”按钮,您将向该按钮添加一个按钮侦听器。按下时,将变量“ currentColor”更改为所选颜色。

如该示例帖子中所述,您也可以使用Lines来实现。您可以考虑改用GestureDetector。本教程应有助于准确解释GestureDetector的工作方式:http://developer.android.com/training/gestures/detector.html.

10-06 11:24