如何在android中以编程方式获取ScreenSize

use*_*356 71 android android-screen

Android将屏幕尺寸定义为Normal Large XLarge等.

它会自动选择适当文件夹中的静态资源.我需要有关我的java代码中当前设备的数据.DisplayMetrics仅提供有关当前设备密度的信息.没有关于屏幕尺寸的信息.

我发现在grep的代码的屏幕尺寸枚举这里 然而,这似乎并没有提供给我的4.0 SDK.有没有办法获得这些信息?

Ale*_*ood 115

将此代码复制并粘贴到您的代码中Activity,当它执行时,它将是Toast设备的屏幕尺寸类别.

int screenSize = getResources().getConfiguration().screenLayout &
        Configuration.SCREENLAYOUT_SIZE_MASK;

String toastMsg;
switch(screenSize) {
    case Configuration.SCREENLAYOUT_SIZE_LARGE:
        toastMsg = "Large screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_NORMAL:
        toastMsg = "Normal screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_SMALL:
        toastMsg = "Small screen";
        break;
    default:
        toastMsg = "Screen size is neither large, normal or small";
}
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

  • 我使用上面的这个并运行不同的模拟器,如大,中,小.但我得到烤面包正常的屏幕..如何解决它 (12认同)

Dav*_*vid 50

private static String getScreenResolution(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

    return "{" + width + "," + height + "}";
}
Run Code Online (Sandbox Code Playgroud)

  • 您的代码给出的结果不包括底部的软触摸按钮和顶部的状态栏和工具栏@David (3认同)

Ans*_*u P 13

确定屏幕尺寸:

int screenSize = getResources().getConfiguration().screenLayout &Configuration.SCREENLAYOUT_SIZE_MASK;
  switch(screenSize) {
      case Configuration.SCREENLAYOUT_SIZE_LARGE:
        Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
         break;
       case Configuration.SCREENLAYOUT_SIZE_NORMAL:
          Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show();
           break;
       case Configuration.SCREENLAYOUT_SIZE_SMALL:
           Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
           break;
       default:
           Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();

 }
Run Code Online (Sandbox Code Playgroud)

确定密度:

int density= getResources().getDisplayMetrics().densityDpi;
   switch(density)
  {
  case DisplayMetrics.DENSITY_LOW:
     Toast.makeText(context, "LDPI", Toast.LENGTH_SHORT).show();
      break;
  case DisplayMetrics.DENSITY_MEDIUM:
       Toast.makeText(context, "MDPI", Toast.LENGTH_SHORT).show();
      break;
  case DisplayMetrics.DENSITY_HIGH:
      Toast.makeText(context, "HDPI", Toast.LENGTH_SHORT).show();
      break;
  case DisplayMetrics.DENSITY_XHIGH:
       Toast.makeText(context, "XHDPI", Toast.LENGTH_SHORT).show();
      break;
  }
Run Code Online (Sandbox Code Playgroud)

参考:http: //devl-android.blogspot.in/2013/10/wifi-connectivity-and-hotspot-in-android.html

  • 虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分并提供参考链接.如果链接的页面发生更改,则仅链接的答案可能会无效. (2认同)

小智 5

DisplayMetrics displayMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

int width = displayMetrics.widthPixels;

int height = displayMetrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)