web-dev-qa-db-ja.com

Androidデバイスの最小幅(sw)を知る方法は?

私は4つの異なるデバイスを持っています:

  1. Asusタブレット、画面サイズ7 "
  2. Lenovoタブレット、画面サイズ7 "
  3. HTC携帯電話、画面サイズ5 "
  4. HTC携帯電話、画面サイズ4.7 "

デバイスのサポートレイアウトを作成するために、デバイスの最小幅(sw)を知りたいです。

「layout-sw600dp」のようなリソースフォルダを作りたいのですが、最小幅(sw)の値がわかりません。

私はこのコードを使用してソフトウェアを印刷しようとしました:

DisplayMetrics metrics = getResources().getDisplayMetrics();
Log.i("Density", ""+metrics.densityDpi);

しかし、これが正しい値かどうかはわかりません。

最小幅(sw)を見つけるにはどうすればよいですか?

21
user2955394

あなたはこれを試すことができます:

DisplayMetrics dm = mActivity.getApplicationContext()
                    .getResources().getDisplayMetrics();
            float screenWidth = dm.widthPixels / dm.xdpi;
            float screenHeight = dm.heightPixels / dm.ydpi;

詳細: ここ

7
Rustam

最小API13以降の最適なソリューション:

Configuration config = getResources().getConfiguration();
config.smallestScreenWidthDp

最後の行は、SW値をdpで返します。

ソースグーグル: http://Android-developers.blogspot.fr/2011/07/new-tools-for-managing-screen-sizes.html

52
Tobliug

これは別の簡単な方法です。

開発者向けオプションからデバイスの最小幅を確認できます( Android Studio Emulator&It is found in my Real Device)。

enter image description here

15
Don Chakkappan

上記の答えの修正、正しいソフトウェアを見つけるための正しいコードはこれを試してください:

DisplayMetrics dm = getApplicationContext().getResources().getDisplayMetrics();
float screenWidth = dm.widthPixels / dm.density;
float screenHeight = dm.heightPixels / dm.density;

screenWidthとscreenHeightのどちらか小さい方がswです。

12
user2759617

Min api13以降は@Tobliugの回答-最良の解決策を採用しています。

 Configuration config = getResources().getConfiguration();
 config.smallestScreenWidthDp;// But it requires API level 13

APIレベル13未満では、この回答を試してください

作成SmallWidthCalculator.Javaクラス&このコードをコピーして貼り付けるだけ

import Android.content.Context;
import Android.graphics.Point;
import Android.os.Build;
import Android.util.DisplayMetrics;
import Android.util.Log;
import Android.view.Display;

 public class SmallWidthCalculator {
private static SmallWidthCalculator ourInstance = new SmallWidthCalculator();

public static SmallWidthCalculator getInstance() {
    return ourInstance;
}

private Context mContext;

private SmallWidthCalculator() {
}

public double getSmallWidth(Context context) {
    mContext = context;
    DisplayMetrics dm = context.getResources().getDisplayMetrics();
    int width = dm.widthPixels;
    int height = dm.heightPixels;


    double dpi = getDPI(width, height);


    double smallWidthDPI = 0;
    int smallWidth = 0;

    if (width < height)
        smallWidth = width;
    else
        smallWidth = height;

    smallWidthDPI = smallWidth / (dpi / 160);

    return smallWidthDPI;
}

private double getDPI(int width,
                      int height) {
    double dpi = 0f;
    double inches = getScreenSizeInInches(width, height);
    dpi = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / inches;
    return dpi;
}

private double getScreenSizeInInches(int width, int height) {
    if (mContext != null) {
        DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
        double wi = (double) width / (double) dm.xdpi;
        double hi = (double) height / (double) dm.ydpi;
        double x = Math.pow(wi, 2);
        double y = Math.pow(hi, 2);
        return Math.sqrt(x + y);
    }
    return 0;
}

}

アクティビティまたはフラグメントから、コンテキストを渡して、幅を小さくします。

double smallWidthDp=SmallWidthCalculator.getInstance().getSmallWidth(this);
9
Ranjith Kumar