2

可視性プロパティをそれぞれ「VISIBLE」と「GONE」に設定して、2 つの LinearLayouts を交換しようとしています。レイアウトがスワップされている間、アニメーションも使用しています。アニメーションが正常に完了し、正しいレイアウトが表示されます。ただし、可視性プロパティが「GONE」に設定されている以前のレイアウトは、表示されていなくてもクリックを受け取ります。同時に、「VISIBLE」のレイアウトは、「GONE」レイアウトがクリックできない領域でクリックされた場合にのみクリックを受け取ります。また、「VISIBLE」レイアウトで requestFocus メソッドを呼び出しています。しかし、それは役に立ちません。

さらに、アニメーション部分をスキップして可視性プロパティを設定するだけで、すべてが正しく機能します。

ここで何が欠けていますか?

4

1 に答える 1

2

ウィジェットをアニメーション化する場合は、レイアウトを変更して結果を「固定」する必要があります。それらを使用するだけで、表示される効果の一部が得られます。新しい場所に描画されますが、実際fillAfterは新しい場所にはありません。

そのため、アニメーションのfill*設定 ( など) をオフにすることから始めます。fillAfterアニメーションがどのように動作するかを確認してください。ほとんどの場合、クリックによって何がわかるかが視覚的に表示されます。

次に、アニメーションの終了時に制御を取得するように を設定し、AnimationListenerその時点で、ウィジェットとそのコンテナーに実際の変更を加えて、終了位置に影響を与えます。

既製のウィジェットではなくカスタム ビューをアニメーション化するため、非常に複雑な方法ではありますが、これが何を意味するかを示すサンプル プロジェクトを次に示します。

于 2010-03-25T16:43:19.693 に答える