【问题标题】:Making android live wallpaper with parallax scrolling使用视差滚动制作安卓动态壁纸
【发布时间】:2014-12-27 11:36:33
【问题描述】:

我正在创建一个带有视差滚动的动态壁纸。我读过这篇文章:Parallax effect scrolling of live wallpaper background。但是当我更改桌面时,背景会以错误的方式移动(如果我从左到右更改桌面,图片会从右到左移动)。如何改变方向? 代码sn-p:

public void Init(Bitmap bitmap){
  bg = new BitmapFactory().decodeResource(context.getResources(), R.drawable.thunder);
  bg = Bitmap.createScaledBitmap(bg, (int)(width*1.4), height, true);
}

float dx = 0.0f; 
@Override
    public void onOffsetsChanged(float xOffset, float yOffset,
            float xStep, float yStep, int xPixels, int yPixels) {
        dx = (width - bg.getWidth()) * (1 - xOffset);
    } 

private void doDraw(Canvas canvas) {
    canvas.save();
    canvas.translate(dx, 0);
    canvas.drawBitmap(bg, 0, 0, null);

    canvas.restore();
}   

【问题讨论】:

    标签: android


    【解决方案1】:

    我知道这是一个老问题,但由于这在 Google 上的结果很高,所以您只需翻转翻译上的标志即可。

    canvas.translate(-dx, 0);
    

    这将有效地反转用户滑动时背景滚动的方向。希望这对其他人有帮助。

    【讨论】:

      【解决方案2】:

      这里的算法需要改一下:

      dx = (width - bg.getWidth()) * (1 - xOffset);
      

      应该改成类似于:

      dx = (width) * (xOffset);
      

      另一种方法是直接通过以下方式访问 canvas.drawBitmap() 方法:

      canvas.drawBitmap(bg, xPixels, 0, null);
      

      【讨论】:

        【解决方案3】:

        dx = (width - bg.getWidth()) * xOffset;

        地点:

        width - 画布宽度;
        bg - 位图

        【讨论】:

        • 这行得通,但我如何使滚动使画布到达背景边缘,仅在第一个和最后一个主页上?
        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多