2011-11-07 124 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來完成這個操作,而這個按鈕會很好地滑動到屏幕的另一側,當動畫完成時,它會很高興地重新回到它的原始位置,所以你在Animation上找到setFillAfter(true)方法並再次嘗試,這次按鈕保持在它的動畫位置,並且你可以點擊它來驗證 - 嘿!按鈕怎麼沒有點擊?問題在於,動畫在按鈕被繪製的地方改變,但不在容器內物理存在按鈕的位置。如果你想點擊按鈕,你必須點擊它曾經居住的位置。或者,作爲一個更有效的解決方案(對用戶來說只是一個更有用的解決方案),你必須寫您的代碼在動畫結束時實際更改佈局中按鈕的位置

正是由於這些原因,我們決定在Honeycomb中提供一個新的動畫系統,其中一個基於「屬性動畫」的想法。

+0

setFillAfter(true)我已經完成了這個。它的上半部分工作得很好,而不是爲了下半部分。 – Noby

+0

+1因爲這個答案是正確的。 @Noby,setFillAfter(true)只能保證在動畫之後繪圖將保持其最終狀態。然而,它並沒有改變3.0版本之前的動畫系統從不改變對象的實際邊界的事實,所以你的Button實例仍然在原來的矩形中,儘管它的繪製方式不同。原始的矩形是觸摸事件將被捕獲的地方。 – Devunwired