Android中dp、px轉換案例分析

文章摘要:

Android開發中,界面顯示很重要,常用的是dp和px的認識,還有其轉換。本文以個人前兩天碰到的問題來演示dp、px轉換過程。


1、問題描述

    系統登錄界面有自己開發的輸入鍵盤,在像素1280*728的Android設備上正常顯示,而在1920*1128的設備上卻顯示變小,且相對位置發生改變。


2、問題分析

    1)鍵盤爲自定義的佈局,彈出位置設定如下:

          numkeyPop.showAtLocation(dialog, Gravity.NO_GRAVITY, width1, height1);

    2)參數含義

          dialog:依附的view

          Gravity.NO_GRAVITY:不採用相對座標

          width2, height2:顯示的座標起點,單位是px

    3)源碼分析

          int width = wm.getDefaultDisplay().getWidth();

          int width1  = (width / 2) + 216; //查看佈局,登錄框是430dp,216的單位是dp

    4)分析總結

         參數值傳入錯誤,單位不一致。


3、解決方法

    對dp進行轉換,換成px

    步驟如下:

    1)獲取像素密度

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

    2)轉換

         int width2 = (int)((width / 2) + 216 * scale + 0.5f);

    3)修改參數

         numkeyPop.showAtLocation(dialog, Gravity.NO_GRAVITY, width2, height2);


4、案例總結

    1)1280*728上 1dp = 2.9px1920*1128上 1dp = 4.4px

    2)dp是一個相對單位

    3)java方法中傳遞的參數的單位要注意

    4)dp、px及其轉換參考

          


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章