導航:首頁 > 操作系統 > androidpx轉sp

androidpx轉sp

發布時間:2023-02-02 16:33:06

A. android系統,240hdpi的時候,1px=多少sp

一般android設置長度和寬度多用dip,設置字體大小多用sp. 在屏幕密度為160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.當屏幕密度為240時,1dp=1dip=1.5px.

B. px、dp、sp、dpi之間的區別和轉換

px、dp、sp、dpi之間的區別和轉換

區別:

px (pixels)像素 -- 是像素,就是屏幕上實際的像素點單位。(一般UI人員在ps中經常使用)

dp/dip 設備獨立像素,android layout經常使用的尺寸單位,與設備屏幕有關,dp是虛擬像素,在不同的像素密度的設備上會自動適配。即與像素密度無關。

sp 放大像素,主要是處理字體的大小

dpi:Android支持四種不同的dpi模式:ldpi mdpi hdpi xhdpi

hdpi裡面存放高解析度的圖片,如WVGA (480x800),FWVGA (480x854)

mdpi裡面存放中等解析度的圖片,如HVGA (320x480)

ldpi裡面存放低解析度的圖片,如QVGA (240x320)

轉換:

a.首先了解常見的解析度Resolution:

解析度:指手機屏幕垂直和水平方向上的像素個數。比如解析度是480*320,則指設備垂直方向有480個像素點,水平方向有320個像素點。

VGA 顯示繪圖矩陣 640×480

HVGA half 480×320

QVGA quarter 320x240

b.dpi像素密度,指每英寸中的像素數,該值對應於DisplayMetrics類中屬性densityDpi的值

(例子:設備解析度為320*240,屏幕長2英寸寬1.5英寸 dpi=320/2=240/1.5=160)

c.density屏幕密度,指每平方英寸中的像素數,在DisplayMetrics類中屬性density的值為dpi/160(用這個進行dp sp之間的轉化)

如圖:

d.px 和 dp 互轉換

計算公式:實際像素數px=1dp*像素密度(dpi)/160 =dp*density

在320x480解析度,像素密度dpi為160,1dp=1px

在480x800解析度,像素密度dpi為240,1dp=1.5px

/**

* 根據手機的解析度從 dp 的單位 轉成為 px(像素)

*/

public static int dip2px(Context context, float dpValue) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (dpValue * scale + 0.5f);

}

/**

* 根據手機的解析度從 px(像素) 的單位 轉成為 dp

*/

public static int px2dip(Context context, float pxValue) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (pxValue / scale + 0.5f);

}

C. android 字是px 的怎麼轉換成sp

在Android開發中常用到px,in,mm,pt,dp,dip,sp這幾個單位px :是屏幕的像素點in :英寸mm :毫米pt :磅,1/72 英寸dp :一個基於density的抽象單位,如果一個160dpi的屏幕,1dp=1pxdip :等同於dpsp :同dp相似,但還會根據用戶的字體大小偏好來縮放。 查看原帖>>

D. android安卓系統dp/sp/px換算表比率 ratexxxhdpi是多少

首先要明確兩點,什麼是dpi?什麼是dp?
dpi = dots per inch(每個inch上有多少個點)
160dpi的屏幕,1dp = 1px,也就意味著1dp = 1/160 inch。
所以每個inch上的點數越多(點的密度越大),每個dp對應的px也就越大

dp/sp可以認為是相同的,不過sp通常用於設置字體大小,而dp用於尺寸。
dp/sp與px換算,是和設備的density相關的,dp * density (密度)= px。
float density = Resources.getSystem().getDisplayMetrics().density;

所謂的xhdpi,其dpi並不是某一固定取值,只要在240~320dpi范圍內的都認為是xhdpi(mdpi/hdpi/xhdpi/xxhdpi類似)。
所以同樣是xhdpi的手機,dp和px的轉換也是不同的。

E. android中pt怎麼轉成sp

先看下TypedValue.appplyDimension的源碼
[mw_shl_code=java,true]public static float applyDimension(int unit, float value, DisplayMetrics metrics) {
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}[/mw_shl_code]

從代碼中可以看到pt轉px和sp轉px的方法,所以轉換成px再轉成sp就可以了,可以自己寫個方法一次轉換啦:
[mw_shl_code=java,true]value * metrics.xdpi * (1.0f/72) / metrics.scaledDensity = value * metrics.xdpi * (1.0f/(72 * metrics.scaledDensity);[/mw_shl_code]

不然先算出px再從px算pt的話有兩次精度損失。

F. android屬性中的px,sp,dip有什麼區別

顯示單位px和dip以及sp的區別

dip: device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬體有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。

px: pixels(像素). 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。

pt: point,是一個標準的長度單位,1pt=1/72英寸,用於印刷業,非常簡單易用;

sp: scaled pixels(放大像素). 主要用於字體顯示best for textsize。

由此,根據 google 的建議,TextView 的字型大小最好使用 sp 做單位,而且查看
TextView
的源碼可知 Android 默認使用 sp 作為字型大小單位。

###################################################################

關於換算(以 sp 和 pt 為例)
查看TextView 等類的源碼,可知:

case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);

--------------------------
scaledDensity = DENSITY_DEVICE / (float) DENSITY_DEFAULT;
xdpi = DENSITY_DEVICE;

--------------------------
DENSITY_DEFAULT = DENSITY_MEDIUM = 160;

============================================
所以: 假設pt 和 sp 取相同的值 1,則可設 1pt 和 1sp 之間系數為 x,

1 * DENSITY_DEVICE / 72 = x * 1 * DENSITY_DEVICE / 160 =>
x = 160 / 72 = 2.2222

也就是說在 Android 中, 1pt 大概等於 2.22sp

以上供參考,如果 UI 能夠以 sp 為單位提供設計是最好的,如果設計中沒有 sp
的概念,則開發人員也可以通過適當的換算取近似值。

什麼是Dip和 Sp

過去,程序員通常以像素為單位設計計算機用戶界面。例如,定義一個寬度為300像素的表單欄位,列之間的間距為5個像素,圖標大小為16×16像素 等。這樣處理的問題在於,如果在一個每英寸點數(dpi)更高的新顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會小到難以看清 內容。

與解析度無關的度量單位可以解決這一問題。Android支持下列所有單位。

px(像素):屏幕上的點。

in(英寸):長度單位。

mm(毫米):長度單位。

pt(磅):1/72英寸。

dp(與密度無關的像素):一種基於屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。

dip:與dp相同,多用於 android/ophone示例中。

sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。

為了使用戶界面能夠在現在和將來的顯示器類型上正常顯示,建議大家始終使用sp作為文字大小的單位,將dip作為其他元素的單位。當然,也可以考慮使用矢量圖形,而不是用點陣圖。

閱讀全文

與androidpx轉sp相關的資料

熱點內容
獵人寶寶攻擊命令 瀏覽:159
操作系統是編譯原理嗎 瀏覽:646
雲伺服器遷移後 瀏覽:260
excel格式轉換pdf 瀏覽:987
登錄器一般存在哪個文件夾 瀏覽:535
中興光貓機器碼演算法 瀏覽:330
android響應時間測試 瀏覽:940
java編程思想第四版答案 瀏覽:888
如何對nbt編程 瀏覽:885
mscpdf 瀏覽:948
文件夾d盤突然0位元組可用 瀏覽:272
吃火腿腸的解壓場面 瀏覽:339
衛星鍋加密教程 瀏覽:792
php7的特性是什麼 瀏覽:469
編譯類高級語言源代碼運行過程 瀏覽:177
科普中國app怎麼分享 瀏覽:87
51單片機與32單片機比較 瀏覽:422
SQL加密存儲解密 瀏覽:507
電氣工程師把程序加密 瀏覽:797
解壓切東西動畫版 瀏覽:965