現在、ビューをアニメーション化するときにハードウェア レイヤーを適切に使用する方法を考え出そうとしています。
ユーザーが子ビューをドラッグできるようにするViewGroupを実装しています。その後、子ビューを解放したときの位置にアニメーション化します(ViewPagerがページに落ち着く方法など)。この記事では、アニメーションの期間中のみハードウェア レイヤーを有効にする必要があると述べています。
私が抱えている問題は、ハードウェア レイヤーが有効になった後、Android がレイヤーを作成する必要があり、Galaxy Nexus で 70 ~ 100 ミリ秒かかることです。これは、ドラッグとアニメーションの間に遅延があると非常に目立つため、アニメーションを開始する直前にそれを行うことができないことを意味します。同じ理由で、ドラッグを開始するときにも有効にできません。
現在、この遅延はハードウェア レイヤーが最初に作成されたときにのみ存在するため、ビューがレイアウトに追加されるとすぐに作成されることが理想的です。View.buildLayer()を指摘されましたが、これにアプローチする方法がわかりません。
- これを達成する正しい方法は何ですか?
- 子ビューでオーバーライドして buildLayer() を呼び出すことができる ViewGroup のメソッドはありますか?
- ハードウェア レイヤーが何らかの方法で無効化され、さらに 70 ~ 100 ミリ秒の遅延が発生する可能性はありますか? そして、これをどのように処理しますか?