我们如何在android中检测自定义屏幕类别?

时间:2013-03-15 05:59:10

标签: android layout categories

我想检测在特定活动中使用的android中的自定义屏幕类别,我想以编程方式检测layout-sw640dp,如何实现这一点。我们可以对小型,普通,大型和& xlarge布局,但我不确定这个,请帮助我。谢谢。

2 个答案:

答案 0 :(得分:2)

不确定为什么需要这样做。但是,快速浏览就是使用标签,例如:

在mdpi中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/content_bg"
  android:orientation="vertical"
  android:id="@+id/name"
  android:tag="mdpi-xxx-yyy" >

在hdpi:

  android:id="@+id/name"
  android:tag="hdpi-xxx-yyy" >

然后,从代码中读取R.id.name的标记。


答案 1 :(得分:1)

sw640dp仅表示最小可用维度至少为640dp。这基于活动的可用布局空间,而不是设备的实际分辨率。因此,您可以根据活动中根布局的尺寸计算出来:

int density = getResources().getDisplayMetrics().density;
int widthDp = rootView.getWidth() / density;
int heightDp = rootView.getHeight() / density;
if(widthDp >= 640 || heightDp >= 640) {
    // qualifies for sw640dp
}
else {
    // does not qualify for sw640dp
}

对于Galaxy S3,它的分辨率为1280x720,即640x360转换为dp单位。由于sw布局的可用维度相关,而不是分辨率,因此我猜测它将 符合sw640dp的条件,因为系统修饰,例如状态栏,会降低布局的可用高度。