開發(fā)時,我們經(jīng)常要獲得手機屏幕的高寬數(shù)據(jù)。通常我們會寫個獲得方法如getScreen();然后在Oncreate()中調(diào)用getScreen()方法。我們可能獲得到的結(jié)果是寬高為0。這是為何呢?緣由在于:
在Activity生命周期中,onCreate,onStart, onResume都不是真正屏幕可見(VISIBLE)時間點,真實的VISIBLE時間點是在當onWindowFocusChanged()函數(shù)被履行時,此時用戶才真正地可以與利用進行交互,而這函數(shù)被調(diào)用之前,用戶的操作都有1點限制。所以我們要正確獲得得手機屏幕的寬高,是要在onWindowFocusChanged()方法中來履行。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
int width=getResources().getDisplayMetrics().widthPixels;//屏幕寬度
int hight=getResources().getDisplayMetrics().heightPixels;//屏幕高度
super.onWindowFocusChanged(hasFocus);
}