屏幕旋轉後,視圖對象之一的高度發生變化,我想知道像素中的高度值。onConfigurationchanged()方法後調用什麼
onConfigurationChanged
方法可能在視圖結束旋轉之前調用。所以如果我在這個方法中測量視圖大小,大小仍然是之前旋轉的值。
問題是如何在旋轉完成後獲取視圖大小值而無需重構活動。
屏幕旋轉後,視圖對象之一的高度發生變化,我想知道像素中的高度值。onConfigurationchanged()方法後調用什麼
onConfigurationChanged
方法可能在視圖結束旋轉之前調用。所以如果我在這個方法中測量視圖大小,大小仍然是之前旋轉的值。
問題是如何在旋轉完成後獲取視圖大小值而無需重構活動。
一個可能的解決方案:
private int viewHeight = 0;
View view = findViewByID(R.id.idOfTheView);
view.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
viewHeight = view.getHeight();
}
OR
@Override
public void onResume(){
int viewHeight = 0;
View view = findViewByID(R.id.idOfTheView);
viewHeight = view.getHeight();
}
感謝您的回答,我認爲onResume()將不會運行,因爲我在AndroidManifest.xml文件中設置了** android:configChanges =「orientation | screenSize」**。我將研究OnGlobalLayoutListener的方式。 – user2614801
當方向改變時,OnResume()總是被調用,因爲整個Activity被重新創建。 – g00dy
我剛剛閱讀關於旋轉的編程指南文章。它表示,在API級別12以上,配置更改不會重新啓動您的活動, 引用的地址是http://developer.android.com/guide/topics/resources/runtime-changes.html 在本文中有一個像這樣的段落 現在,當其中一個配置更改時,MyActivity不會重新啓動。相反,MyActivity接收到對onConfigurationChanged()的調用。 ...... – user2614801
您可以隨時檢查這個在'的onResume()'方法,因爲它的旋轉後調用。 – g00dy
感謝您的answer.It似乎不運行OnResume()方法,因爲我在AndroidManifest.xml文件中使用android:configChanges =「orientation | screenSize」。我在OnResume中設置了斷點,但是在收聽時沒有停止。 – user2614801