支持多种屏幕尺寸

时间:2017-05-23 11:23:42

标签: android layout

我想让我的应用程序支持我上次发布的构建中的所有屏幕大小我使用wrap contentmatch parent来处理它,但现在我想生成响应每个屏幕大小的所有布局。登记/> 我知道如何通过为每个大小创建文件夹并在其中放置布局来实现这一点但是我要求有任何插件或功能可以动态地进行此操作而不需要自己制作,我知道我将在布局中编辑以处理许多情况但是我希望通过生成布局并自定义我想要的内容来简化它。
感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对于支持乘法设备,有两种方式,一种来自视图,另一种是以编程方式。如果要在xml中执行所有操作,可以使用RelativeLayout轻松完成。它有一些参数,例如android:layout_alignParentBottomandroid:layout_alignLeft等,通过这些参数,您可以自定义多个屏幕的视图。 其他方式是以编程方式,您可以在java端执行操作。通过这种方式,首先,你应该获得屏幕尺寸:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int SCREEN_WIDTH = size.x;
int SCREEN_HEIGHT = size.y;

在引入getSize之前(在API级别13中),您可以使用现已弃用的getWidth和getHeight方法:

Display display = getWindowManager().getDefaultDisplay(); 
int SCREEN_WIDTH = display.getWidth();  // deprecated
int SCREEN_HEIGHT = display.getHeight();  // deprecated

然后,获取显示指标和密度:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float density = metrics.density;

获取这些参数后,找到所需的视图。要设置视图,您将需要以下这些简单的行:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    layoutParams.width = (int) (40 * density);
    layoutParams.height = (int) (40 * density);
    imageView.setLayoutParams(layoutParams);