如何在Android中将像素转换为dip(密度无关像素)

use*_*614 6 android

在我的Android应用程序中,我有像素(69px),我需要将这些像素转换为dip(密度无关像素).

有什么建议?

Rom*_*Guy 10

只需按DisplayMetrics.density划分您的像素值.


Bas*_*ous 7

希望这会有所帮助

Resources r = getResources();
float dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 69, r.getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

  • 不,它给出了相同的值.我的意思是像素的值为dip (2认同)

Khu*_*boo 7

你可以试试这个:

public int convertDiptoPx(int pixel){

    float scale = getResources().getDisplayMetrics().density;
    int dips=(int) ((pixel * scale) + 0.5f);
    logMessage("Px=" +pixel+"  DipValue="+dips );   
    return dips;
}
Run Code Online (Sandbox Code Playgroud)

编辑: __CODE__文件,但它无法正常工作.

这是我使用的代码

public int convertPxtoDip(int pixel){
    float scale = getResources().getDisplayMetrics().density;
    int dips=(int) ((pixel / scale) + 0.5f);
    return dips;
}
Run Code Online (Sandbox Code Playgroud)