Android Convert Px to Dp (Video Aspect Ratio) [duplicate]

时光毁灭记忆、已成空白 提交于 2019-11-26 12:56:55

问题


Possible Duplicate:
converting pixels to dp in android

I\'m trying to convert pixels to dp. What is the formula?

Lets convert 640 and 480 into dp. The docs say this

The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160)

But I don\'t think that is what I need (and I don\'t know how to use this). I guess I just need the forumla. I have the code ready:

DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    switch(metrics.densityDpi)
    {
         case DisplayMetrics.DENSITY_LOW:
         int sixForty = ?
         int fourEighty = ?
         break;

         case DisplayMetrics.DENSITY_MEDIUM:
         int sixForty = ?
         int fourEighty = ?
         break;

         case DisplayMetrics.DENSITY_HIGH:
         int sixForty = ?
         int fourEighty = ?
         break;
    }

回答1:


Instead of trying to infer the dp conversion factor from the screen's density classification, you can simply query it directly:

getWindowManager().getDefaultDisplay().getMetrics(metrics);
float logicalDensity = metrics.density;

logicalDensity will then contain the factor you need to multiply dp by to get physical pixel dimensions for the device screen.

int px = (int) Math.ceil(dp * logicalDensity);


来源:https://stackoverflow.com/questions/6656540/android-convert-px-to-dp-video-aspect-ratio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!