Проблема с краской Android для разных API

У меня проблемы с Paint для разных API для Android.

Предполагается, что пользователь сможет рисовать буквы в области, которая отлично работает на API 8 и 10, но для API 16 и 17 линии выглядят совсем по-другому. Я покажу, используя изображения.

Вот как это должно выглядеть, API 8 .

Так выглядит API 16 .

Вот мой код для просмотра ничьей:

public class TouchDrawView extends View { private Paint mPaint; private ArrayList<Point> mPoints; private ArrayList<ArrayList<Point>> mStrokes; public TouchDrawView(Context context) { super(context); mPoints = new ArrayList<Point>(); mStrokes = new ArrayList<ArrayList<Point>>(); mPaint = createPaint(Color.BLACK, 14); } @Override public void onDraw(Canvas c) { super.onDraw(c); for(ArrayList<Point> points: mStrokes) { drawStroke(points, c); } drawStroke(mPoints, c); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getActionMasked() == MotionEvent.ACTION_MOVE) { mPoints.add(new Point((int) event.getX(), (int) event.getY())); this.invalidate(); } if(event.getActionMasked() == MotionEvent.ACTION_UP) { mStrokes.add(mPoints); mPoints = new ArrayList(); } return true; } private void drawStroke(ArrayList stroke, Canvas c) { if (stroke.size() > 0) { Point p0 = (Point)stroke.get(0); for (int i = 1; i < stroke.size(); i++) { Point p1 = (Point)stroke.get(i); c.drawLine(p0.x, p0.y, p1.x, p1.y, mPaint); p0 = p1; } } } public void clear() { mPoints.clear(); mStrokes.clear(); this.invalidate(); } private Paint createPaint(int color, float width) { Paint temp = new Paint(); temp.setStyle(Paint.Style.FILL_AND_STROKE); temp.setAntiAlias(true); temp.setColor(color); temp.setStrokeWidth(width); temp.setStrokeCap(Paint.Cap.ROUND); return temp; } } 

Ну, похоже, ваше приложение аппаратно ускорено, и в этом режиме некоторые функции, такие как setStrokeCap() (для строк), не поддерживаются, посмотрите: http://developer.android.com/guide/topics/graphics/hardware-accel. HTML # неподдерживаемый

Просто отключите аппаратное ускорение и повторите попытку. Вот как вы его отключите:

 <application android:hardwareAccelerated="false" ...>