Java Android 4.0、4.5和5.0设备的不同布局
我需要不同的布局设备4.0,4.5和5.0 但我使用以下方法检查屏幕大小和宽度:Java Android 4.0、4.5和5.0设备的不同布局,java,android,android-layout,layout,Java,Android,Android Layout,Layout,我需要不同的布局设备4.0,4.5和5.0 但我使用以下方法检查屏幕大小和宽度: Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics outMetrics = new DisplayMetrics (); display.getMetrics(outMetrics); float density = getResources().getDisplayMetrics().density; float
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpWidth = outMetrics.widthPixels / density;
等等
Sony Xperia Sp I have W: 360.0 H: 592.0
Sony Xperia Z I have the same result W: 360.0 H: 592.0
但屏幕大小不同,布局看起来也不一样
如何正确地为此设备和其他设备尺寸创建不同的布局?
编辑:
在这种情况下,布局看起来非常不同,因为其中一部手机在设备设置中更改了字体大小。。GG优秀的测试人员:)
谢谢。向上投票。Android使用与密度无关的像素(dp),因此它应该很容易适应不同的大小。在res文件夹中创建layout-w320p等子文件夹,并在该文件夹中自定义布局以适应不同的屏幕大小
始终尝试使用RelativeLayout而不是FrameLayout,并将项目相对于设备进行定位。项目大小应为包裹内容,以便自动缩小到设备。您可以根据像素的精确宽度提供不同的布局,因为您已经知道它们: 示例
res/layout/main_activity.xml # For handsets (smaller than 600dp available width)
res/layout-sw600dp/main_activity.xml # For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml # For 10” tablets (720dp wide and bigger)
res/layout/main_activity.xml # For handsets (smaller than 600dp available width)
res/layout-w600dp/main_activity.xml # Multi-pane (any screen with 600dp available width or more)
阅读有关索尼Xperia Sp的官方android文档,我有W:360.0 H:592.0索尼Xperia Sp我有W:360.0 H:592.0 索尼Xperia Z我有同样的结果W:360.0H:592.0 这不是屏幕大小。。这完全取决于您的设备屏幕分辨率。 如果保持此屏幕分辨率,则应根据需要创建不同的布局或值文件 value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi 或 drawable-sw320dp-hdpi
可抽出式-sw320dp-xhdpi 可抽出式-sw320dp-xxhdpi
阅读培训教程-旁注,没有Android 4这样的东西。5@mhenryk我猜OP指的是屏幕对角线4.5英寸,我知道。但我说过两个不同的设备(和尺寸)在dp中具有相同的宽度。因此,在我的示例sw320dp中使用相同的布局。但我希望索尼SP和Z的版本有所不同。啊,好吧,他们有不同版本的android吗?然后,您可以为平台版本添加一个额外的限定符。value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi它有帮助