0

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

我有一个布局,它有一个 ImageView,看起来像这样: 在此处输入图像描述

带有字母的绿色背景是图像视图,画布应覆盖并允许用户在其上绘制。另外我想允许用户通过按下颜色球来改变颜色描边。

我该如何继续呢?

4

2 回答 2

1

这里的答案可能会帮助您允许用户使用画布: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。

于 2013-08-20T17:19:58.973 回答
1

取linearlayout并将imageview转换为linearlayout背景色。将您的自定义视图添加到此线性布局中,并将 ondraw 方法覆盖到该视图类。

像这样的东西:

<LinearLayout
    background:@drawable/foo">

    <com.packagename.customview
    android:width="match_parent"
    android:height="value">
    >
    </com.packagename.customview>
</LinearLayout>

创建 customview 类并在其中实现绘图部分。

对于颜色选择器,只需使用此链接:https ://code.google.com/p/android-color-picker/

于 2013-08-20T17:22:41.907 回答