繁体   English   中英

如何制作可在手机和平​​板电脑中使用的响应式 Android 应用程序?

[英]How to make responsive Android application which is used in mobile and also in tablet?

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

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

那么,如何制作可在MobileTablet使用的响应式 Android 应用程序?

在 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

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

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

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

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

更新:基本上有两种方法可以利用响应式设计为您的观众提供良好的体验:

  1. 优化您的内容布局。

  2. 调整显示的内容。

更新 2:在您的活动中编写此代码

@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

@萨加尔扎拉

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

约束布局

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

正如 android 文档中定义的 支持多种屏幕尺寸,我们需要专注于使用 3 个东西。

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

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

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

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

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).

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM