为什么xstep会返回为负值

时间:2013-08-30 19:44:49

标签: java android live-wallpaper

我在应用程序中有以下代码片段扩展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。我有五个主屏幕设置,所以这不仅仅是一个主屏幕的默认设置。

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

1 个答案:

答案 0 :(得分: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)在所有情况下都更好...