6

視差スクロールでライブ壁紙を作成しています。記事を読みました:ライブ壁紙の背景の視差効果のスクロール. しかし、デスクトップを変更すると、背景が間違った方向に移動します (デスクトップを左から右に変更すると、画像が右から左に移動します)。向きを変えるには?コードスニペット:

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

3 に答える 3

4

これは古い問題であることは承知していますが、これは Google での高い結果であるため、翻訳の記号を反転するだけで済みます。

canvas.translate(-dx, 0);

これにより、ユーザーがスワイプしたときに背景がスクロールする方向が効果的に逆になります。これが他の人に役立つことを願っています。

于 2013-06-12T15:28:57.700 に答える
1

ここでアルゴリズムを変更する必要があります。

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

次のようなものに変更する必要があります。

dx = (width) * (xOffset);

別の方法は、次のような方法で canvas.drawBitmap() メソッドに直接アクセスすることです。

canvas.drawBitmap(bg, xPixels, 0, null);
于 2012-10-20T08:48:21.957 に答える