Android设置根据屏幕大小以编程方式查看可见性

时间:2013-05-01 15:51:00

标签: android android-layout

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

编辑:更具体地说,我想在我的代码中检测到导致Android使用来自layout-sw600dp-land的布局的相同条件。我想甚至在values-sw600dp-land目录中的某处记录值,但不确定要将其放入哪个文件以及如何访问它。

1 个答案:

答案 0 :(得分:4)

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

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

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

ANSER FOR EDITS:

有两种可能的解决方案。一个在这个帖子中被引用,非常简单,你在上面提到它。

How to programatically determine which XML layout my Android apps is using?

第二个不是解决方案,而是解释。 layout-sw600dp-land文件替换了类似于layout-xlarge-land的旧命名约定3.2。这基本上是“风景”模式中的“xlarge”屏幕。因此,您可以通过查找xlarge屏幕大小以编程方式检测此信息,其中宽度>高度。下面是比较旧约定与新“sw600dp”=最小宽度为600 dp约定的良好参考。

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