0

我想检测在特定活动中使用的 android 中的自定义屏幕类别,我想以编程方式检测 layout-sw640dp,这是如何实现的。我们可以对 small、normal、large 和 xlarge 布局做同样的事情,但我是不确定这个,请帮助我。谢谢。

4

2 回答 2

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 的标签。


于 2013-03-15T06:06:57.230 回答
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

于 2013-03-15T07:01:56.343 回答