如何制作适用于移动设备和平板电脑的响应式Android应用程序?

时间:2014-02-08 04:43:56

标签: android android-layout

我创建了一个Android应用程序。

当我在Mobile Phone中运行我的应用程序时,它运行得很好,但是当我在Tablet中运行时,应用程序的布局会发生变化。

那么,如何制作在MobileTablet中使用的自适应Android应用程序?

5 个答案:

答案 0 :(得分:9)

在Android上,我们可以使用 Android 3.2 中引入的 屏幕尺寸选择器 来定义使用。 有关详细信息,请访问http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html。以下代码段已从同一链接中提取:

public class MyActivity extends Activity 
{
    @Override protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate();
        Configuration config = getResources().getConfiguration();
        if (config.smallestScreenWidthDp >= 600) 
        {
            setContentView(R.layout.main_activity_tablet);
        } 
        else 
        {
            setContentView(R.layout.main_activity);
        }
    }
}

尺寸配置的另一个好参考是保持分隔符。详细解释如下:http://www.vanteon.com/downloads/Scaling_Android_Apps_White_Paper.pdf

答案 1 :(得分:4)

我只谈论移动响应式设计。 对于布局,我相信您目前只能通过以下方式进行区分:

res/layout/my_layout.xml            // layout for normal screen size
res/layout-small/my_layout.xml      // layout for small screen size
res/layout-large/my_layout.xml      // layout for large screen size
res/layout-large-land/my_layout.xml // layout for large screen size in landscape mode

您可以找到有关可以添加到文件夹结构的更多信息,以区分不同设置Documentationandroid-developers.blogspot

为了适应其他类型的平板电脑和屏幕尺寸,android引入了一种新方法来指定更多离散屏幕尺寸的资源。新技术基于布局所需的空间量(例如600dp的宽度),而不是试图使布局适合广义尺寸组(例如大或xlarge)。

更新:基本上有两种方法可以让您的受众获得使用响应式设计的良好体验:

  1. 优化内容的布局。

  2. 调整显示的内容。

  3. Update2:在您的活动中写下此代码

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscapeView);
    
    } else {
        setContentView(R.layout.portraitView);
    }
    

    并在您的清单文件中添加此行

    android:configChanges="orientation|keyboardHidden|screenSize"
    

    因此,这将处理这两件事,它不会重新启动您的活动,并将根据您的方向更改加载布局。有关更多信息,请转至http://www.codeproject.com/Articles/422431/Handling-screen-layout-changes-in-Android

答案 2 :(得分:1)

@Sagar Zala

尝试将约束布局用作布局的父视图,这将有助于使您的应用程序对手机和设备做出响应。

Constraint Layout

答案 3 :(得分:0)

您将需要创建不同的布局文件夹和具有不同尺寸组的文件夹。然后,从维度文件夹应用xml中的大小,然后再引用特定的布局文件夹。

我在下面的链接中找到了一个很好的解决方案,该链接可用于我的所有应用,没有任何问题,并且有许多新技术可实现屏幕兼容性。

Android Screen Compatibility

答案 4 :(得分:0)

您必须为不同的屏幕尺寸创建布局,因为创建单一的设计布局并希望它在所有屏幕尺寸上都能正常工作并且看起来几乎是不可能的

supporting multiple screen sizes 的 android 文档中所定义,我们需要专注于使用 3 件事。

  1. 使用更多约束布局,因为与其他布局组件相比,它为我们提供了更多的相对样式
  2. 在 android studio 中使用限定符创建替代布局
  3. 使用可以拉伸而不会模糊的位图或 svg 组件。

约束布局 它支持百分比值之类的东西,现在将它们与指南结合起来,它成为设计布局的强大工具

替代布局 在 android studio 的布局设计选项卡中,单击方向更改图标,然后从下拉列表中选择 create other... 选项。现在您需要从提供的列表中选择限定符并创建相对于不同屏幕尺寸的布局,而无需编写额外的代码来显示这些布局。当提供的限定符布局设计匹配时,这些布局就会出现。

您可以按照上面提供的链接查看他们如何使用带有值的最小宽度限定符

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a large phone screen ~5" (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

这些是常用的自定义值,几乎涵盖所有设备尺寸,您可以根据需要添加更精细的尺寸,然后您还可以添加不同的方向限定符以及最小宽度限定符。

所有这些的组合将使您的应用程序完全响应

我知道我正在回答一个老问题,但我的回答可能会帮助其他人使用最近的可用解决方案搜索类似的查询。