2012-10-20 3 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) * (xOffset); 

:

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

이 비슷한을 변경해야합니다. drawBitmap() 메서드를 다음과 같이 직접 호출하십시오.

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

이 문제는 오래 전부터 알고 있었지만 Google에서 높은 결과를 얻었으므로 번역 할 때 표시가 필요합니다.

canvas.translate(-dx, 0); 

이렇게하면 사용자가 스 와이프 할 때 배경이 스크롤되는 방향을 효과적으로 뒤집을 수 있습니다. 희망이 다른 사람들을 돕는다.

0

= DX ( - BG .getWidth()) * xoffset이;

여기서

- 캔버스 폭;
BG - 비트 맵

+0

이 작동하지만 어떻게 스크롤 캔버스는 첫 번째와 마지막 홈 페이지에, 배경의 가장자리에 도달의 원인이 될 수 있습니까? –

관련 문제