基本的に、次のようなグリッド(画像として保存)があります:
私がする必要があるのは、指でこのグリッドに描画し (複数のストローク)、この新しいビットマップを表示して保存することです。
さらに、描画中にストロークの座標を取得して、そこからデータを計算できるようにする必要があります (グリッド全体がゾーンに分割されます)。
座標部分は単純で、Rect()、getX()、getY() を使用して行いました。
int getZoneLocation(int x, int y)
{
Rect rectangle = new Rect();
amslerView.getGlobalVisibleRect(rectangle);
String coords = "Left:%d Top:%d Right:%d Bottom:%d ActionBarHeight:%d StatusBarHeight:%d";
// Zone 1 Rectangle
Log.i("Rectangle Coordinates",
String.format(coords, rectangle.left, rectangle.top, rectangle.right, rectangle.bottom, getActionBarHeight(), getStatusBarSize()));
Rect outerMostRect = new Rect(rectangle);
int xOffset = rectangle.width() / 10;
int yOffset = rectangle.height() / 10;
Log.i("Rectangle Attribs", "Width: " + xOffset + "Height: " + yOffset);
// Zone 2 Rectangle
Rect zone2Rectangle = new Rect(outerMostRect.left + xOffset, outerMostRect.top + yOffset, outerMostRect.right - xOffset, outerMostRect.bottom
- yOffset);
Log.i("Zone 2 Coordinates", "" + zone2Rectangle.left + " " + zone2Rectangle.top + " " + zone2Rectangle.right + " " + zone2Rectangle.bottom);
// Zone 3 Rectangle
Rect zone3Rectangle = new Rect(zone2Rectangle.left + xOffset, zone2Rectangle.top + yOffset, zone2Rectangle.right - xOffset,
zone2Rectangle.bottom - yOffset);
// Zone 4 Rectangle
Rect zone4Rectangle = new Rect(zone3Rectangle.left + xOffset, zone3Rectangle.top + yOffset, zone3Rectangle.right - xOffset,
zone3Rectangle.bottom - yOffset);
// Zone 5 Rectangle
Rect zone5Rectangle = new Rect(zone4Rectangle.left + xOffset, zone4Rectangle.top + yOffset, zone4Rectangle.right - xOffset,
zone4Rectangle.bottom - yOffset);
// Check from inside out for point existence
if (zone5Rectangle.contains(x, y))
{
return 5;
} else if (zone4Rectangle.contains(x, y))
{
return 4;
} else if (zone3Rectangle.contains(x, y))
{
return 3;
} else if (zone2Rectangle.contains(x, y))
{
return 2;
} else if (outerMostRect.contains(x, y))
{
return 1;
}
return -1;
}
基本的に、このグリッドを表示する ImageView から localVisibleRect を取得し、このメソッドを呼び出して、内部で必要なデータを onTouchListener に取得するだけでした。
今、私にとっての本当のジレンマは、これと一緒に指の描画を実装する方法と、これを実装するために正確に何を使用するかです。
これまでのところ、SurfaceView、Canvas、さらには GestureOverlayView (これはばかげています) を見てきました。
私は API の例から FingerPaint のデモも見ましたが、それは空のビューに描画されており、ImageView でこれを実装する方法が正直にわかりません。
どんな提案も非常に貴重です。