2014-12-11 3 views
2

У меня есть некоторые проблемы с android.graphics.path.
Я развиваю игру. У меня есть Пути. Они не меняют размеры, формы. Я рисую их на холст. Я перемещаю их в кадре каждой игры. Поэтому я смещение: дхPath.offset() не работает на каждом устройстве

Он отлично работает на многих устройствах:

  • Nokia X Dual Sim (Android 4.4.4 Cyanogenmode) (уровень API 19)
  • Samsung Galaxy Duos (GT-S7562) (Android 4.0.4) (уровень API 15)
  • Sony X8 (Android 2.3.7 Cyanogenmode) (уровень API 10)
  • и на некоторых других

Но это не работает хорошо на некоторых других устройствах:

  • Samsung Galaxy Ace II (Android 4.1.2) (уровень API 16)
  • Nokia X Dual Sim (Nokia X платформа 1,2) (Android Студия показывает: уровень API 16)
  • и некоторые другие Я установил смещение в моем методе ничьей:

    path.offset (dX, 0);

Не работает означает: он не перемещается. Система выводит его в исходное положение.
Но когда она работает, она работает спуск (движется, и это быстро)

Я также попытался с матрицах:

translateMatrix = new Matrix(); 
translateMatrix.setTranslate(dX, 0); 
path.transform(translateMatrix); 

То же самое произошло.

я вижу что-то на сайте разработчика в Android: http://developer.android.com/reference/android/graphics/Path.html
недействительным смещение (флоат Dx, Dy) поплавка
Offset путь через (Dx, Dy), возвращает истину в случае успеха.
??? Это должно быть изменено, поэтому здесь ошибка

Это может в связи с ускоренным режимом Оборудование:
https://groups.google.com/forum/#!topic/android-developers/HgGVSbSghpk

Я поддерживаю от уровня Api 9, но я повернулся Ускоренный режим Harware. (Он работает с API уровня 14)
Проблема также возникает, когда я выключаю ее.
Я не понимаю, почему это иногда работает над уровнем API 14, а иногда и почему?

Он говорит, аппаратное ускорение режим поддерживает Путь:
http://android-developers.blogspot.de/2011/03/android-30-hardware-acceleration.html

Знаете ли вы, что проблема с этим? Что мне делать?

то, что смешивает его больше: Это работает на любом устройстве (но работает медленнее - он отстает):

Canvas temp = new Canvas(bitmap); 
path.draw(temp); 
originalCanvas.drawBitmap(bitmap, 0, 0, myPaint); 

Так

  1. я сделать временный холст
  2. Я установил его на растровое изображение
  3. Я рисую на этом холсте (он будет на растровом изображении)
  4. Я рисую растровое изображение на исходном холсте

Почему это работает?

Пожалуйста, помогите мне, как мне заставить работать.

+0

Примечание: У меня была только проблема на уровне 16 API – Tomi

ответ

0

Я сделал это работает, но не с офсетной

я сделал моей функции смещения:

  1. он сохраняет последнюю позицию, и вычисляет новый с смещением.
  2. Тогда он создает новый Путь без использования оператора

    расчетNewPoints();
    wallpath.rewind();
    wallpath.moveTo (новыйPosX, новыйPosY);
    .
    .
    .
    wallpath.close();

Он хорошо :)

0

На уровне 16 API на манифест добавить следующий атрибут к приложению <application android:hardwareAccelerated="false" ...>

Смежные вопросы