【问题标题】:Android Different Screen Size and DensityAndroid不同的屏幕尺寸和密度
【发布时间】:2018-01-10 13:14:48
【问题描述】:

问题一:我的应用程序有 18-20 个 xml 布局文件。我怎样才能在所有安卓手机上制作相同的应用程序。我阅读了许多答案,为尺寸和密度创建了不同的值文件夹,但是我如何才能实现这两种功能,例如某些手机具有不同的密度但屏幕尺寸相同。并为我认为不好的每个布局 xml 文件创建 7-8 个文件。

请具体不要回复其他问题的链接或android开发者网站url。我已经阅读了堆栈溢出中的所有 android 文档和答案。

问题 2:在运行时创建按钮的两个活动中。我已经根据密度创建了按钮,但是如果尺寸很大,还有很多空白区域,那么尺寸呢。

Resources r = getResources();
            int px = Math.round(TypedValue.applyDimension(
                    TypedValue.COMPLEX_UNIT_DIP, 150,r.getDisplayMetrics()));


            button.setWidth(px);   
            button.setHeight(px);  

【问题讨论】:

  • 使用动态设计...然后您不需要为 Tab 或任何其他基于分辨率的设备制作任何单独的 XML。
  • @HardyAndroid 是的,我早上读到了这篇文章,但是如果我将我的应用上传到 Play 商店会有什么问题吗?
  • @nihal_softy 谢谢先生,意思是我应该计算密度和屏幕尺寸,然后根据手机的密度和尺寸进行测试?
  • @Laksh 很抱歉这个愚蠢的问题,但我可以知道你是新人还是完成了几个应用程序?是的 动态设计可能需要一些时间来理解。无论如何,如果你想使用,那么你可以使用github.com/intuit/sdp,但这不是一个合适的解决方案。如果您遇到任何问题,请告诉我。

标签: android android-screen-support


【解决方案1】:

众所周知,不同的手机有不同的屏幕。几乎所有的安卓手机都是 16 x 9 的比例。 (除了美妙的 s8 ...)。

现在我曾经遇到过有关设计的问题,但我找到了一种方法可以让设计在每 16:9 甚至 21.5:9 的屏幕上看起来 100% 相同。

我主要做的是在 xxxhdpi 画布上用 photoshop 进行设计:

2560 x 1440,密度为 577。

我渲染我的按钮并使用批处理转换器将每个按钮(可绘制)转换为 5 种不同的尺寸:

xxxhdpi = 100 % ( the size of the original )
xxhdpi = 75 %
xhdpi = 50 %
hdpi = 37.5 %
mdpi = 25 %.

然后我在我的 android 项目中放置了 5 个不同的文件夹,命名为:

"drawable-xxxhdpi"
"drawable-xxhdpi"
"drawable-xhdpi"
"drawable-hdpi"
"drawable-mdpi"

我将我的drawables插入正确的文件夹并开始设计。

我尝试始终使用线性布局,然后使用 android:layout_weights 来确定屏幕上的位置。

权重就像百分比一样工作,所以说我在根布局中放置了两个线性布局,两者的权重都正好是 50 。它们恰好填满了每台设备的一半屏幕。

只要您可以使用线性布局,这对所有设备都非常有效。

如果我需要使用框架布局,我会进入我的类的代码并初始化每个不能有权重的元素。尤其是当涉及到填充时:

我为 witdh 和 height 中的元素设置了一个新的 linearlayout.layoutparams go "resources.dimensions.displaymetrics.height / width 像素,并用硬编码的数字除以。

由于显示指标与实际手机相对应,因此除法将以百分比结尾,即使使用框架布局也是如此。边距或填充也是如此。

结果完美无缺。无论使用什么手机,当它是 16:9 比例时,设计看起来总是一样的。甚至在 Scrollviews、Relative-Layouts 等等。

对于具有不同纵横比的手机,我通过除以高像素/宽像素来设置比例,这使得设计在这些屏幕上同样有效。

结果以大量工作结束,但设计完美。我拒绝在我的 axmls 中使用“dpi”,因为它们确实有效,但在每部手机上看起来并不总是一样。

我希望这将是你的答案。 简而言之: 在 photoshop 中设计,渲染一个按钮,批量转换它,放在 xml 上,你很好。

【讨论】:

  • 感谢好友非常详细且简单易懂的解释。但是我的应用程序在印地语和英语中有不同的语言支持,因此很难在 Photoshop 中创建按钮。在其他活动中,我根据我从数据库获取的列表创建按钮,所以这很困难。 “我为witdh和height中的元素设置了一个新的linearlayout.layoutparams go”resources.dimensions.displaymetrics.height / width 像素,并用硬编码的数字除以。 " 硬编码值是?im 测试的手机宽度高度?
  • 是的,没问题,我曾经遇到过同样的问题。随时投票并接受我的回答。谢谢。
  • 抱歉不能投票需要声望。但是感谢您的精彩解释和我的一些查询,您可以分享我应该使用 px 而不是 dp 的代码吗?
  • 我真的不明白你在那儿做什么,但是当我在运行时设置一个按钮并且没有设置背景图像时(来自可绘制文件夹)总是使用设置大小Resource.DisplayMetrix.HeightPixels / 和 Widthpixels。永远不要使用像素。
  • @innomotionmedia 对于不同的分辨率存储 5 种类型相同的图像不是一个好方法。这将增加 apk 的大小。最好只在 xhdpi 中存储高质量的图像并使用动态设计。只有一张图片适合整个项目。我将只使用 5 种不同的图片,仅用于 mipmap 中的应用程序图标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多