1

我在我的 android 应用程序中有一个视图,我想在visible/gone小屏幕上和visible/invisible大尺寸之间切换。初始设置(gone对于小屏幕,invisible对于大屏幕)是通过在 and 下有两个单独的 XML 布局文件来完成的layoutlayout-sw600dp-land但是当我需要动态交换可见性设置时,我如何从 Java 代码中确定要选择基于哪个屏幕尺寸?

编辑:更具体地说,我想在我的代码中检测导致 Android 使用来自layout-sw600dp-land. 我什至在考虑将值记录在values-sw600dp-land目录中的某个位置,但不确定将其放入哪个文件以及如何访问它。

4

1 回答 1

4

您可以使用以下方法获取屏幕的像素大小。

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; 
int height = dm.heightPixels; 

但是,您的问题是关于屏幕大小是指像素还是英寸的问题。您可能需要利用 dm.densityDpi 值,将值从像素转换为英寸,以便更有用地计算屏幕的“大小”。

编辑答案:

有两种可能的解决方案。在这个线程中引用了一个,非常简单,您在上面提到了它。

如何以编程方式确定我的 Android 应用程序正在使用哪种 XML 布局?

第二个不是解决方案,而是解释。layout-sw600dp-land 文件替换了 3.2 之前的旧命名约定,类似于 layout-xlarge-land。这本质上是“横向”模式下的“xlarge”屏幕。因此,您可以通过查找 xlarge 屏幕尺寸(其中宽度 > 高度)以编程方式检测到这一点。下面是比较旧约定与新“sw600dp”=最小宽度为 600 dp 约定的一个很好的参考。

http://developer.android.com/training/multiscreen/screensizes.html

于 2013-05-01T15:57:58.390 回答