我想为不同的屏幕尺寸制作 Android 应用响应式布局

Posted

技术标签:

【中文标题】我想为不同的屏幕尺寸制作 Android 应用响应式布局【英文标题】:I want to make Android app resposive layout for diffrent-diffrent screen size 【发布时间】:2022-01-04 13:09:56 【问题描述】:

首先创建xml文件

默认情况下:-activity_main

小型手机:-activity_main(sw360)

大手机:-activity_main(sw480)

超大手机/平板电脑:-activity_main(sw600)

我想遵循这个条件但是有些错误??????

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    Configuration config = getResources().getConfiguration();
    if (config.smallestScreenWidthDp >= 320 && config.smallestScreenWidthDp <= 480) 
        setContentView(R.layout.activity_main(sw320));
     else if (config.smallestScreenWidthDp >= 481 && config.smallestScreenWidthDp <= 600) 
        setContentView(R.layout.activity_main(sw480));
     else(config.smallestScreenWidthDp >= 601
        setContentView(R.layout.activity_main(sw600));
     
  

See this image to clear

【问题讨论】:

你不需要在Activity中设置不同的布局。如果您的布局文件是用相同的名称创建的并且在正确的配置文件夹中,android OS 将根据设备屏幕大小自动选择布局文件。 但我希望后端代码跟随 【参考方案1】:

您不必对其进行编程,当您使用正确的文件夹和命名结构时,系统将确定正确的布局或使用默认布局(位于layout 文件夹中)。

请参阅此link,其中详细介绍了文件夹结构。 例如:

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7” tablets
res/layout-sw600dp-land/main_activity.xml   # For 7” tablets in landscape

所以你的情况是:

res/layout/activity_main.xml                # default (smaller than 360dp available width)
res/layout-sw360dp/activity_main.xml        # Small phones (360dp wide and bigger)
res/layout-sw480dp/activity_main.xml        # Large phones (480dp wide and bigger)
res/layout-sw600dp/activity_main.xml        # XLarge phones (600dp wide and bigger)

然后您的 Activity 可以使用此 OnCreate 方法:

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

【讨论】:

你能告诉我更多细节吗... 布局的默认文件夹是 /res/layout/ 文件夹,当没有指定其他内容时,它将从该文件夹中选择布局。您可以添加其他带有限定符的布局文件夹,这些。系统将查看应用程序的设备或当前状态是否对该限定符有效,如果是则可以使用该布局,否则将回退默认值。你可以阅读更多关于它here 当您的布局不必是自适应的而只是响应式时,您也可以使用Constraint Layout,它很灵活并且可以很好地扩展【参考方案2】:

使用 wrap content 和 match-parent 而不是为视图提供硬维度。

【讨论】:

以上是关于我想为不同的屏幕尺寸制作 Android 应用响应式布局的主要内容,如果未能解决你的问题,请参考以下文章

Iphone 5屏幕分辨率问题[关闭]

Xcode 6 使用多个故事板

不同屏幕尺寸的标签系列自动布局? [关闭]

如何让这个flutter屏幕根据不同的屏幕尺寸做出响应?

Android应用程序支持不同屏幕(尺寸密度)

如何从不同的屏幕尺寸响应离子图像?