2012-10-20 42 views
5

Tôi đang tạo hình nền động bằng cuộn di chuyển. Tôi đã đọc bài báo: Parallax effect scrolling of live wallpaper background. Nhưng khi tôi thay đổi máy tính để bàn nền di chuyển sai cách (Nếu tôi thay đổi máy tính để bàn từ trái sang phải, di chuyển hình ảnh từ phải sang trái). Làm thế nào để thay đổi hướng? Đoạn mã:Làm hình nền động android với di chuyển sai lệch

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

Trả lời

1

Thuật toán ở đây cần phải được thay đổi:

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

nên được thay đổi một cái gì đó tương tự như:

dx = (width) * (xOffset); 

Một thay thế sẽ được truy cập vào canvas. phương thức drawBitmap() trực tiếp thông qua một cái gì đó như thế này:

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

Tôi biết đây là một vấn đề cũ, nhưng vì đây là kết quả cao trên Google, tất cả những gì bạn cần làm là lật dấu trên bản dịch của mình.

canvas.translate(-dx, 0); 

này một cách hiệu quả sẽ đảo ngược hướng cuộn nền khi người dùng vuốt. Hy vọng điều này sẽ giúp người khác.

0

dx = (chiều rộng - bg .getWidth()) * xOffset;

nơi:

rộng - chiều rộng vải;
bg - bitmap

+0

Điều này có tác dụng, nhưng làm cách nào để cuộn làm cho các khung tiếp cận nền, chỉ trên trang chủ đầu tiên và cuối cùng? –

Các vấn đề liên quan