2011-12-20 23 views
0

私は自分のゲームのレベル選択メニューのためにある種のギャラリービューを作成しようとしています。左右に3つのアイテムがあり、左右に2つのボタンがあります。右ボタンを押すと3つのアイテムがすべて左に移動し、左ボタンがクリックされるとアイテムが右に移動します。私は変換アニメーションandroid:fillAfter atributeを使用して問題を発見しました:もしそれがtrueであれば、最初にボタンをクリックして項目を移動し、必要な場所に移動し、そこにとどまります。しかし、2回目のクリックでは、最初の位置から移動を開始します。実際の座標は最初の変換後に変更されません。何か不足していますか?どのように私はその目標を達成することができますか?順次翻訳と拡大縮小アニメーションを適用する

答えて

0

android:fillAfterビューの属性は変更されません。アニメーションが完了したら、それらが描かれていることを意味しますが、物理的な属性は同じです。翻訳したアニメーションは、物理的にどこに配置されているかによってアニメーション化されている可能性があります。また、ビューは実際に移動した場所にはないので、ユーザーがタッチするとタッチは登録されません。ユーザーがどこにいたかに触れると登録されます。

ここで行う必要があるのは、現在表示されている場所から、必要な場所に移動することです。

解決策:

左から右へ:

TranslateAnimation (Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0); 

右から左へ:この場合

TranslateAnimation (Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0); 

を、私は0%から、左から右にアニメーション化しています〜100%である。 fillAfterを有効にすると、ビューは表示されます(表示されます)。その後、親に対して100%から0%の右から左にアニメートしています。

+0

あなたの答えをありがとうが、それは私が実際にやっていることです。毎回アイテムに100%左オフセットを適用しますが、毎回最初の位置から移動します。アニメーションの終了後にビューの座標を再定義する方法はありますか? – Egor

+0

ハニカム前のアニメーションでは、自分でプロパティを変更せずに行う方法はないと思います。現在の位置 'onAnimationEnd'を読み込み、その位置を変更してから、' layout'パスを強制するカスタムビューが必要な場合があります。 – DeeV

+0

@ Egor:私はおそらくここではっきりと述べていますが、これが唯一のことです。 'fillBefore'属性をtrueにも適用しようとするかもしれません。デフォルトではtrueですが、falseに設定すると(fillEnabledをtrueに設定すると)、アニメーションの初期属性はアニメーションの前に適用されません。 – DeeV

関連する問題