キャンバスに描画できるキッズアプリをセットアップしようとしています。
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;
}
}
最後に、選択したカラー ピッカーによって、このコードは異なります。基本的に、タッチ リスナーをカラー グローブに追加して、カラー ポップアップを表示します。ポップアップに「OK」ボタンがあると仮定すると、そのボタンにボタン リスナーを追加します。押されたら、変数「currentColor」を選択した色に変更します。
そのサンプル投稿で述べたように、Lines を使用してこれを実装することもできます。代わりに GestureDetector の使用を検討してください。このチュートリアルは、GestureDetector がどのように機能するかを正確に説明するのに役立ちます: http://developer.android.com/training/gestures/detector.html。