センチまたはインチでAndroidの物理的な画面の高さを決定する方法はありますか?

StackOverflow https://stackoverflow.com/questions/2193457

質問

私は私が原因ミリ秒あたりのピクセル数で重力加速度を計算することができますので、画面の長さの本当の単位でデバイス上で正確にどのように大きな知っておく必要があります。

AndroidのAPIのメソッドのどこかには、このためにありますか?

役に立ちましたか?

解決

使用以下ます:

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(mWidthPixels/dm.xdpi,2);
    double y = Math.pow(mHeightPixels/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
    Log.d("debug","Screen inches : " + screenInches);
mWidthPixelsとmHeightPixelsをコード

以下から取得され、

private void setRealDeviceSizeInPixels()
{
    WindowManager windowManager = getWindowManager();
    Display display = windowManager.getDefaultDisplay();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    display.getMetrics(displayMetrics);


    // since SDK_INT = 1;
    mWidthPixels = displayMetrics.widthPixels;
    mHeightPixels = displayMetrics.heightPixels;

    // includes window decorations (statusbar bar/menu bar)
    if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17)
    {
        try
        {
            mWidthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(display);
            mHeightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display);
        }
        catch (Exception ignored)
        {
        }
    }

    // includes window decorations (statusbar bar/menu bar)
    if (Build.VERSION.SDK_INT >= 17)
    {
        try
        {
            Point realSize = new Point();
            Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
            mWidthPixels = realSize.x;
            mHeightPixels = realSize.y;
        }
        catch (Exception ignored)
        {
        }
    }

参考のために、この記事を参照してください。 取得画面寸法のピクセル

他のヒント

最後に、現在のサイズの使用恐らくMath.roundを取得するための

 DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(dm.widthPixels/dm.xdpi,2);
    double y = Math.pow(dm.heightPixels/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
    Log.d("debug","Screen inches : " + screenInches);

screenInches=  (double)Math.round(screenInches * 10) / 10;

Androidの開発者は、画面情報。

使用xdpi * widthPixelsydpi * heightPixelsあなたは私が考えてほしい何を得る可能性があります。

コードスニペット次のインチの

での画面サイズを取得するのに役立ちます
public static double getScreenSizeInches(Activity activity){
    WindowManager windowManager = activity.getWindowManager();
    Display display = windowManager.getDefaultDisplay();
    DisplayMetrics displayMetrics = new DisplayMetrics();
    display.getMetrics(displayMetrics);

    // since SDK_INT = 1;
    int mWidthPixels = displayMetrics.widthPixels;
    int mHeightPixels = displayMetrics.heightPixels;

    // includes window decorations (statusbar bar/menu bar)
    if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17) {
        try{
            mWidthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(display);
            mHeightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display);
        } catch (Exception ignored) {}
    }

    // includes window decorations (statusbar bar/menu bar)
    if (Build.VERSION.SDK_INT >= 17) {
        try {
            Point realSize = new Point();
            Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
            mWidthPixels = realSize.x;
            mHeightPixels = realSize.y;
        } catch (Exception ignored) {}
    }

    DisplayMetrics dm = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(mWidthPixels / dm.xdpi, 2);
    double y = Math.pow(mHeightPixels / dm.ydpi, 2);
    return Math.sqrt(x + y);
}

・ホープこのヘルプます。

私は本当のサイズを取得するために、これを使用します。

final DisplayMetrics metrics = new DisplayMetrics();
final WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    windowManager.getDefaultDisplay().getRealMetrics(metrics);
}
else {
    windowManager.getDefaultDisplay().getMetrics(metrics);
}
int realHeight = metrics.heightPixels; // This is real height
int realWidth = metrics.widthPixels; // This is real width

あなたはこれを計算するために、画面密度を使用する必要があります。

Context.getResources().getDisplayMetrics().density

のドキュメントによると:

  

ディスプレイの論理密度。これは、1つのDIPは、システムのディスプレイのベースラインを提供し、約160解像度スクリーン(例えば240×320、1.5「×2」画面)上で一つの画素の密度の独立した画素単位のためのスケーリングファクタです。したがって160dpiスクリーン上にこの濃度値は1になります。 120 dpiの画面には、0.75であろう。など。

     xdpiとydpiによって与えられるのではなく、ディスプレイの解像度にグロスの変化に基づいて、ステップの全体的なUIのサイズをスケーリングするために使用される

この値は、正確に(実際の画面サイズに追従しない。例えば、240×320スクリーンその幅が1.8" 、1.3" 、などであっても、1の密度を持つことになりますが、画面の解像度が320×480に増加するが、画面サイズが、その後密度は(おそらく1.5に)増加したことになる1.5 『×2』を維持している場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top