问题1:我的应用程序有18-20个xml布局文件。我如何在所有android手机上制作相同的应用程序。我读了很多答案,为大小和密度创建了不同的价值文件夹,但我如何实现这两件事,比如一些手机,有不同的密度,但屏幕大小相同。并且为每个布局xml文件创建7-8个文件,我认为这是不好的。
请具体不要回答其他问题或android开发者网站网址的链接。我已经阅读了所有的android文档和堆栈溢出的答案。
问题2:在两个活动中,im在运行时创建按钮。我已经根据密度创建了按钮,但是如果尺寸大的话,还有很多空白处。
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 150,r.getDisplayMetrics()));
button.setWidth(px);
button.setHeight(px); 发布于 2018-01-10 13:28:34
众所周知,不同的手机有不同的屏幕。几乎所有android手机的比例都是16乘9。(除了奇妙的s8 . )
现在,我经常遇到有关设计的问题,但是我找到了一种方法,使设计在每16:9甚至21.5:9屏幕上看起来是100 %相同的。
我主要做的是在xxxhdpi画布上进行photoshop的设计:
2560x1440,密度为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"我在正确的文件夹中插入我的绘图并开始设计。
我总是尝试使用线性布局,然后使用android:layout_weights来确定屏幕上的位置。
权重就像百分数一样工作,所以说我在根布局中放置了两个线性布局,两者的权重都在50左右。它们把每个设备的屏幕都填满了一半。
只要您可以使用线性布局,所有设备都能很好地工作。
如果我需要使用framelayout,那么我就进入类的代码,并插入所有不能有权重的元素。尤其是说到填充物时:
我为精灵们设置了一个新的linearlayout.layoutparams,在witdh和height的问句中使用"resources.dimensions.displaymetrics.height /宽度像素“,然后用硬编码的数字除以那些像素。
由于显示指标与实际手机相对应,即使使用帧布局,分区也将以百分比结束。空白处或衬垫也是如此。
结果是完美无缺的。无论使用的是什么手机,当它是16:9的比例,设计将永远是一样的。即使在滚动视图,相对布局等等。
对于具有不同高宽比的手机,我通过分割高像素/宽像素来设置这一比率,这使得设计在这些屏幕上同样工作。
最终的结果是做了很多工作,但设计很完美。我拒绝在我的腋下使用"dpi“,因为它们确实工作,但在每部手机上看起来并不总是一样。
我希望这将是你的答案。简而言之:在photoshop中设计,渲染一个按钮,批量转换它,安装在xml上,你就好了。
https://stackoverflow.com/questions/48188326
复制相似问题