2011-11-07 24 views
6

私は回転アニメーションを使用して45度回転し、メッセージを焼くクリックリスナーに適用したボタンを持っています。Onlclickリスナーが正しく動作していません..?

ボタンの上部50%をクリックすると、トーストが表示されます。 ボタンの50%をクリックすると、何も表示されません。

ここアニメーションコードは、事前に

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="45" 
    android:toDegrees="45" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="0" android:fillAfter="true"> 
</rotate> 

df

おかげで.....!

答えて

3

これはAndroidのアニメーションの制限だと確信しています。新しいアニメーションシステムを実装することで、3.0以降で修正されました。 http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

は「最後に、以前のアニメーションは、ターゲットオブジェクトの外観を変更...しかし、彼らは実際にあなたがこの問題に遭遇している可能性があり、オブジェクト自体を変更していないのをしてみましょう:

はここに読みます。ボタンを画面の一方の側から他方の側に移動したいとします。TranslateAnimationを使用すると、画面の反対側に向かってボタンがうまく滑ります。アニメーションが完了すると、アニメーションのsetFillAfter(true)メソッドを見つけてもう一度やり直してください。このボタンは、アニメーション化された場所の所定の位置にとどまります。そのボタンをクリックすると、ねえ!どうしてボタンがクリックされていないのですか?問題は、ボタンが描画された場所でアニメーションが変更されますが、ボタンが物理的にコンテナ内に存在しない場所が変更されることです。ボタンをクリックしたい場合は、それまでに使用していた場所をクリックする必要があります。または、より効果的なソリューション(ユーザーにとってより便利なもの)として、アニメーションが終了したらレイアウト内のボタンの位置を実際に変更するコード

このような理由から、私たちはHoneycombに新しいアニメーションシステムを提供することを決めました。これは、「プロパティアニメーション」の考え方に基づいています。

+0

setFillAfter(true)これを実行しました。なぜなら、下部のためではなく上部のためのその作業上の罰金はなぜですか? – Noby

+0

+1この回答は正しいためです。 @Noby、setFillAfter(true)は、アニメーション後に図面が最終状態にとどまることを保証します。ただし、3.0より前のアニメーションシステムではオブジェクトの実際の境界が決して変更されないため、Buttonインスタンスは元の長方形に残ります。元の矩形は、タッチイベントがキャプチャされる場所です。 – Devunwired

関連する問題