2016-01-08 98 views
1

我有一個ViewPager,我忽略onPageScrolled以接收用戶滾動的量。然後我需要根據從滾動方法收到的positionOffset來翻轉視圖。我想要實現這樣的事情。翻轉所選視圖旁邊的所有視圖。ViewPager中的傾斜/翻轉佈局

enter image description here

在我PageLayoutonDraw方法我有以下代碼試圖根據偏移收到歪斜畫布。

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    Matrix matrix = canvas.getMatrix(); 
    camera.save(); 
    camera.rotateX(skew); 
    camera.getMatrix(matrix); 
    camera.restore(); 
    canvas.concat(matrix); 
} 

看起來這只是從左邊傾斜的:

enter image description here

如何實現我從右邊同樣的效果?如果它不僅會扭曲它,而且會改變高度,所以它會給人輕微的翻轉感。

+0

與此類似:http://stackoverflow.com/questions/5354183/skewing-a-bitmap-only-in-the-vertical-direction? –

+0

謝謝!我在你的鏈接幫助下找出了它。事實證明,我需要一個不同的觀察角度來使其工作。 – nilsi

+0

@nilsi你能提供它的任何工作樣本嗎? – Rahil2952

回答

0

改變這樣的觀察視角使其工作。

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    Matrix matrix = canvas.getMatrix(); 
    camera.save(); 
    camera.rotateX(-skew); 
    camera.rotateY(0); 
    camera.rotateZ(0); 
    camera.getMatrix(matrix); 

    int centerX = canvas.getWidth()/2; 
    int centerY = canvas.getHeight()/2; 
    matrix.preTranslate(-centerX, -centerY); //This is the key to getting the correct viewing perspective 
    matrix.postTranslate(centerX, centerY); 

    camera.restore(); 
    canvas.concat(matrix); 
}