當前位置:首頁 » 安卓系統 » android獲取密度

android獲取密度

發布時間: 2022-08-03 11:02:19

A. android context.getResources().getDisplayMetrics().density 是什麼意思啊

android context.getResources().getDisplayMetrics()這是獲取手機屏幕參數,後面的density就是屏幕的密度,類似解析度,但不是。看一下這個http://blog.csdn.net/feng88724/article/details/6599821

B. 如何獲取android模擬器的高度和寬度

// 獲取屏幕寬高(方法1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕寬(像素,如:480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // 屏幕寬(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels; // 屏幕寬(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 屏幕寬(dip,如:533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕寬(px,如:480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px)
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);

C. 怎樣獲取Android手機屏幕的大小

要獲取手機屏幕大小,其實太簡單,只要用尺量取屏幕對角尺寸(單位:mm)。然後用這個尺寸除以25.4,就得到英寸了。譬如:127mm/25.4=5.0 英寸。

D. 如何獲取android:anyDensity值

android:anyDensity的意思是支持任意密度,這個值只是一個布爾值設置。是android自己匹配的。
android中,可以獲取密度,根據密度自己如果有需要可以做特殊處理:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

E. 在 android 中,在屏幕密度為160時,1pt 大概等於多少sp

在 Android 中, 1pt 大概等於 2.22sp以上供參考,
與解析度無關的度量單位可以解決這一問題。Android支持下列所有單位。
px(像素):屏幕上的點。
in(英寸):長度單位。
mm(毫米):長度單位。
pt(磅):1/72英寸。
dp(與密度無關的像素):一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。
dip:與dp相同,多用於android/ophone示例中。
sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。
解析度:整個屏是多少點,比如800x480,它是對於軟體來說的顯示單位,以px為單位的點。 density(密度)值表示每英寸有多少個顯示點,與解析度是兩個概念。apk的資源包中,

當屏幕density=240時使用hdpi標簽的資源
當屏幕density=160時,使用mdpi標簽的資源
當屏幕density=120時,使用ldpi標簽的資源。
一般android設置長度和寬度多用dip,設置字體大小多用sp. 在屏幕密度為160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.當屏幕密度為240時,1dp=1dip=1.5px.

F. Android中手機屏幕密度該怎麼計算

為解決Android設備碎片化,引入一個概念density,也就是密度.它指的是在一定尺寸的物理屏幕上顯示像素的數量,一般使用dpi(dots per inch,每英寸像素數)作為單 位.比如設備解析度為240x320,屏幕物理尺寸為1.5英寸x2英寸(對角線為2.5)它的密度可以用解析度/尺寸表示:240/1.5或者即320/2,密度為160dpi。算對角線也是一樣 的,長的平方+寬的平方=160000,開方後=400.可知400/2.5=160.對於用戶來說,密度越大的屏幕顯示效果越精細,因為每英寸顯示的像素數量更多。 以上的描述就是一個藍本(此藍本對應於mdpi). 按照此藍本一個dp相當於160dpi屏幕中的一個px.同理在,在320dpi的屏幕中,一個dp相當於2個px. 通過這樣的成比例放縮,Android解決了需要多個不同屏幕中的大小顯示問題. 所以在Eclipse的布局文件中,以3.7in WVGA(Nexus One)(480x800)為例,可以看見其為sw320dp,h533dp. 即寬有320dp,高為533dp. 是怎麼計算出來的呢? 將(480的平方+800的平方)開方=932.9523031 然後932.9523031/屏幕尺寸3.7=252.14927,此結果為此手機的屏幕密度. 然後按照上面的藍本,就應該要計算在該手機上1dp對於多少px.計算如下: 160 1dp=1px 252.14927 1dp=?px 結果為: 252.14927/160=1.5759329 注意: 在此一般不取1.5759329,只取到1.5即可. 所以:480/1.5=320;800/1.5=533.3333(通常取為533),即上述的sw320dp,h533dp. 手機屏幕密度的對應關系 120上下浮動的都屬於ldpi 160上下浮動的都屬於mdpi 240上下浮動的都屬於hdpi 320上下浮動的都屬於xdpi 以摩托羅拉ME525+(3.7英寸 解析度854x480像素)為例: 將(480的平方+854的平方)開方=979.6509 然後979.6509/屏幕尺寸3.7=264.770529,此結果為此手機的屏幕密度.對應為hdpi 264.770529/160=1.6548 即在此手機中1dp=1.6548個像素,只取到1.6即可 所以:480/1.6=300;854/1.6=533.75(通常取為533) 按照這個邏輯,算出來的寬應該是只有300dp.悲劇的是,如果某個控制項的寬為300,在此手機上是不能鋪滿手機的寬的. 也就是說除以的不是1.6而還是1.5!!!!所以將寬設置為320即可 總結:在hdpi中,像素轉換為dp統一用的是:像素/1.5 以聯想K860(5.0英寸,解析度1280x720像素)為例: 將(1280的平方+720的平方)開方=1468.60478 然後1468.60478/屏幕尺寸5=293.720,此結果為此手機的屏幕密度.對應為xdpi 293.720/160=1.8357 即在此手機中1dp=1.8357個像素 所以:1280/1.8357=697.281;720/1.8357=392.22 按照這個邏輯,算出來的寬應該是392.22.悲劇的是,如果某個控制項的寬為392.22,在此手機上是顯示不完全的. 也就是說除以的不是1.8而是2!!!!所以將寬設置為360即可 總結:在xdpi中,像素轉換為dp統一用的是:像素/2 注意問題1: 在建立模擬器的時候注意 854x480在Hardware中,應該將Abstracted LCD density設置為240,並手動輸入解析度 1280x720在Hardware中,應該將Abstracted LCD density設置為320,並手動輸入解析度 注意問題2: 多個layout文件夾在命名上有相應規則,以解析度480x854為例,需要建立480x854像素的layout文件夾,命名:layout-854x480,有兩點需要注意:①大數(854)必須在前, 否則會報錯;②兩個數字之間的符號是小寫英文字母“x”,不是乘號

G. Android開發 怎樣獲取屏幕的寬高是多少厘米

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

[java] view plain print?
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。比如說,一部240x320像素的低密度手機,如果運行上述代碼,獲取到的屏幕尺寸是320x427。因此,研究之後發現,若沒有設定多解析度支持的話,Android系統會將240x320的低密度(120)尺寸轉換為中等密度(160)對應的尺寸,這樣的話就大大影響了程序的編碼。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,具體的內容如下:
[html] view plain print?
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" />

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" /> 這樣的話,當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

[java] view plain print?
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;
public class TextCanvasActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(new MyView(this));

//定義DisplayMetrics 對象
setContentView(R.layout.main);
DisplayMetrics dm = new DisplayMetrics();
//取得窗口屬性
getWindowManager().getDefaultDisplay().getMetrics(dm);

//窗口的寬度
int screenWidth = dm.widthPixels;

//窗口高度
int screenHeight = dm.heightPixels;
TextView textView = (TextView)findViewById(R.id.tv1);
textView.setText("屏幕寬度: " + screenWidth + "\n屏幕高度: " + screenHeight);
}
}

H. 如何調整屏幕密度

1、確定手機的顯示density和解析度
desity翻譯成中文的意思是密度,在安卓系統中,desity是一個重要的顯示參數。如果density設置不當,如低解析度用了高density,會使得字體和其他一些UI顯示得特別小,甚至影響App兼容。要確定手機的density很簡單,使用RE文件管理器,開啟system目錄下的build.prop,找到「ro.sif.lcd_density=」的參數,後面的數字就是當前的density。
軟體名稱: RE文件管理器(RootExplorer)
軟體版本: 3.3.2
軟體大小: 2.38MB
軟體授權: 免費
適用平台: Android
下載地址: 一鍵下載 | 普通下載
找到build.prop文件,點擊編輯
這一行就是目前的系統density,需要做修改
確定屏幕解析度就更簡單了,自行查詢廠商官方數據即可。
2、根據解析度修改density
前面說到,如果density不對,會造成很多問題,所以修改解析度前,我們把density變更到對應的數值。以筆者的設備為例。筆者的設備默認解析度是1080p(1920x1080),density為480。如果要把解析度修改到720p(1280x720),那麼就按照下面的方法計算出需要修改的density數值。
需要修改成的density數值=480/(1080/720)=320
1080p的橫向、縱向解析度是720p的1.5倍,所以density需要除以1.5。如果你是2K解析度(2560x1440),想要修改成為1080p,那麼同理,計算公式如下:
需要修改的density數值=原density數值/(1440/1080)
使用RE文件管理器,編輯build.prop。將「ro.sif.lcd_density=」的參數改寫成為需要修改的數值,保存。
3、修改顯示解析度
修改density後,就可以接著修改顯示解析度了,這一步需要用到電腦,下面以Windows PC為例。首先需要安裝安卓adb開發包,下載後,按照壓縮包里的說明安裝。
軟體名稱: adb工具包
軟體版本: 1.0.32
軟體大小: 608KB
軟體授權: 免費
適用平台: Win2000 WinXP Win2003 Vista Win8 Win7

I. android 獲取屏幕寬高與解析度寬高是一回事嗎

下面的代碼即可獲取屏幕的尺寸: 在一個Activity的onCreate方法中,編寫以下代碼: DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 寬度(PX) int height = metric.heightPixels; // 高度(PX) float density = metric.density; // 密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 密度DPI(120 / 160 / 240) 需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。 所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,如下: 這樣當前的Android程序就支持了多種解析度,那麼就可以得到正確的物理尺寸了。

熱點內容
看linux版本 發布:2025-01-20 04:40:37 瀏覽:19
php獲取調用的方法 發布:2025-01-20 04:25:45 瀏覽:458
SMPT郵箱伺服器地址 發布:2025-01-20 04:04:16 瀏覽:662
抖影工廠為什麼安卓手機用不了 發布:2025-01-20 04:00:05 瀏覽:386
我的世界網易版怎麼進朋友伺服器 發布:2025-01-20 03:50:10 瀏覽:684
phpsession跳轉頁面跳轉 發布:2025-01-20 03:47:20 瀏覽:540
深圳解壓工廠 發布:2025-01-20 03:41:44 瀏覽:690
linux字體查看 發布:2025-01-20 03:41:30 瀏覽:742
pythonextendor 發布:2025-01-20 03:40:11 瀏覽:199
為什麼安卓手機儲存越來越少 發布:2025-01-20 03:40:07 瀏覽:925