我想检测在特定活动中使用的android中的自定义屏幕类别,我想以编程方式检测layout-sw640dp,如何实现这一点。我们可以对小型,普通,大型和& xlarge布局,但我不确定这个,请帮助我。谢谢。
答案 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
的条件,因为系统修饰,例如状态栏,会降低布局的可用高度。