androiddensity
『壹』 如何獲取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)
『貳』 Android屏幕適配-修改全局density
屏幕適配好幾種,目前主流且成本最低的還是修改系統density的方案。
使用也十分簡單,只需要在BaseActivity的onCreate方法中調用setDensity方法即可,注意的是應該在setContentView之前設置
『叄』 android context.getResources().getDisplayMetrics().density 是什麼意思啊
android context.getResources().getDisplayMetrics()這是獲取手機屏幕參數,後面的density就是屏幕的密度,類似解析度,但不是。看一下這個http://blog.csdn.net/feng88724/article/details/6599821
『肆』 探究安卓px/dp/dip/dpi/ppi/sp/density含義
dp=(160/ 像素密度值)px
so, xhdpi時,dp=1/2px;xxhdpi時,dp=1/3px;
ldpi QVGA (240×320)
mdpi HVGA (320×480)
hdpi WVGA (480×800), FWVGA (480×854)
xhdpi 720P(1280 720)
xxhdpi 1080p(1920 1080 )
xxxhdpi 4K(3840×2160)
px : pixels(像素)
ppi : pixels per inch(像素密度,所表示的是每英寸所擁有的像素數量)
dpi : dots per inch(每英寸的點數)
dp、dip : device independent pixels(設備獨立像素)
sp : scaled pixels(放大像素)
density:安卓系統中的density表示的是密度系數。計算方法是density = dpi / 160。即將160dpi作為標準的密度值(每英寸點數),我們設置的dp值即是在160的標准密度值下的像素數;所以px = density * dp。
PPI和DPI的含義區別?
PPI:pixels per inch(像素密度,所表示的是每英寸所擁有的像素數量)
為什麼解析度一樣,屏幕尺寸一樣, 同樣的dp值顯示出來的實際像素值不一樣?
答:PPI是固定計算的,和解析度,屏幕尺寸相關。DPI是ROM廠商設定的,不是確定公式計算的。同樣的解析度和屏幕尺寸,只能得到PPI一致。但是這不是實際顯示的結果,設置dp值是按照DPI來計算的,這個時候需要看設備實際的DPI值,DPI不同結果不同。廠商可能為了顯示效果而設置了不同的density(DPI).
『伍』 android 屏幕適配基礎知識
最近參考 今日頭條演算法 ,優化了項目的屏幕適配策略。下面是適配過程中的一些心得,部分內容來源於網路。
舉個例子:屏幕解析度為:1920*1080,屏幕尺寸為5吋的話,那麼dpi為440。
dp就是密度自適應的像素。1dp表示 在dpi為160的設備上的一顆像素
px與dp的換算公式px = dp * (dpi / 160),很顯然,由於相同解析度但不同屏幕大小的設備dpi是不同的,導致px和dp的基本不存在一個固定的換算關系,為了方便屏幕適配,Android設置了6個通用的密度,換算px與dp時採取通用密度計算,而非設備實際的密度。
以下為6種通用密度,以及其最小的解析度
得到上面通用密度之後,我們換算dp與px多了一種簡便方式。Android系統用mdpi(160dpi)作為基準,此時1px = 1dp,又有px = dp * (dpi / 160),所以我們可以很容易的得到以下換算:
sp在dp的基礎上引入了scaleFactor變數,一般用於字型大小,可在系統設置里調大。
同一張圖片放到以上4個解析度類型的文件夾里,在頁面上呈現的效果如下
實際呈現的演算法為: 圖片尺寸 * 系統density / 文件夾 density
因為圖片尺寸、系統density都是固定的,因此圖片最終尺寸表現為: 圖片放的位置越"low",呈現的尺寸越大
比如 圖片寬度200px,系統 density =3,則圖片寬度
下面是詳細的解釋
我們知道,不管在布局文件中填寫的是什麼單位,它最後都會被系統轉化為 px。系統的轉換演算法如下:
可以看到 px = dp*density 。
橫向適配的最終目的:讓100dp的寬度,在各個機型上,在屏幕上所佔的 比例相同 。
其核心演算法是px = dp* density。通過修改density這個變數,我們可以讓px和畫布標注的px值一致,達到適配的效果。
美工同學提供的畫布寬度為 750px(iphone6) ,開發中,我們對這些px標注 除2 得到dp值進行使用。
那麼density如何求出呢? 根據系統演算法px = dp*density,反推 density =px/dp
拿橫向適配畫布, density對於不同解析度的手機修改後如下:
375是我們拿UI畫布橫向解析度750/2得出。
『陸』 安卓屏幕濃度
Android支持的像素顯示單位有px像素、in英寸、mm毫米、pt磅(1/72英寸)、dp(與設備無關的顯示單位,也寫作dip)、sp(用於設置字體大小)
px 是手機屏幕上可顯示的最小單位,與物理設備的顯示屏無關。一般來說同樣尺寸的屏幕 看起來越清晰,像素密度越高,以px計量的解析度也越高。
dp 與物理設備無關,只與屏幕的尺寸有關。一般來說,同樣尺寸的屏幕以dp計量的解析度是一樣的,無論這個手機是哪個廠家生產的,dp 大小都是一樣的。
sp 的原理跟dp差不多,專門用於設置字體大小。手機在系統設置里可以調整字體的大小(小、普通、大、超大)。設置普通字體時,同數值dp和sp的文字看起來一樣大。如果設置為大字體,用dp設置的文字大小沒有變化,用sp設置的字體就會變大。 dp 和sp 之間的聯系取決於具體設備上的像素密度,像素密度就是DisplayMetrics里的density 參數。當density = 1.0時,表示一個dp值對應一個sp值;當density = 1.5 時,表示兩個dp值對應3個px值;當density = 2.0時,表示一個dp值對應2個px值;
『柒』 android里的scaledDensity的含義,該怎麼處理
[解決辦法]
displayMetrics.scaledDensity
字體縮放比例
[解決辦法]
/**
* A scaling factor for fonts displayed on the display. This is the same
* as {@link #density}, except that it may be adjusted in smaller
* increments at runtime based on a user preference for the font size.
*/
public float scaledDensity;
即 單位 sp 的 換算值。 一般用在設定字體大小中。
[解決辦法]
伸縮密度,圖片、字體在不同解析度上面運行,解析度不一樣導致設置的大小也就不一樣。
一般字體大小設置為:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
pixelSize = (int)scaledPixelSize * dm.scaledDensity;
『捌』 android density是什麼意思
Android屏幕密度(Density)和解析度概念
density值表示每英寸有多少個顯示點,與解析度是兩個概念。
不同density下屏幕解析度信息:
480*800的WVGA(density=240)
density=120時 屏幕實際解析度為240*400 (兩個點對應一個解析度)
橫屏是屏幕寬度400px 或者800dip,工作區域高度211px或者480dip
豎屏時屏幕寬度240px或者480dip,工作區域高度381px或者775dip
density=160時 屏幕實際解析度為320px*533px (3個點對應兩個解析度)
狀態欄和標題欄高個25px或者25dip
橫屏是屏幕寬度533px 或者800dip,工作區域高度295px或者480dip
豎屏時屏幕寬度320px或者480dip,工作區域高度508px或者775dip
density=240時 屏幕實際解析度為480px*800px (一個點對於一個解析度)
狀態欄和標題欄高個38px或者25dip
橫屏是屏幕寬度800px 或者800dip,工作區域高度442px或者480dip
豎屏時屏幕寬度480px或者480dip,工作區域高度762px或者775dip
『玖』 手機怎麼設置顯示解析度
安卓手機通過調整LCD密度可以實現類似電腦調整屏幕解析度的效果,但前提是手機已經取得ROOT許可權。如果你的手機還沒有獲取ROOT許可權,可以按照下面的方法獲取
依次進入設置→應用程序→開發,打開手機上的USB調試,再將手機用數據線與電腦連接,運行騰訊手機管家,根據提示安裝好手機對應的驅動程序,驅動下載過程需要保持網路暢通
驅動安裝完成後,再點擊騰訊手機管家上的「工具箱」,再點擊下面「第三方工具」列表中的「一鍵ROOT」,將ROOT工具安裝好
如果手機連接正常,ROOT工具安裝完成後會進入ROOT界面,先勾選下面的「同意」,並點擊下一步
6
第二個界面是檢測手機當前的狀態是否具備ROOT條件,如果兩項均打勾,則點擊「開始ROOT」
7
點擊「開始ROOT」後就不要隨便亂動手機,等待ROOT過程結束,此過程大約需要1分鍾時間
『拾』 安卓手機屏幕解析度怎麼調整
安卓手機屏幕解析度調整方法:
首先手機必須獲得ROOT許可權,接著你需要確定手機的顯示density和解析度,desity的意思就是密度,在安卓系統中,desity是一個非常重要的顯示參數。如果density設置不當,比如density設置過高,可能會使字體和其他一些UI顯示得很小,而如果高分屏設置density過低,也可能會使字體和其他UI顯得過大,甚至影響App兼容。