2012-11-06 66 views
9

在對按鈕單擊的響應中調用ImageView(或其他視圖)上的getLocationOnScreen()可提供正確的值。onCreate()中的getLocationOnScreen()僅返回零

但是,從Activity :: onCreate()調用getLocationOnScreen()時,我只能得到[0,0]。我怎樣才能解決這個問題?

onCreate()是否爲所有計算做得太早?有沒有更好的地方勾動開始動畫?

+0

你的目標是什麼?創建一個動畫的起點? –

+0

以http://stackoverflow.com/a/10542153/129202中的代碼爲例。按下按鈕將視圖移動到屏幕中心。如果在onCreate中已經引起了相同的循環,則它不起作用,因爲view.getLocationOnScreen()返回空值。 – Jonny

回答

25

onCreate()中檢查getLocationOnScreen()爲時尚早。更好的地方是在視圖級別(如果您使用自定義視圖),在onLayout()。只有在這裏,視圖的大小和位置纔會被計算出來。如果您沒有創建自定義視圖,則可以在活動級別onWindowFocusChanged()(活動具有焦點)獲取它。

+0

謝謝,我可以從http://stackoverflow.com/a/6560726/129202 找到相同的答案'onWindowFocusChanged()'我會說參考http://developer.android.com/reference/android /view/View.html#getLocationOnScreen(int [])對於很多人似乎都有的這些常見缺陷有點太噓聲。 – Jonny