2013-03-25 84 views
0

的實際分辨率下我已經使用默認分辨率比我的設備

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
cube.height=metrics.heightPixels; 
cube.width=metrics.widthPixels; 

得到高度和我的顯示器的寬度,但分辨率低我的索尼XPERIA P設備是QHD顯示。從這個函數我只能得到高度= 569像素和寬度= 320像素 我不明白爲什麼這顯示較低。我認爲這給了我虛擬分辨率而不是真實分辨率。我用簡單的視圖和繪製方法繪製畫布。

請大家幫忙。

+0

DisplayMetrics給出的分辨率是多少?屏幕的實際像素大小是多少? – Niko 2013-03-25 11:38:03

回答

0

也許你應該嘗試這樣的事:

Display display = getWindowManager().getDefaultDisplay();  
Method mGetRawH = Display.class.getMethod("getRawHeight"); 
Method mGetRawW = Display.class.getMethod("getRawWidth"); 
int rawWidth = (Integer) mGetRawW.invoke(display); 
int rawHeight = (Integer) mGetRawH.invoke(display); 

某網站援引on this question

+0

thanx這個顯示我的設備的真實分辨率。但我認爲畫布得到了虛擬分辨率,因爲我使用'canvas.drawtext(「..」,320,0,paint)'這個字符串只是隱藏在左端,因爲我的設備有540個寬度,所以我想它一定是儘可能少於中間,但它沒有。它像帆布一樣低ppi。我嘗試在另一款手機上使用qvga顯示器,顯示比原始設備更高的分辨率,並且似乎以高ppi繪製畫布。我不明白。我如何畫設備的真實分辨率的畫布。 – 2013-03-25 18:04:29

+0

不幸的是,我對Canvas不太熟悉,以及它是如何工作的。我會建議提出另一個問題。請接受和/或upvote我的答案,如果它幫助這個問題,雖然!抱歉,我無法在畫布前面幫忙。 – Kgrover 2013-03-25 19:12:35

+0

你的意思是隱藏在左端的字符串是什麼意思? drawText將像素x和y作爲參數,其中應該放置文本左上角。你確定你的畫布正確定位在你正在繪製的地方(寬度,高度,座標)嗎?屏幕截圖可能對您有所幫助。 – Niko 2013-03-26 05:58:58