メジャー単位の換算式


public class DensityUtil {  
  
    /** 
     *   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);  
    }  
}

画面の高さと幅を取得する方法
        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;  //  ( )
        int height = metric.heightPixels;  //  ( )
        float density = metric.density;  //  (0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;  //  DPI(120 / 160 / 240)

しかし、低密度の小さな画面の携帯電話では、上のコードだけでは正確なサイズを取得できないことに注意してください.例えば、240 x 320画素の低密度携帯電話では、上記のコードを実行すると、取得した画面サイズは320 x 427である.そこで,研究の結果,多解像度サポートが設定されていなければ,Androidシステムは240 x 320の低密度(120)サイズを中密度(160)対応のサイズに変換し,プログラムの符号化に大きく影響することが分かった.だから、エンジニアリングのAndroidManifestが必要です.xmlファイルに、supports-screensノードを追加します.具体的な内容は以下のとおりです:
詳細は以下を参照してください.http://www.cnblogs.com/renyuan/archive/2012/07/25/2607936.html
メトリック単位の換算式はandroidソースパッケージTypedValue.JAvaでは、以下の関数を見てみましょう.コードは以下の通りです:public static float applyDimension(int unit,float value,DisplayMetrics){switch(unit){case COMPLEX_UNIT_PX:returnvalue;case COMPLEX_UNIT_DIP:returnvalue*metrics.density;case COMPLEX_UNIT_UNIT_SP:returnvalue*metrics.scaleddensity;case COMPLEX_UNIT_PT:returnvalue*metrics;metrics*metrics.scaleddensity;case COMPLEX_UNIT_PT:returnvalue*metric*mets.xdpi*(1.0 f/72); case COMPLEX_UNIT_IN:     return value * metrics.xdpi; case COMPLEX_UNIT_MM:     return value * metrics.xdpi * (1.0f/25.4f); } return 0;}この関数機能は、各単位を画素に換算する機能です.   metrics.density:デフォルトはDENSITY_DEVICE/(float) DENSITY_DEFAULT;   metrics.scaleddensity:デフォルトはDENSITY_DEVICE/(float) DENSITY_DEFAULT;   metrics.xdpi:デフォルトはDENSITY_DEVICE;   DENSITY_DEVICE:スクリーン密度DENSITY_DEFAULT:デフォルトは160