【问题标题】:Layouts on different models of mobiles不同型号手机的布局
【发布时间】:2013-01-01 14:35:06
【问题描述】:

最近我为 Galaxy 10.1 ,7 英寸 1024x600 ,480x800 开发了一个应用程序,Note 800 高度 abd S3 720 高度。他们都在这些分辨率上完美运行。但是当我们谈论note 2和galaxy 7 plus等时,我们遇到了几个问题。这些设备上的布局没有正确显示。在那个我在布局中遇到问题时,我使用 layouts 文件夹作为 layouts-normal-xhdpi-1280x800 和 S3 layouts-normal-xhdpi-1280x720 并将所有布局放在一个文件夹中,这使得一个 apk 支持所有这些布局。

但是当客户下载 apk 时,他们会遇到一个问题,即 Galaxy Note 选择了 layout-normal-xhpi-1280x720 布局,这是正确的,但 S3 和 Galaxy Note 2 的密度不同。

由于这个问题,我不知道如何为 S3 和 Note 2 声明布局文件夹。 有什么方法我只使用默认的四个文件夹

布局超大

正常布局 Xhdpi

布局 mdpi

正常布局 hdpi

并支持所有屏幕的所有布局,如 S3、note 1、note 2、7 英寸加等。当我尝试开始我的项目时,我总是想到其中一个著名的大型游戏是“Temple Run”,它可以在所有手机和标签上运行。

制作一堆布局文件夹会使我的应用程序很重,就像它超过 80MB 限制一样,而 Google 市场只接受少于 50MB 的应用程序。

从语法上讲,有什么方法可以让我们只使用一个布局文件夹并在所有屏幕上支持这种布局。 我阅读了许多文章和 android 开发者门户,但它们并不让我满意。他们都说你必须为不同的屏幕制作不同的布局文件夹,甚至在 stackoverflow 上我也看到了同样的情况,以节省我在第一个项目中的时间 我使用这些技术,但我的工作现在每天都在增加,我希望我从那些使我的应用程序不会因为这些布局而变得沉重的技术开始,并且不要浪费我的时间来为应用程序数量制作布局数量。

我们将不胜感激,我希望得到答案和建议,因为许多新开发人员和其他开发人员都面临着这些问题。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    我的应用程序也面临这样的问题。但我找到了一个很好的解决方案。 我只有tablet 的一种布局,目录名称是layout-sw600dp。 现在,当部分涉及高度和宽度问题时,我创建了几个不同的values 目录,我在其中放置了dimensionsfont size 以及其他存根。所以平板屏幕的layout 中不会有constant 的值。

    androd:layout_width:"60dp" // i drop this scenario
    
    androd:layout_width:"@dimen/tab_width" // i used this scenario
    

    您的values 目录名称将类似于

    values-xlarge
    values-large
    

    所有值都将从您的值目录中获取。它不会创建不同的布局,但一个布局可以多次使用。

    编辑:

    以下是Developer.android网站的话。 配置示例

    为了帮助您针对不同类型的设备定位您的一些设计,以下是一些典型屏幕宽度的数字:

    320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
    480dp: a tweener tablet like the Streak (480x800 mdpi).
    600dp: a 7” tablet (600x1024 mdpi).
    720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
    

    使用表 2 中的尺寸限定符,您的应用程序可以使用您想要的任何宽度和/或高度数字在手机和平​​板电脑的不同布局资源之间切换。例如,如果 600dp 是您的平板电脑布局支持的最小可用宽度,您可以提供以下两组布局:

    res/layout/main_activity.xml # 对于手机
    res/layout-sw600dp/main_activity.xml # 对于平板电脑

    ===

    在此,您可以看到 1280*720 的布局在 layout-sw720dp 下,因此您应该使用这个让您决定差异的东西,而不是创建 layout-normal-xlarge。而不是使用layout-large-mdpilayout-large-ldpi 进行不同的识别,您不只是通过它的smallest width 识别吗?因为,android 为不同的图像提供drawables 目录,唯一的就是它的分辨率。你有上面的解决方案。

    【讨论】:

    • layout-sw600dp 支持 3 以上。我正在开发我的应用程序从 2.2 到以上
    • 不,这不是真的。我正在开发 2.3 中的应用程序。但是所有平板版本的API都在3以上。所以他们可以理解layout-sw600dp。如果您还没有尝试过,请尝试一下。你会得到结果。
    • 是的,我试试这个,但我只想要一个布局文件夹,并且有许多屏幕,包括标签和手机,所以我必须为它们声明尺寸数。所以在此之后也会存在问题
    • 但是我的朋友,如果没有在布局中提供这样的numbers,你怎么能做到这一点?如果您看到开发人员站点,为什么建议他们创建 3 个布局目录,例如 layoutlayout-sw600dplayout-sw720dplayout-largexlarge? Android 不是 iO,你可以只创建一个分辨率的布局屏幕,并在不同的屏幕上获得相同的结果。
    • 好吧,如果我们谈论 Note2 和 S3,它们都需要 layout-normal-xhdpi-1280x720 布局文件夹,但它们的密度不同,那么如何处理它们??
    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2014-07-27
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多