2012-10-20 21 views
5

Sto creando uno sfondo animato con scrolling di parallasse. Ho letto l'articolo: Parallax effect scrolling of live wallpaper background. Ma quando cambio desktop, lo sfondo si muove in modo errato (se cambio il desktop da sinistra a destra, l'immagine si sposta da destra a sinistra). Come cambiare direzione? Snippet di codice:Fare wallpaper live Android con scrolling di parallasse

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

risposta

1

L'algoritmo qui deve essere cambiato:

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

deve essere modificato in qualcosa di simile a:

dx = (width) * (xOffset); 

Un'alternativa sarebbe quella di accedere alla tela. metodo drawBitmap() direttamente tramite qualcosa del genere:

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

So che questo è un vecchio problema, ma poiché questo è un risultato elevato su Google, tutto ciò che devi fare è capovolgere il segno sul tuo traduttore.

canvas.translate(-dx, 0); 

Questo effettivamente invertire la direzione dei rotoli di sfondo quando l'utente fendenti. Spero che questo aiuti gli altri.

0

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

dove:

larghezza - Larghezza tela;
bg - bitmap

+0

Questo funziona, ma come faccio a causare lo scorrimento per causare la tela raggiungere i bordi del fondo, solo sulla prima e l'ultima pagina di casa? –

Problemi correlati