2

Android でビューのスキュー アニメーションを作成したいと考えています。したがって、私は長方形のビューを持っています (これは通常/開始状態です)。最後に、次のようになります。
ここに画像の説明を入力

の変換android.view.animation利用したパッケージでこんなことができます。したがって、メソッドを作成して使用し、これをカスタム アニメーションに適用してから、このアニメーションをビューで開始できます。これでOKです。TYPE_MATRIXMatrixpreSkewMatrix

しかし

問題は、これを でやりたいということですObjectAnimatorandroid.view.animationパッケージの使用は推奨されていないためです。ObjectAnimatorしかし、クラスに関するこの問題の解決策を得ることができません。

がある場合ImageView、メソッドsetImageMatrixを使用できますObjectAnimator(また、各因子に対応する行列を評価するためのカスタムを作成します)が、クラスのサブクラスではなくMatrixEvaluator、クラスでこの問題の解決策を取得したいと考えています。Viewそして主な理由は、TextViewたとえば、 には のような public メソッドがなくsetMatrix、その解決策も取得したいからですTextView。したがって、基本ビュー クラスのソリューションを取得することが主な目的です。

別の解決策があります。たとえば、メソッドを使用するカスタムを作成SkewTextViewonDrawますcanvas.skew

ただし、これはパッケージを使用するよりも悪い解決策です。これは、スキューしたいサブクラスandroid.view.animationのラッパーを作成する必要があるためです。View

Viewですから、どうすればaをゆがめることができるのかわかりませんObjectAnimator(クラスにはorViewのようなパブリック メソッドがないため)。setSkewsetMatrix

この問題をどのように解決しますか?
この問題を解決する方法について何か考えはありますか?
この問題の解決策はありObjectAnimatorますか?

どんな助け(または考えでも)は大歓迎です
ありがとう

4

2 に答える 2

2

サブクラス化しないと、これは少し難しいかもしれません。私の主なアイデアは、TimeAnimatorを使用することです。これは、 Camera (Matrix 変換を使用できます)と組み合わせて時間コールバックを提供します。または、TimeAnimator を使用して、傾斜させたいビューからビットマップを作成し、元のビューを非表示にして、マトリックスを適用する各 TimeAnimator ステップでビットマップを描画できます。ただし、フレームごとに新しいビットマップを作成する必要があるため、これが最適な方法であるかどうかはわかりません

編集:いいえ、以下のコメントに記載されているように、カメラアプローチはそれを行う方法ではありません

于 2014-10-16T14:28:06.247 に答える