web-dev-qa-db-ja.com

取得方法Android=デバイスの画面サイズ?

同じ解像度の2つのAndroidデバイスがあります

Device1->解像度480x800の対角画面サイズ-> 4.7インチ

Device2->解像度480x800の対角画面サイズ-> 4.0インチ

デバイスの斜めの画面サイズを見つける方法は?

プログラムで7インチと10インチのタブレットを検出

上記のリンクを使用しましたが、両方のデバイスの画面サイズが斜めになります-> 5.8

30
Kailas

インチで画面サイズを取得するには、このコードを試してください

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
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);
double screenInches = Math.sqrt(x+y);
80
Ali Ahmad

これは機能しませんか?

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); 
11
Smartis

私がやっていることをしている場合、画面サイズにscaledDensityを掛けることを忘れずに、画面サイズに基づいて項目のサイズを変更してください。例えば。:

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) * dm.scaledDensity;
Log.d("debug", "Screen inches : " + screenInches); 

最後の2行目に注意してください! scaledDensityスタッフの詳細は次のとおりです。 DisplayMetrics.scaledDensityは実際にAndroidで何を返しますか?

5
Moe Singh
DisplayMetrics displayMetrics = context.getResources()
 .getDisplayMetrics(); 
 
 String screenWidthInPix = displayMetrics.widthPixels; 
 
 String screenheightInPix = displayMetrics。 heightPixels;
3
Nikhil Moharkar

ピタゴラスの定理は、Android電話/タブレット画面の対角サイズを見つけるために、同じ原理をiPhoneまたはBlackberry画面に適用できます。

他の方法で以下を試してください:

  DisplayMetrics met = new DisplayMetrics();                
  this.getWindowManager().getDefaultDisplay().getMetrics(met);// get display metrics object
  String strSize = 
  new DecimalFormat("##.##").format(Math.sqrt(((met.widthPixels / met.xdpi) *
  (met.widthPixels / met.xdpi)) +
  ((met.heightPixels / met.ydpi) * (met.heightPixels / met.ydpi))));
  // using Dots per inches with width and height
3
GrIsHu

これを試して:

 public static Boolean isTablet(Context context) {

    if ((context.getResources().getConfiguration().screenLayout & 
            Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {

      return true;
  }
    return false;
}
3
Niveditha

上記の答えのどれも正しい画面サイズを与えませんでした...しかし、以下の方法はそれを正しくします。

private String getScreenSize() {
    Point point = new Point();
    ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRealSize(point);
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    int width=point.x;
    int height=point.y;
    double wi=(double)width/(double)displayMetrics.xdpi;
    double hi=(double)height/(double)displayMetrics.ydpi;
    double x = Math.pow(wi,2);
    double y = Math.pow(hi,2);
    return String.valueOf(Math.round((Math.sqrt(x+y)) * 10.0) / 10.0);
}

注:これは、API 17以降でのみ機能します。

0
kcg