今天寫代碼的時候發(fā)現(xiàn)一個奇葩的問題,明明一樣的公式降淮,的出來的結(jié)果是不一樣的,后面才知道這屏幕高度不是1920而是1794,所以的出來的值不一樣适室。
//1794/1080 1794/1080 =1.66111
this.smartScreenHeight= screenSize.height/screenSize.width>=1.8f? (float) (1.6611111111111111111111111111111f * screenSize.width) :screenSize.height;
// this.smartScreenHeight=screenSize.height;
這句代碼是解決一個問題,這個問題就是寬和高過長導(dǎo)致的按鈕 太高太丑的bug.
另外這里有一個獲取真實(shí)高度的方法
}
/**
* 通過反射虐骑,獲取包含虛擬鍵的整體屏幕高度
*
* @return
*/
public static int getRawScreenHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width = display.getWidth();
int height = wm.getDefaultDisplay().getHeight();
DisplayMetrics dm = new DisplayMetrics();
@SuppressWarnings("rawtypes")
Class c;
int dpi;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, dm);
dpi = dm.heightPixels;
return dpi;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
根據(jù)比例得出自己手機(jī)應(yīng)該的高度
this.smartScreenHeight = screenSize.width * (667f / 375f);//傳遞1080得到1920.96
Log.w("CALC_HEIGHT",this.smartScreenHeight+"");
期望的屏幕高度=當(dāng)前屏幕寬度*(667/375)
轉(zhuǎn)換后的坐標(biāo)=(坐標(biāo)/667)*期望的屏幕高度
//第二句話的第二種寫法
667為高度
期望的屏幕高度/667 *坐標(biāo)