【问题标题】:Handling all screen sizes android处理所有屏幕尺寸的android
【发布时间】:2017-05-20 19:11:42
【问题描述】:

我正在开发一个 android 应用程序,它是用数字(边距等)设计的,没有相对的东西,所以我想我会发现不同屏幕尺寸的许多问题,所以我想制作一个函数来保存数据DIMENSIONS 文件与( User's screen size X dimen)/(the screen size which the app were designed on) 等用户屏幕大小成正比,所以我想知道这是否不会对应用程序工作等造成任何问题..

谢谢你=)

【问题讨论】:

  • 对此没有一个可靠的答案。这实际上取决于您的布局、您拥有的可绘制对象等。有时只需缩放即可。有时它不会(缩小时不适合,图像太拉伸等)。小边距(低两位数的东西,尤其是 dp 中的东西)通常可以很好地扩展。 100 像素中的数字可能不会。作为 Android 工程师,你的工作的一部分是找出这些相对和线性的联系,并从中创建一个好的布局。你不能指望得到一切,如果你是你就不会被需要。

标签: android dimensions screen-size


【解决方案1】:

在您的res 文件夹中为所有设备创建三个不同的Layouts Folder,并相应地使用尺寸。

通用布局文件夹

res/layout-small
res/layout-normal
res/layout-large
res/layout-xlarge

在您完成正常/中等布局后,请按照以下步骤操作:

  1. 将正常尺寸转换为其他屏幕尺寸。
  2. 将您的 Normal Layout xml 文件复制到其他文件夹中。
  3. 根据您所在的文件夹更改使用的尺寸后缀
  4. 调整可绘制文件夹中图像资源的大小(宽度和高度 - 与我们用于转换尺寸的技术相同)并将它们放入各自的可绘制文件夹中(drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xdpi等等)。
  5. 那么您的布局应该可以在每台设备上正确定位。

用于转换价值

0.75 - ldpi  (small)   //mdpi dimens *0.75
1.0  - mdpi  (normal)  //First create these dimensions
1.5  - hdpi  (large)   //mdpi dimens *1.5
2.0  - xhdpi (xLarge)  //mdpi dimens *2.0

举例

android:layout_width="66dip" //in normal
android:layout_width="100dip"//in large 66*1.5=100(approx)
android:layout_width="52dip" //in small 66*0.75=52(approx)

还引入了新的限定符 - 最小宽度 - 可用屏幕宽度 - 可用屏幕高度

在此处了解更多信息https://developer.android.com/guide/practices/screens_support.html

我希望这会有所帮助。

【讨论】:

  • 非常感谢,如果您能提供帮助,我还有另一个问题:以便用户可以通过我的应用上传图片画廊图片已上传,imageview 更改颜色并且不再可点击(这就是应该发生的情况)但是当我测试它时,我需要执行所有这些操作并再次单击 imageview 并走出画廊,这样我就可以看到我的 imageview改变颜色和不可点击我希望你明白了谢谢
  • 我会提供帮助,但如果上述问题得到解决,请接受此答案,对于另一个问题,您需要提出单独的问题并在评论中给我链接:)
【解决方案2】:

也许你可以试试下面自动管理所有屏幕尺寸分辨率的库。

compile 'com.intuit.sdp:sdp-android:1.0.4'

您只需在 build.gradle 文件中添加依赖项即可。

您需要指定如下:

android:layout_height="@dimen/_10sdp"

代替:

android:layout_height="@dimen/10sdp"

【讨论】:

  • 我试过这个库,但它只是扩大了一切
  • 这个库看起来不错,只是它就像一个框架。如果你想要更多的控制,那么使用不同的布局文件......尤其是对于图像大小
  • 我们能以编程方式使用它吗
  • @ArnoldBrown 您可以使用以下代码务实地访问 dimen。 int dp = (int) (getResources().getDimension(R.dimen.test) / getResources().getDisplayMetrics().density)
【解决方案3】:
//Dimen
implementation 'com.intuit.ssp:ssp-android:1.0.5'
implementation 'com.intuit.sdp:sdp-android:1.0.5'

使用这两个库, ssp 是文本大小,sdp 是边距、内边距和布局大小

android:layout_width="@dimen/_24sdp"
android:layout_height="@dimen/_24sdp"

【讨论】:

  • 我们能以编程方式使用它吗
  • @ArnoldBrown 是的,你可以
  • @divaPrajapati09 是的,我这样做了。谢谢
  • @harshil-kakadiya 例如,他们有 2 个活动,一个使用 ssp,另一个示例在其他项目中仅使用 sdp。我正在听从你的建议,但你能解释一下原因吗?
  • 文本大小使用 ssp,其余使用 sdp。
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多