iOS にある素晴らしい 3D アコーディオン効果 ( https://github.com/xyfeng/XYOrigami ) を Androidに移植する予定です。
これまでのところ、かなり近いものがあります。ビューを折りたたむための「ピンチ トゥ フォールド」を使用したスクリーンショットを次に示します。
ご覧のとおり、2 つの反対側の「パネル」の間にスペースが残っています。プロセスは簡単です。
- メイン レイアウトのキャンバスを取得します
- レイアウトのすべてのビューを置き換えるカスタム サーフェス ビューを作成する
- 撮影したキャンバスを背景画像に設定
- このキャンバスを X パネル (ここでは 16) にカットします
- 計算されたマトリックスを使用して、すべての「パネル」でサーフェスビューを再描画します
- 「折りたたみ効果」を与えるためにピンチしながら行列を再計算します
変換行列は次のとおりです。
private Matrix getFoldingMatrix(int angle, int startFrom,int position) {
int move = (int) (
(mWidth - (Math.cos(angle * Math.PI / 180) * mWidth)) * position
) +1*position; //overlap of 1px the panels and not get space between panels
final Camera camera = new Camera();
final Matrix matrix = new Matrix();
camera.save();
camera.rotateY(angle);
camera.getMatrix(matrix);
if(position%2==1){
move += (int) (
(mWidth - (Math.cos(angle * Math.PI / 180) * mWidth))
) ;
matrix.preTranslate(-mWidth, -mHeight/2);
matrix.postTranslate(startFrom+mWidth-move, mHeight/2);
} else {
matrix.preTranslate(0f, -mHeight/2);
matrix.postTranslate(startFrom-move, mHeight/2);
}
camera.restore();
return matrix;
}
私は何を間違えていますか?反対側の「パネル」の間にこれらのスペースがまだあるのはなぜですか?