我正在开发一个在多个手机上运行的应用程序,当我在一个5英寸屏幕的设备上测试它但是它的DPI级别是186应用程序布局看起来不太好。所以如果屏幕我们必须使用什么类型的布局文件夹尺寸很大但DPI很低
我已经完成了here
请提出建议
答案 0 :(得分:0)
您必须提供Alternative Resources才能支持特定的设备配置。官方文件说
例如,您应该包含替代的可绘制资源 不同的屏幕密度和替代字符串资源 不同的语言。在运行时,Android会检测当前设备 配置并加载适合您的资源 应用
总结链接
以<resources_name>-<config_qualifier>
格式在res / named中创建一个新目录。
<resources_name>
是相应默认资源的目录名
<qualifier>
是一个名称,用于指定要使用这些资源的单个配置
例如,以下是一些默认和替代资源:
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
这样,用于引用icon.png或background.png图像的资源ID始终相同,但Android会通过比较设备配置信息来选择与当前设备最匹配的每种资源的版本。资源目录名称中的限定符。
但是,您应该记住以下名称规则:
限定符名称规则
限定符必须符合table 2中列出的顺序。例如:
错误:drawable-hdpi-port /
正确:drawable-port-hdpi /
无法嵌套替代资源目录。例如,您不能拥有res / drawable / drawable-en /
值不区分大小写。资源编译器在处理之前将目录名称转换为小写,以避免在不区分大小写的文件系统上出现问题。名称中的任何大写只是为了提高可读性
仅支持每种限定符类型的一个值。例如,如果要为西班牙和法国使用相同的可绘制文件,则不能有名为drawable-rES-rFR /的目录。相反,您需要两个资源目录,例如drawable-rES /和drawable-rFR /,它们包含相应的文件。但是,您无需在两个位置实际复制相同的文件。相反,您可以为资源创建别名。
以下是How Android Finds the Best-matching Resource的优秀官方文档。
此处还有Good answer和another good one用于提供替代资源
答案 1 :(得分:0)
问题的发生是因为很多android API方法处理应用属性的浮点,所以,为了解决问题,保留创建的布局,因为它都在其常规文件夹中,然后,在将某个属性应用于视图时,请确保通过运行时应用该属性,并确保使用以下方法将此属性转换为它的浮点:
float new_value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, old_value, getResources().getDisplayMetrics());
这将为您提供多个DPI之间固定的布局行为。