Intereting Posts
Интеграция Unity3D с Vuforia в приложение Cordova В Android / Gradle, как определить задачу, которая запускается только при создании конкретного buildType / buildVariant / productFlavor (v0.10 +) Ведение позиции Drag & Dropped при перезапуске Что происходит с задним стеком при повторном открытии активности при запускеMode = "singleTask"? В DiskLruCache из учебника android отсутствует множество методов. Тестирование Android-приложений для Android Не удалось найти информацию о поставщике для <пользовательского поставщика> Ошибка компиляции Android; Плагин Java был применен, не совместим с Android QuickBlox Android SDK 1.2 больше не работает в Android API до 14 Как разрешить каждый запрос API, поступающий от клиента (родной)? Ошибка сборки Gradle не может решить io.fabric Панель действий Android Sherlock показывает действия в выпадающем меню всегда Расположение сети Android занимает несколько часов, чтобы обновить местоположение Андроид нарисовать круг с 2 цветами (круговая диаграмма) Как создать ссылку на номер телефона на Android, которая включает в себя расширение

Проблема с краской 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" ...>