我有一个我最近无法解决的问题..
我为平板电脑制作了一个简单的应用程序,我在三星Galaxy Note 8.0中运行..我已经设置了布局,在某个地方放置了一些文本视图..我用xp编写它,使用dp作为边距,sp编写文本尺寸。 width和height布局设置为wrapcontent。但是当我在朋友三星Galaxy Tab 2 7.0中运行它时,布局与我在设备中看到的不匹配。当我尝试在10英寸模拟器中运行它时会发生同样的事情。
我使用layout-sw600dp作为我的布局文件夹..
为什么我的屏幕布局是这样的?我虽然使用layout-sw600dp布局可能会调整自己..或者我错了吗?
我已经阅读了关于不同屏幕尺寸支持的android文档,到目前为止我发现使用layout-sw600dp是很好的解决方案..
我已经使用以下方法检查了设备dpi:
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpHeight = outMetrics.heightPixels / density;
float dpWidth = outMetrics.widthPixels / density;
答案 0 :(得分:0)
每台设备都有不同的像素比,不同的dpi,不同的屏幕尺寸等。转到此链接,阅读它,您将了解如何管理不同的设备布局。
答案 1 :(得分:0)
如果您想在应用程序启动时检查屏幕英寸大小,可以使用以下两种方法计算英寸,但我认为第二种方法更精确。
public static float getScreenInchSizeByDensityDpi(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
double x = Math.pow((double)dm.widthPixels / (double)dm.densityDpi, 2);
double y = Math.pow((double)dm.heightPixels / (double)dm.densityDpi, 2);
double screenInches = Math.sqrt(x + y);
return (float) screenInches;
}
public static float getScreenInchSizeByXYDpi(Context context) {
DisplayMetrics dm = context.getResources().getDisplayMetrics();
double x = Math.pow((double)dm.widthPixels / (double)dm.xdpi, 2);
double y = Math.pow((double)dm.heightPixels / (double)dm.ydpi, 2);
double screenInches = Math.sqrt(x + y);
return (float) screenInches;
}