最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Android應(yīng)用中屏幕尺寸的獲取及dp和px值的轉(zhuǎn)換

 更新時(shí)間:2016年03月22日 16:20:54   作者:chenlijian  
這篇文章主要介紹了Android應(yīng)用中屏幕尺寸的獲取及dp和px值的轉(zhuǎn)換方法,這里主要介紹將dp轉(zhuǎn)化為px值的例子,需要的朋友可以參考下

獲取屏幕尺寸

通過WindowManager獲取

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

//其中display = getWindowManager().getDefaultDisplay() 獲得了一個(gè)DefaultDisplay對象; 然后 display.getMetrics(dm) 把屏幕尺寸信息賦值給DisplayMetrics dm

//注意:WindowManager有時(shí)候需要通過context。getSystemService獲?。篧indowManager wm = (WindowManager) context.getSystemService(context.WINDOW_SERVICE);

DisplayMetrics和Display的關(guān)系。;

Display指代顯示區(qū)域這個(gè)對象,它可能是真實(shí)的物理屏幕,也可能僅指應(yīng)用程序的顯示區(qū)域,比如在非全屏Activity里,系統(tǒng)因?yàn)橛袪顟B(tài)欄,因此顯示區(qū)域要比物理屏幕要小。DisplayMetrics里封裝了顯示區(qū)域的各種屬性值。查看源碼發(fā)現(xiàn),在DisplayMetrics對各個(gè)屬性值的注釋都說明為真實(shí)的物理尺寸。而且也發(fā)現(xiàn)display.getMetrics(dm)這一函數(shù)基本在應(yīng)用在獲取真實(shí)屏幕尺寸的時(shí)候。記住這一點(diǎn)即好。

注:構(gòu)造函數(shù)DisplayMetrics不需要傳遞任何參數(shù);調(diào)用getWindowManager()之后,會(huì)取得現(xiàn)有Activity的Handle。然后,diplay將取得的寬高維度存放于DisplayMetrics對象中,而取得的寬高維度是以像素為單位(Pixel),“像素”所指的是“絕對像素”而非“相對像素”。

通過DisplayMetrics對象dm可以獲得如下信息

width = dm.widthPixels;

height = dm.heightPixels;

xdpi = dm.xdpi;

ydpi = dm.ydpi;

density = dm.densityDpi;

fdensity = dm.density;

將dp和px轉(zhuǎn)化成對應(yīng)的px數(shù)值的實(shí)例:

int padding =4;

padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4,

context.getResources().getDisplayMetrics());


解釋:
padding的單位是:dip, padding的大小是:4

雖然是4dip,但是,不是最終padding的真實(shí)單位。

他是通過計(jì)算以后,4dp和密度系數(shù)相乘得到的一個(gè)值,實(shí)際上計(jì)算出來的padding單位是像素,也就是它的寬度。在不同dpi的屏幕上,這個(gè)值是不一樣的。

即:將dp轉(zhuǎn)化為px,返回的是一個(gè)dp對應(yīng)的px數(shù)值。

如果這里是COMPLEX_UNIX_SP,就是講sp轉(zhuǎn)化為dp。

單位間的轉(zhuǎn)換就用這個(gè)方法,可以將其封裝成一個(gè)工具方法。

進(jìn)一步理解:
applyDimension方法是將4像素轉(zhuǎn)換為6dp(480x800)、4dp(320x800)、3dp(240x320), 所以返回的值對應(yīng)不同的分辨率(通過getDisplayMetrics就得到了)就是6、4、3

源代碼:

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;

}

相關(guān)文章

  • Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法

    Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法

    這篇文章主要介紹了Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法,涉及Android針對圖片的讀取、運(yùn)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 使用Flutter開發(fā)的抖音國際版實(shí)例代碼詳解

    使用Flutter開發(fā)的抖音國際版實(shí)例代碼詳解

    這篇文章主要介紹了使用Flutter開發(fā)的抖音國際版,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • android dialog邊框去除白色邊框?qū)崿F(xiàn)思路及代碼

    android dialog邊框去除白色邊框?qū)崿F(xiàn)思路及代碼

    android dialog邊框含有白色真是美中不足啊,本文將介紹如何去除白色邊框,有思路及代碼,感興趣的朋友可以了解下
    2013-01-01
  • Android Studio 生成自定義jar包的步驟詳解

    Android Studio 生成自定義jar包的步驟詳解

    這篇文章主要介紹了Android Studio 生成自定義jar包的具體操作步驟,需要的朋友可以參考下
    2018-01-01
  • 詳解android使用SAX解析XML文件

    詳解android使用SAX解析XML文件

    本篇文章主要是介紹了android使用SAX解析XML文件,解析XML的方式有很多種,本篇主要介紹使用sax來解析,需要的可以了解一下。
    2016-11-11
  • Android仿微信、錄制音頻并發(fā)送功能

    Android仿微信、錄制音頻并發(fā)送功能

    這篇文章主要介紹了Android仿微信、錄制音頻并發(fā)送功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android+SQLite數(shù)據(jù)庫實(shí)現(xiàn)的生詞記事本功能實(shí)例

    Android+SQLite數(shù)據(jù)庫實(shí)現(xiàn)的生詞記事本功能實(shí)例

    這篇文章主要介紹了Android+SQLite數(shù)據(jù)庫實(shí)現(xiàn)的生詞記事本功能,結(jié)合具體實(shí)例形式分析了Android操作SQLite數(shù)據(jù)庫實(shí)現(xiàn)生詞記錄功能的操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-09-09
  • 詳解Android中AIDL的使用

    詳解Android中AIDL的使用

    AIDL是Android Interface definition language的縮寫,對于小白來說,AIDL的作用是讓你可以在自己的APP里綁定一個(gè)其他APP的service,這樣你的APP可以和其他APP交互,接下來通過本文給大家分享Android AIDL使用,需要的朋友參考下吧
    2021-07-07
  • Android SDK安裝及配置教程

    Android SDK安裝及配置教程

    這篇文章主要為大家詳細(xì)介紹了Android SDK安裝及配置教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 準(zhǔn)確測量 Android 應(yīng)用中 Activity 和 Fragment 的啟動(dòng)時(shí)間的詳細(xì)過程

    準(zhǔn)確測量 Android 應(yīng)用中 Activity 和 Fragmen

    在 Android 應(yīng)用開發(fā)中,了解每個(gè) Activity 和 Fragment 的啟動(dòng)時(shí)間對于性能優(yōu)化至關(guān)重要,本文將介紹幾種方法來準(zhǔn)確測量 Activity 和 Fragment 的啟動(dòng)時(shí)間,并提供實(shí)際操作步驟,以幫助提升應(yīng)用的響應(yīng)速度和用戶體驗(yàn),需要的朋友可以參考下
    2024-07-07

最新評論

江川县| 乌拉特中旗| 长岛县| 徐州市| 昌乐县| 龙门县| 涞源县| 碌曲县| 华蓥市| 曲周县| 金川县| 谢通门县| 涡阳县| 武宁县| 东阳市| 化隆| 东乌| 军事| 尚义县| 西昌市| 邵阳市| 洮南市| 永登县| 磴口县| 凉城县| 白朗县| 东山县| 奎屯市| 呼伦贝尔市| 云和县| 浏阳市| 北海市| 元氏县| 廊坊市| 宜城市| 紫阳县| 镇平县| 清涧县| 岫岩| 通化市| 沂水县|