Android不同的屏幕尺寸和密度

时间:2018-01-10 13:14:49

标签: android android-screen-support

问题一 :我的应用程序有18-20个xml布局文件。我怎样才能在所有Android手机上使应用程序相同。我读了很多答案,为尺寸和密度创建了不同的值文件夹,但是我怎样才能实现像某些手机具有不同密度但屏幕尺寸相同的东西。并为每个布局xml文件创建7-8个文件我认为不会很好。

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

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

.programImage{
    position:absolute;
    bottom:0;
    z-index:2;
    width:100%;
    height:90px;
    -webkit-transition: width 1s, height 1s; /* For Safari 3.1 to 6.0 */
    transition: width 1s, height 1s;
    img{
      width:100%;
      height:100%;
    }
    &[data-playerinfo-expanded="true"]{
      height:150px;
      width:360px;

    }
  }

1 个答案:

答案 0 :(得分:1)

众所周知,不同的手机有不同的屏幕。几乎所有Android手机的比例都是16比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插入正确的文件夹并开始设计。

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

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

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

如果我需要使用framelayout,那么我会进入我的类的代码并初始化每个不能有权重的元素。特别是当它归结为填充:

我在问题中为elemens提出了一个新的linearlayout.layoutparams用于witdh和height go" resources.dimensions.displaymetrics.height / width像素并用硬编码的数字划分。

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

结果完美无瑕。无论使用什么手机,当它的比例为16:9时,设计总是看起来一样。即使在Scrollviews,Relative-Layouts等也是如此。

对于具有不同宽高比的手机,我通过除以hightpixels / widthpixels来设置比率,这样设计在这些屏幕上也能正常工作。

结果在很多工作中结束,但完美的设计。我拒绝使用" dpi"在我的方法中,因为它们确实有效但在每部手机上看起来都不一样。

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