最近我开发了一款适用于Galaxy 10.1的应用程序,7英寸,1024x600,480x800,注意800高度,高度为S3,高度为720。他们都完全按照这些决议运行。但是当我们谈论注释2和galaxy 7 plus等时,我们遇到了几个问题。这些设备上的布局是不正确的。在那个面临布局问题的iam我使用layouts文件夹作为layouts-normal-xhdpi-1280x800和S3 layouts-normal-xhdpi-1280x720并将所有布局放在一个文件夹中,这使得一个apk支持所有这些布局。
但是当客户下载apk时,他们会遇到一个问题,那就是Galaxy笔记选择了layout-normal-xhpi-1280x720布局并且它是正确的但是S3和Galaxy Note 2有不同的密度。
由于这个问题,我无法弄清楚如何为S3和Note 2声明布局文件夹。 有什么办法我只使用默认的四个文件夹
布局Xlarge
使用普通
布局Xhdpi布局mdpi
布局hdpi,正常
并支持所有屏幕的所有布局,如S3,注1,注2,7英寸以及其他。当我尝试启动我的项目时,我总是想到着名的游戏,比如其中一个是“Temple Run”,它运行在所有手机和标签上。
制作一堆布局文件夹使我的应用程序变得像是超过80MB限制而且谷歌市场只接受少于50MB的应用程序。
从语法上讲,我们只使用一个布局文件夹并在所有屏幕上支持此布局。 我阅读了一些文章和Android开发人员门户网站,但他们并不满足我。他们都说你必须为不同的屏幕制作不同的布局文件夹,甚至在stackoverflow上我看到了相同的情况,以节省我的第一个项目的时间 我使用这些技术,但我的工作现在日益增加,我希望我从那些使我的应用程序不重的技术开始,因为这些布局,而不是浪费我的时间来制作应用程序数量的布局数。 / p>
帮助的数量将受到赞赏,我想要答案和建议,因为这些问题面临着新的开发人员和其他人的问题。
答案 0 :(得分:2)
我的申请中也遇到了这样的问题。但我找到了一个很好的解决方案。
我只有tablet
的一个布局,目录名是layout-sw600dp
。
现在,当部分出现高度和宽度问题时,我创建了几个不同的values
目录,其中我放置了dimensions
和font size
以及其他存根。因此,平板电脑屏幕的constant
中不会有layout
值。
androd:layout_width:"60dp" // i drop this scenario
androd:layout_width:"@dimen/tab_width" // i used this scenario
并且您的values
目录名称将类似于
values-xlarge
values-large
将从您的values目录中获取所有值。它不会创建不同的布局,但可以多次使用一个布局。
修改:
以下是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-mdpi
和layout-large-ldpi
进行不同的识别,而是仅仅通过其smallest width
来识别?因为,android为不同的图像提供drawables
目录,只有它的解决方案。你有上面的解决方案。