首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android不同屏幕大小和密度

Android不同屏幕大小和密度
EN

Stack Overflow用户
提问于 2018-01-10 13:14:48
回答 1查看 1.1K关注 0票数 2

问题1:我的应用程序有18-20个xml布局文件。我如何在所有android手机上制作相同的应用程序。我读了很多答案,为大小和密度创建了不同的价值文件夹,但我如何实现这两件事,比如一些手机,有不同的密度,但屏幕大小相同。并且为每个布局xml文件创建7-8个文件,我认为这是不好的。

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

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

代码语言:javascript
运行
复制
Resources r = getResources();
            int px = Math.round(TypedValue.applyDimension(
                    TypedValue.COMPLEX_UNIT_DIP, 150,r.getDisplayMetrics()));


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

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 13:28:34

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

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

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

2560x1440,密度为577

我呈现按钮并使用批处理转换器将每个按钮(可绘制)转换为5个不同大小的按钮:

代码语言:javascript
运行
复制
xxxhdpi = 100 % ( the size of the original )
xxhdpi = 75 %
xhdpi = 50 %
hdpi = 37.5 %
mdpi = 25 %.

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

代码语言:javascript
运行
复制
"drawable-xxxhdpi"
"drawable-xxhdpi"
"drawable-xhdpi"
"drawable-hdpi"
"drawable-mdpi"

我在正确的文件夹中插入我的绘图并开始设计。

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

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

只要您可以使用线性布局,所有设备都能很好地工作。

如果我需要使用framelayout,那么我就进入类的代码,并插入所有不能有权重的元素。尤其是说到填充物时:

我为精灵们设置了一个新的linearlayout.layoutparams,在witdh和height的问句中使用"resources.dimensions.displaymetrics.height /宽度像素“,然后用硬编码的数字除以那些像素。

由于显示指标与实际手机相对应,即使使用帧布局,分区也将以百分比结束。空白处或衬垫也是如此。

结果是完美无缺的。无论使用的是什么手机,当它是16:9的比例,设计将永远是一样的。即使在滚动视图,相对布局等等。

对于具有不同高宽比的手机,我通过分割高像素/宽像素来设置这一比率,这使得设计在这些屏幕上同样工作。

最终的结果是做了很多工作,但设计很完美。我拒绝在我的腋下使用"dpi“,因为它们确实工作,但在每部手机上看起来并不总是一样。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48188326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档