如何知道android设备的最小宽度(sw)?

我有4个不同的设备:

  1. 华硕平板电脑,屏幕7“
  2. 联想平板电脑,屏幕7“
  3. HTC手机,屏幕大小5“
  4. HTC手机屏幕大小4.7“

我想知道我的设备的最小宽度(SW),以支持它的布局。

我想创build一个资源文件夹,如“layout-sw600dp”,但我不知道最小宽度(sw)的值。

我试图用这个代码打印sw:

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

但我不知道这是否是正确的价值。

我如何find最小宽度(sw)?

你可以试试这个:

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

对于细节: 这里

最佳解决scheme

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

最后一行返回dp中的SW值!

源谷歌: http : //android-developers.blogspot.fr/2011/07/new-tools-for-managing-screen-sizes.html

更正上面的答案,正确的代码find正确的SW试试这个:

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

screenWidth和screenHeight中较小的一个就是你的sw。

这是另一个简单的方法。

您可以从开发人员选项中检查设备的最小宽度 (在Android Studio模拟器中,这在我的真实设备中没有find)。

在这里输入图像说明

闵api 13以上去与@Tobliug答案 – 最好的解决scheme。

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

在API级别13以下试试这个答案

创buildSmallWidthCalculator.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);