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