【发布时间】:2014-12-11 12:16:07
【问题描述】:
我在使用 android.graphics.path 时遇到了一些问题。
我正在开发一个游戏。我有一些路径。他们不会改变那里的大小和形状。我把它们画在画布上。我在每个游戏的框架中移动它们。所以我设置了一个偏移量:dx
它在许多设备上都能正常工作:
- Nokia X Dual Sim(Android 4.4.4 Cyanogenmode)(API 级别 19)
- 三星 Galaxy Duos (GT-S7562)(Android 4.0.4)(API 级别 15)
- Sony X8(Android 2.3.7 Cyanogenmode)(API 级别 10)
- 以及其他一些
但它在其他一些设备上效果不佳:
- 三星 Galaxy Ace II (Android 4.1.2)(API 级别 16)
- Nokia X Dual Sim(Nokia X 平台 1.2)(Android Studio 显示:API 级别 16)
-
以及其他一些 我在 draw 方法中设置了偏移量:
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)
将路径偏移 (dx,dy),成功时返回 true。
???一定是变了,所以这里出错了
可能与硬件加速模式有关:
https://groups.google.com/forum/#!topic/android-developers/HgGVSbSghpk
我从 Api 级别 9 开始支持,但我开启了 Harware 加速模式。 (它适用于 API 级别 14)
当我关闭它时,问题也会出现。
我不明白为什么它有时可以在 API 级别 14 上运行,而有时为什么不行?
上面写着,硬件加速模式支持Path:
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);
所以
- 我做了一个临时画布
- 我在位图上设置了
- 我在画布上画画(它将在位图上)
- 我将位图绘制到原始画布上
为什么它在这里工作?
请帮助我如何使它工作。
【问题讨论】:
-
注意:我只有 API 级别 16 的问题