我在android.graphics.path上遇到了一些问题。
我正在开发一款游戏,我有一些路径。它们的大小和形状不会改变。我将它们绘制到画布上,然后在每一帧中移动它们。所以我设置了一个偏移量: dx。
在许多设备上都可以正常工作:
- Nokia X Dual Sim (Android 4.4.4 Cyanogenmode)(API level 19)
- Samsung Galaxy Duos (GT-S7562)(Android 4.0.4)(API level 15)
- Sony X8 (Android 2.3.7 Cyanogenmode)(API level 10)
- 还有其他一些设备
但是在一些其他设备上效果不佳:
- Samsung Galaxy Ace II (Android 4.1.2)(API level 16)
- Nokia X Dual Sim (Nokia X platform 1.2)(Android Studio显示:API level 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
void offset(float dx, float dy)
通过(dx,dy)偏移路径,成功返回true。
???它必须已经改变了,这就是为什么会出现错误的原因。
这可能与硬件加速模式有关:
https://groups.google.com/forum/#!topic/android-developers/HgGVSbSghpk
我支持API级别9,但我已经打开了硬件加速模式。(它适用于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);
所以
- 我创建一个临时画布
- 我将其放在位图上
- 我在该画布上绘制(它将出现在位图上)
- 我将该位图绘制到原始画布上
为什么这里能工作?
请帮我如何使其工作。