ユーザーが漢字をスケッチできるようにするカスタム View サブクラスがあります。ライン座標は float 配列 (x1、y1、x2、y2、x2、y2、x3、y3...) に保存され、単位サイズにスケーリングされます。つまり、すべての座標は 0 と 1 の間の値です。これにより、後でスケッチを別のサイズのビューでアニメートするときに簡単になります。また、同じ座標空間にある別のアニメーションで描かれたものを比較するのにも役立ちます。また、その比較を支援するために、座標は垂直方向に反転されます。
つまり、View の onDraw メソッドで線をスケッチする場合、drawLines を呼び出してスケッチをプロットする前に、Canvas を拡大して移動する必要があります。
オフィス内のすべてのデバイス (Android ~2.3) ですべてが正常に表示され、エミュレーターも問題ありません。ただし、Samsung Galaxy S2 携帯電話を使用している 2 人のユーザーは、最近 Android 4 にアップグレードしたと報告しており、以下に示すように線が「ずれている」ように見えることに気付きました。
drawLines から Path オブジェクトを使用するように切り替えてみましたが、この場合、ユーザーは線がまったく表示されないと報告しました!
ペイントの設定方法は次のとおりです。
paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(kTCDrawPathWidth);
paint.setStrokeCap(Cap.ROUND);
paint.setStrokeJoin(Join.BEVEL);
paint.setColor(Color.WHITE);
そして、これは私がスケッチをプロットする場所です:
RectF frame = getDrawingBounds();
canvas.drawRoundRect(frame, 3, 3, drawAreaFramePaint);
canvas.drawRoundRect(frame, 3, 3, drawAreaFrameBorderPaint);
canvas.save();
canvas.translate(frame.left, frame.top+frame.height());
canvas.scale(frame.width(), -frame.height());
for (TCPath path : paths)
canvas.drawLines(path.getLines(), paint);
if (drawingPath!=null)
canvas.drawLines(drawingPath.getLines(), paint);
canvas.restore();
明らかな問題はありますか?Android 4 でペイント/キャンバスの動作に変更はありましたか?