我有一個自定義的View子類,允許用戶勾畫出一箇中文字符。線座標被保存到被縮放到單位大小的浮點數組(x1,y1,x2,y2,x2,y2,x3,y3 ...),即所有座標都是0到1之間的值。這可以使後面的草圖在不同大小的視圖中進行動畫處理。它還有助於比較在同一座標空間中繪製的圖像與另一個動畫。座標垂直翻轉,以幫助進行比較。drawLines方法在縮放的畫布上產生奇怪的效果
這也就意味着,當線路中的視圖的OnDraw方法勾勒畫布具有擴大規模和drawLines通話繪製草圖之前翻譯。
在辦公室正常的所有設備(Android的2.3〜)一切顯示,和仿真器是好的了。但是,如下圖所示的兩個用戶與三星Galaxy S2手機,兩者誰最近報告升級到安卓4.0,發現該行出現「卡比」:
我試着開關遠離drawLines使用路徑對象,但在這種情況下,用戶報告,線路根本沒有出現!
下面是如何配置漆:
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中的Paint/Canvas行爲是否發生了變化?
並不需要縮放kTCDrawPathWidth,paint.setStrokeWidth(kTCDrawPathWidth/frame.left); –
路徑寬度設置爲這是成正比的座標值系統,在這種情況下爲0.018f。在正常情況下(我的設備)和這種奇怪的情況下,線寬似乎是正確的。 –