2012-10-20 60 views
5

我正在用视差滚动制作动态壁纸。我读过这篇文章:Parallax effect scrolling of live wallpaper background。但是当我改变桌面时,背景移动错误(如果我从左向右改变桌面,画面从右向左移动)。如何改变方向? 代码片段:需要改变制作安卓视频滚动动态壁纸

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(); 
} 

回答

1

在这里的算法:

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

应改为类似于:

dx = (width) * (xOffset); 

另一种方法是访问画布。 drawBitmap()直接通过如下方法:

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

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

canvas.translate(-dx, 0); 

这将有效地扭转用户滑动时背景滚动的方向。希望这有助于他人。

0

dx =(宽度-bg .getWidth())* xOffset;

其中:

宽度 - 帆布宽度;
BG - 位

+0

这工作,但如何使滚动,使画布达到背景的边缘,仅在第一个和最后的主页? –