android - Path.offset() 不适用于所有设备

标签 android graphics

我对 android.graphics.path 有一些问题。
我正在开发一个游戏。我有一些路径。他们不会改变那里的大小和形状。我把它们画在 Canvas 上。我在每个游戏的框架中移动它们。所以我设置了一个偏移量: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)
  • 和其他一些
    我在我的绘制方法中设置了偏移量:

    path.offset(dX, 0);

  • 不工作的意思是:它不动。系统将其拉至原始位置。
    但是当它起作用时,它会下降(移动,而且速度很快)

    我也试过矩阵:
    translateMatrix = new Matrix();
    translateMatrix.setTranslate(dX, 0);
    path.transform(translateMatrix);
    

    同样的事情发生了。

    我在 Android 的开发者网站上看到了一些东西:
    http://developer.android.com/reference/android/graphics/Path.html
    无效偏移( float dx, float dy)
    将路径偏移 (dx,dy),成功时返回 true。
    ???它一定已经改变了,这就是为什么这里是一个错误

    它可能与硬件加速模式有关:
    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);
    

    所以
  • 我做了一个临时 Canvas
  • 我在位图上设置
  • 我在那幅 Canvas 上画画(它将在位图上)
  • 我将位图绘制到原始 Canvas 上

  • 为什么它在这里工作?

    请帮助我如何使它工作。

    最佳答案

    我让它工作了,但没有偏移

    我制作了自己的偏移函数:

  • 它保存最后一个位置,并用
    抵消。
  • 然后它在不使用 operator new 的情况下创建一个新路径

    计算新点();
    wallpath.rewind();
    wallpath.moveTo(newPosX, newPosY);
    .
    .
    .
    wallpath.close();

  • 它表现良好:)

    关于android - Path.offset() 不适用于所有设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422681/

    相关文章:

    java - 如何在 Android 的 XML 编辑器中将特殊字符作为文本插入?

    android - 如何使用gradle为味道配置不同的buildType

    algorithm - IDAT PNG block ,第一个字节意外,我哪里错了?

    r - 优化 Plotly 平行图

    android - "Can' t 设置设备 - 无法 't install the admin app"- 设备所有者应用程序的 QR 码配置时出错

    java - 如何在 Android 中以编程方式检查蓝牙网络共享状态

    java - 按下按钮但未到达单击事件时应用程序崩溃

    math - 如何将球体平滑地转换为半球体

    iphone - 如何使用 GLshorts 表示法线坐标或纹理坐标?

    android - 将图像叠加到相机预览 SurfaceView