我正在我的应用程序中创建不同的
values
文件夹(values, values-ldpi, values-mdpi, values-hdpi, values-xhdpi, values-nodpi, values-w360dp-mdpi)
。但有些设备属于同一类别。但屏幕尺寸不同。但我看到根据设备密度给出字体大小,@PankajSharma 提供的答案建议创建类似的文件夹-
res/values/dimens.xml
res/values-small/dimens.xml
res/values-normal/dimens.xml
res/values-xlarge/dimens.xml
我想知道我的方式和其他方式有什么区别?我认为@PankajSharma 提供的答案很简单。我也想知道哪种方式比较好?
您使用的方法是有效的方法,但有点过时。从
HoneyComb
开始,有一种新方法可以解决所有这些问题。您的资源文件夹现在应如下所示:
请参阅我发布的链接并熟悉
Smallest Width
概念。
希望这有帮助:)
编辑:添加到这篇文章中,尝试在您的
dimens.xml
中建立某种标准化,如下所示:
这样做可以更轻松地维护代码,而且还可以减少
dimen
文件夹的数量。通常,像 values-hdpi
这样的文件可能有更多需要调整的值,而不是 values-xhdpi
、values-sw480dp-xhdpi
等,但话又说回来,所有这些都是上下文相关的。
在布局文件夹中为默认屏幕 4.7 英寸 (hdpi) 创建单一布局,并在值文件夹中创建尺寸。这是你的超级组。
现在假设您想要 7 英寸设备的布局。创建 7 英寸纵向的 value-sw600dp 文件夹
现在假设您想要 10 英寸设备的布局创建 value-dw720dp 文件夹
注意:- 对于横向,只需在文件夹名称前面添加“-land”。
现在假设您有新设备,例如 Xperia SP(4.7 英寸和 XHDPI)和 Nexus 5(5 英寸和 XXHDPI)。
对于这些,您可以创建values-xhdpi和values-xxhdpi文件夹,并为横向添加类似的-land..
我希望您了解如何创建文件夹..
现在您的超集已在值文件夹中定义。大多数尺寸仅在此处使用。现在在其他设备上运行您的应用程序。无论发生什么不匹配,只需在各自的值文件夹中添加该特定维度即可
要检查您的布局、图像是从哪个文件夹中使用的,请使用我的技巧。
创建五个相同的字符串并将所有值文件夹放入其中,如下所示:- 默认屏幕 屏幕4.7 XHDPI屏 MDPI 屏幕
创建五个可绘制文件夹,其中大部分已经存在: - 可绘制-hdpi、可绘制-mdpi、可绘制-xhdpi、可绘制-xxhdpi、可绘制-xxxhdpi 将下面的屏幕截图放在各自的同名文件夹中
这就是我的 res 文件夹的样子,我支持 4.7 屏幕及以上的所有设备:-
我在一个项目中遇到了这个问题,我找到的解决方案是使用MVMANH(坦克兄弟!)的android-auto-generate-dimension,它非常容易使用,以下是如何进行:
1 - 将 autodimension.gradle 文件从 repository 复制到 Android 项目的根文件夹;
2 - 在模块级别调用 build.gradle 中的方法,创建
apply from: '../autodimension.gradle'
; 类型的条目
3 - 通过执行此操作,您将能够在终端命令 ./gradlew createDimen
(
mac/linux) 或 g
radlew.bat createDimen
(Windows) 中使用 gradlew 调用任务。
就是这样,它将创建您在 autodimension.gradle 文件中的 createDimen 方法中指定的所有尺寸。
如果你想指定你想要的尺寸,只需更改任务寄存器中的方法,文件的第320行
它在这里工作,我在几个设备上测试了它,屏幕调整得很好。
希望对你有帮助