最近發(fā)布的手機里面最火的就是全面屏了,這就涉及到了我們項目適配全面屏手機的問題。本篇文章就是記錄一下剛花一點時間做完的Android全面屏適配的一些東西。先看一下沒有適配的時候在小米MIX2上的實際效果

20170804_122245.jpg
1.大家看下目前市面上目前發(fā)布的全面屏手機
機型 屏幕縱橫比
小米MIX 17:9
小米MIX2 18:9
LG G6 18:9
Samsung Galaxy S8 18.5:9
Essential Phone 19:10
vivo X20 18:9
meizu MX7 暫時未知
金立 暫時未知
努比亞 暫時未知
目前我手里用的測試機是同事的小米MIX2比例是18/9,所以項目跑起來后上下留有黑邊,官方給的建議是設置max_aspect比例是2.1,目前的比例都是在這范圍之內,所以在Androidmanifest清單文件里面添加
<meta-data
android:name="android.max_aspect"
android:value="2.1" />
跑起來項目明顯的上下黑邊都沒有了,但是出來別的問題,就是我們的popwindow從底部彈出的位置會出現(xiàn)間隙,之前有判斷是否有底部虛擬按鍵,在手勢操作收索的時候,出入點高度變化就會出現(xiàn)間隙。所以pop的高度就少了底部虛擬按鍵的高度,所以設置pop的高度需要加上底部的高度。
Rect frame = new Rect();
mContext.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
statusBarHeight = frame.top;
DisplayMetrics metrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay()
.getMetrics(metrics);
mWidth = metrics.widthPixels;
if (ConstantS.ISMAXScreenRatio) {//全面屏
statusBarHeight = 0;
mHeight = metrics.heightPixels + ViewUtil.getBottomStatusHeightNew(context);
} else {//普通屏幕
mHeight = metrics.heightPixels;
}
setWidth(mWidth);
setHeight(mHeight);
在設置Location的位置的時候,全面屏的位置設置為0。當然這個是我項目里面的東西,大家可以看情況而定。
showAtLocation(view, Gravity.BOTTOM, 0, statusBarHeight);
statusBarHeight的高度就是模擬鍵盤的高度。
然后跑起來看下效果吧

![Uploading 20170804_122545_892356.jpg . . .]

20170804_122545.jpg
一般來說項目里面彈出的popwindow的出入位置都會寫成公共的方法,所以盡可能寫成一個方法體這樣修改起來方便很多。好了就記錄到這里了。感謝大家的閱讀。。