1. 程式人生 > >android 獲取螢幕的物理尺寸

android 獲取螢幕的物理尺寸

計算方法:獲取到螢幕的解析度:point.x和point.y,再取出螢幕的DPI(每英寸的畫素數量),計算長和寬有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,螢幕的長和寬算出來了,再用勾股定理,計算出斜角邊的長度,即螢幕尺寸。

/**
	 * 得到螢幕的物理尺寸,由於該尺寸是在出廠時,廠商寫死的,所以僅供參考
	 * 計算方法:獲取到螢幕的解析度:point.x和point.y,再取出螢幕的DPI(每英寸的畫素數量),
	 * 計算長和寬有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,螢幕的長和寬算出來了,
	 * 再用勾股定理,計算出斜角邊的長度,即螢幕尺寸。
	 * @param context
	 * @return
	 */
	public static double getPhysicsScreenSize(Context context){
		WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		Point point = new Point();
		manager.getDefaultDisplay().getRealSize(point);
		DisplayMetrics dm = context.getResources().getDisplayMetrics();
		int densityDpi = dm.densityDpi;//得到螢幕的密度值,但是該密度值只能作為參考,因為他是固定的幾個密度值。
		double x = Math.pow(point.x / dm.xdpi, 2);//dm.xdpi是螢幕x方向的真實密度值,比上面的densityDpi真實。
		double y = Math.pow(point.y / dm.ydpi, 2);//dm.xdpi是螢幕y方向的真實密度值,比上面的densityDpi真實。
		double screenInches = Math.sqrt(x + y);
		return screenInches;
	}
注意: 此處displayMetrics不要使用context.getApplicationContext().getResources().getDisplayMetrics()來獲取。

上面說到,DPI是由裝置出廠時寫死到裝置裡的,如果寫入的DPI值不準確,當然計算不出準確的螢幕尺寸。這也是友盟統計裡沒有螢幕尺寸這一項的原因吧,所以計算出的螢幕尺寸只做參考。


相關推薦

Android獲取螢幕物理尺寸的方法

第一種方法 //獲取螢幕寬度 int screenWidth = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)

android 獲取螢幕物理尺寸

計算方法:獲取到螢幕的解析度:point.x和point.y,再取出螢幕的DPI(每英寸的畫素數量),計算長和寬有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,螢幕的長和寬算出來了,再用勾股定理,計算出斜角邊的長度,即螢幕尺寸。/**

Android獲取螢幕尺寸的方法

在android開發中我們經常遇到需要獲取螢幕高度和螢幕寬度。下面我就來說下我常用的一個類用於獲取螢幕的尺寸 public class ScreenUtils { //獲取螢幕寬度 public static int getScreenWidth(Context

Android實戰開發:獲得螢幕物理尺寸、密度及解析度

通過程式去了解硬體情況是一件十分有意思的事情。很早我就研究在WM6.5上獲得螢幕物理尺寸,但一直沒有成功。後來又想要在Android上有所突破,不過在今天之前得到的尺寸都不準確。雖然很多人認為沒必要這麼較真,因為貌似很多情況下用不到。不過我就當這是一件很有挑戰性的事,一定要做

android獲取螢幕尺寸、密度(判斷手機螢幕型別)

1. 概念介紹 解析度:橫縱2個方向的畫素點的數量,常見取值 480X800 ,320X480 螢幕大小: 例如我的是4.0 英寸, 就是指 從螢幕的左上角 到 螢幕的右下角 連線長度為4.0英寸(可以換成釐米) density : 直接翻譯的話貌似叫 密度

android獲取螢幕尺寸和密度

Android主要有以下幾種屏: QVGA和WQVGA屏density=120; HVGA屏density=160; WVGA屏density=240; 下面以480dip*800dip的WVGA(density=240)為例,詳細列出不同density下螢幕解析度資訊: 當density=12

Android 獲取螢幕尺寸與密度

轉的別人的 android中獲取螢幕的長與寬,參考了網上有很多程式碼,但結果與實際不符,如我的手機是i9000,螢幕大小是480*800px,得到的結果卻為320*533 結果很不靠譜,於是自己寫了幾行程式碼,親測一下 測試引數: 測試環境: i9000(三星) 物理螢幕:480*800px

android獲取螢幕寬高與獲取控制元件寬高

// 獲取螢幕寬高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 螢幕寬(畫素,如:480px) int screenHeight = getWindowManager().getDe

Android 獲取螢幕指定座標的顏色

用到的API MediaProjectionManager MediaProjection VirtualDisplay ImageReader 原理:利用Android系統提供的投影功能把螢幕投影到ImageReader中,通過ImageRead

Android 獲取 螢幕寬度和高度——獲取文字高度和寬度

獲得螢幕寬度和高度 //直接在子元件中 1、WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVI

Android獲取螢幕寬高,狀態列寬高,actionbar寬高,layout寬高,導航欄高度的方法彙總

看這個部落格你可以知道 獲取螢幕寬高,狀態列寬高,actionbar寬高,layout寬高,導航欄(虛擬按鍵欄)高度的方法   目錄順序為 程式碼測試的機型 狀態列高度 actionbar高度 螢幕高度 導航欄(虛擬按鍵欄)高度 layout寬高 總

android 獲取螢幕截圖並呼叫系統分享

呼叫的系統自帶的分享而不是接入的第三方sdk 第一步: 獲取螢幕截圖 // 獲取螢幕(包括導航 View dView =AddressDetailsActivity.this.getWindow().getDecorView(); dVi

android 獲取螢幕的高度和寬度。

android獲取螢幕的高度和寬度用到WindowManager這個類,兩種方法: 1、WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); int wi

Android Studio——Android獲取螢幕寬度的4種方法

原文連結:http://www.androidchina.net/2022.html 方法一: 1 2 3 WindowManager wm = (WindowManager) this.getSystemService(Context.WINDO

Android獲取螢幕的寬度和高度(dp)

    一般我們需要的寬度和高度都是需要dp格式,但是在網上找了一大堆的資料基本上得到的寬度和高度都是畫素(Pixels)型的寬度和高度,與我們所需要的不一樣,後面經過查詢資料終於找到解決辦法,下面上程式碼,老鳥勿噴 public void getAndroiodScr

Android獲取螢幕寬和高

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefault

Android獲取螢幕高度寬度

工具類 留著備用 import android.content.Context; import android.view.WindowManager; public class GetScreen{ /** * 螢幕高度 */ p

Android獲取螢幕寬度的4種方法

方法一: WindowManager wm = (WindowManager) this .getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().get

Android 獲取螢幕畫素的方法

我們需要獲取Android手機或Pad的螢幕的物理尺寸,以便於介面的設計或是其他功能的實現。下面就介紹講一講如何獲取螢幕的物理尺寸。 下面的程式碼即可獲取螢幕的尺寸。在一個Activity的onCreate方法中,寫入如下程式碼: DisplayMetri

Android獲取螢幕實際高度跟顯示高度,判斷Android裝置是否擁有虛擬功能鍵

一般的獲取螢幕尺寸,但是不包括虛擬功能高度 /** * 獲取螢幕尺寸,但是不包括虛擬功能高度 * * @return */ public int getNoHasVirtualKey() { int height = getWindowMa