1. 前言
如果你百度一下,如何判斷當前設備是手機還是平板,搜索到的結果一般都是下面這個,
/**
* 是否是平板
*
* @param context 背景關系
* @return 是平板則回傳true,反之回傳false
*/
public static boolean isPad(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
在大多數情況下,這個方法是有用的,但是經過一段時間的使用,我發現這個方法是會出現誤判的,例如:在華為平板上,可以通過調整系統設定中“字體和顯示大小”,放大界面,這個時候這個方法的獲取結果就是 false,將平板誤識別為手機,
所以,想要有效地判斷當前設備是手機還是平板,還得另找其他方法,
2. 解決方案
因為我們是可以獲取到當前設備螢屏的寬度和長度(單位是像素),那么我們可以通過勾股定理,計算出設備的對角線長度,即螢屏大小(單位是英寸),而目前市面上,最小的平板是7.0英寸,那么只要判斷是螢屏大小大于等于7.0英寸的設備就是平板了,具體代碼如下:
/**
* 是否是平板
*
* @param context 背景關系
* @return 是平板則回傳true,反之回傳false
*/
public static boolean isPad(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
double screenInches = Math.sqrt(x + y); // 螢屏尺寸
return screenInches >= 7.0;
}
如果想進一步交流和學習的同學,可以加一下QQ群哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/241868.html
標籤:其他
下一篇:安卓學期總結
