1

iOS にある素晴らしい 3D アコーディオン効果 ( https://github.com/xyfeng/XYOrigami ) を Androidに移植する予定です。

これまでのところ、かなり近いものがあります。ビューを折りたたむための「ピンチ トゥ フォールド」を使用したスクリーンショットを次に示します。

ご覧のとおり、2 つの反対側の「パネル」の間にスペースが残っています。プロセスは簡単です。

  1. メイン レイアウトのキャンバスを取得します
  2. レイアウトのすべてのビューを置き換えるカスタム サーフェス ビューを作成する
  3. 撮影したキャンバスを背景画像に設定
  4. このキャンバスを X パネル (ここでは 16) にカットします
  5. 計算されたマトリックスを使用して、すべての「パネル」でサーフェスビューを再描画します
  6. 「折りたたみ効果」を与えるためにピンチしながら行列を再計算します

変換行列は次のとおりです。

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

私は何を間違えていますか?反対側の「パネル」の間にこれらのスペースがまだあるのはなぜですか?

4

0 に答える 0