關於屏幕尺寸引起的問題

關於屏幕尺寸引起的問題

1.屏幕尺寸獲取
WindowManager wm = (WindowManager) sContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point realSize = new Point();
display.getRealSize(realSize);
//這個拿到的是屏幕的真實尺寸,比如1280*1920

Point availableSize = new Point();
display.getSize(availableSize);
或者
diswidth = getContext().getResources().getDisplayMetrics().widthPixels;
disheight = getContext().getResources().getDisplayMetrics().heightPixels;
//這兩種方法拿到的是屏幕的實際可用尺寸,比如1280*1794,高度是去掉狀態欄和底部導航欄的高度,我測的手機狀態欄高度42,底部導航欄高度84

2 遇到的問題(前提是有虛擬按鍵的手機)
比如使用popWindow的時候需要給他設置高度,如果用真實尺寸1920-offset,比如得到高度是1414的話,那麼在8.0以下的手機上顯示的效果是正確的,在8.0以上的手機上會發現比預想的偏上,這是因爲繪製的時候,從上往下繪製,在8.0以下手機上,就算有虛擬按鍵,也會繪製到虛擬按鍵下面,即如果底部有文字的話會被虛擬按鍵蓋住看不到,在8.0以上手機上,從上往下繪製,他並不會繪製到虛擬按鍵下面,發現popwindow高度比較高,屏幕不夠畫了,那麼他會把offset重新計算一下,整體會往上偏,偏出虛擬按鍵的高度。
解決方法,不要使用屏幕真實尺寸來算高度,要使用屏幕可用高度計算popwindow高度,那麼算出的高度畫出來就能剛好從offset到底部導航欄,在所有手機上都不會有問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章