0

我有以下代码片段在应用程序中扩展 GLWallpaperService:

    @Override
    public void onOffsetsChanged(float xOffset, float yOffset,
            float xStep, float yStep, int xPixels, int yPixels) {
    super.onOffsetsChanged(xOffset,yOffset,xStep,yStep,xPixels,yPixels);
    VideoLiveWallpaper.xStep = xStep;
    VideoLiveWallpaper.yStep = yStep;
    Log.w("General", "xStep: " + xStep);
    Log.w("General", "yStep: " + yStep);

当我运行它时,我的理解是 xstep 应该返回一个介于 0 和 1 之间的值,基本上允许我通过将 xstep 值除以 1 来确定屏幕数量。但是,每次我在 Sony Xperia Ion 上运行它时,xstep 是返回为 -1。我有五个主屏幕设置,所以这不仅仅是单个主屏幕的默认设置。

我试过搜索谷歌,但没有看到其他人似乎有同样的问题。这是我特定手机中的错误吗?有没有更好的方法来确定主屏幕的数量以及壁纸在移动时应该滚动多少?

4

1 回答 1

0

我从来没有找到发生这种情况的原因,但我确实找到了另一段代码来解决这个问题。这是相关部分,以防它帮助其他人:

 if (xStep <= 0.0f && VideoLiveWallpaper.xStep == 0) {
      xStep = xOffset / 2; // originator didn't set step size, assume we're halfway

只要壁纸启动时主屏幕(中间屏幕)启动,它似乎就可以工作。这并不完美,但它比我假设 5 个屏幕(xStep = 0.25)的方法在所有情况下都为零时效果更好......

于 2013-09-20T13:17:45.533 回答