【问题标题】:Android live wallpaper farmulaAndroid动态壁纸农场
【发布时间】:2012-04-13 19:35:22
【问题描述】:

在动态壁纸中,我们有一个名为 onOffsetsChanged 的方法,当用户在手机屏幕上滑动时调用该方法,xOffset 的值从 0.1 更改为 0.9

现在我想做的是,当值低于 0.5 时

它可能返回不同的值

例如

0.5 --> 0.48

0.4 --> 0.46

0.3 --> 0.44

0.2 --> 0.42

0.1 --> 0.40

但当它从 0.5 增加时,它保持不变

0.9 --> 0.9

0.8 --> 0.8

0.7 --> 0.7

0.6 --> 0.6

有人可以帮我解决这个公式吗?我在这里无法得到任何逻辑

@Override
public void onOffsetsChanged(final float xOffset, final float yOffset, final float xOffsetStep, final float yOffsetStep, final int xPixelOffset, final int yPixelOffset) 
{
    super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
    Runnable offsetsChangedCommand = new Runnable() 
    {
        public void run() {
            if (xOffsetStep != 0f) 
            {
                glRenderer.setParallax(xOffset - 0.5f);
            }
        };
    };
    executor.execute(offsetsChangedCommand);
}

【问题讨论】:

    标签: android logic live-wallpaper


    【解决方案1】:

    可能有更好的方法,但我能想到的最简单的方法是:

    float actualOffset;
    if(xOffset>0.5f)
    {
        actualOffset=xOffset;
    }
    else
    {
        actualOffset=0.38f+(xOffset*0.2f);
    }
    
    glRenderer.setParallax(actualOffset- 0.5f);
    

    【讨论】:

    • 我不认为你打算将actualOffset声明为int
    • @Joshua Carmody 这将是我代码中的第三个错误。显然是时候收工了。
    • 可以理解,今天是星期五。 :-) 否则,您的代码可以工作,并且或多或少与我想出的解决方案相同,但发布的时间稍早。所以,+1。
    【解决方案2】:
    float myXOffset;
    if(xOffset <= 0.5) 
    {
        myXOffset = 0.38 + (xOffset / 5);
    } else {
        myXOffset = xOffset;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多