2012-01-15 81 views
2

我想在我的應用中包含一個簡單動畫,其中 視圖 小部件移動到另一個 視圖 小部件。Android - TranslateAnimate一個視圖到另一個視圖

我寫的代碼是:

TranslateAnimation animate = new TranslateAnimation(view1.getTranslationX(), view1.getTranslationY(), view2.getTranslationX(), view2.getTranlationY()); 
animate.setDuration(500); 
view1.startAnimation(animate); 

的問題是,view1ViewSwitcher繼承而view2自定義視圖是Button。 getTranslation()不給這種方法例外。

我怎樣才能得到視圖的屏幕上的位置,這是做動畫的正確方法嗎?

注:ViewSwitcherListView項目的一部分,所以它也需要越過其邊界ListView才能到Button(以防萬一有差別)。

回答

1

方法,如getTranslationX()getTranslationY()簡單地返回了可以應用到實際的視圖位置的偏移值,而不是該位置本身。您將要使用像getLeft()getTop()方法來獲取視圖相對於其父的X/Y位置值(在這種情況下,ListView)。

如果您需要更多的全局座標,請使用getLocationInWindow()getLocationOnScreen()來獲取視圖相對於全局顯示層次結構的位置。這些方法不返回的位置,而是填進你提供的參數int[]

所有這些方法可以在任何View調用。

HTH

+0

感謝您的回答。根據我所知道的,它可以工作,但是因爲'view1'在'ListView'中,它就會消失。我認爲它移動到了所需的位置,但是因爲它在ListView中的其他視圖背後,我看不到它。我嘗試了bringToFront(),但這並沒有幫助。有任何想法嗎 ? – 2012-01-16 00:39:04

+0

對不起,有沒有在你已經發布,使你所看到的問題的任何決定的代碼/上下文的足夠信息。 – Devunwired 2012-01-16 05:06:25

+0

嗯..我會盡力解釋。 'view1'是一個'ListView'的圖標。類似於您在聯繫人列表視圖中顯示的圖片。 'view2'在同一個屏幕/ LinearLayout中的不同位置。類似於聯繫人應用中的標題。當我爲圖片設置動畫時,它會移動,但不會超出「ListView」的邊界。我在'ListView'上試過'.setClipChildren(false)',但它完全扭曲了整個視圖。 – 2012-01-16 05:50:24

0

基本上,我不知道,如果你做的一切都是正確的..

對於我來說,實現動畫Android是使用ViewFlipper最簡單的方法。也許你應該考慮用它來包裝你的觀點。

在這裏,您有關於時,利用翻譯和阿爾法動畫與ViewFlipper一些後你按照我的建議http://kevinrohling.wordpress.com/2011/01/25/using-a-slide-transition-with-viewflipper/

+0

好東西......但它似乎是關於活動視圖之間的轉換。我的問題是關於視圖(小部件)在同一個屏幕上移動(一個在ListView中)。這是否適用於這種情況? – 2012-01-16 00:42:03

+0

剛編輯我的問題是多一點明確 – 2012-01-16 00:45:59

相關問題