或使用 bool 值创建自定义资源(来自 google io 2012)
<!-- in your values/custom.xml -->
<resources>
<bool name="small_screen">true</bool>
<bool name="normal_screen">false</bool>
</resources>
<!-- in your values-sw320dp/custom.xml -->
<resources>
<bool name="small_screen">false</bool>
<bool name="normal_screen">true</bool>
</resources>
注意:您必须定义一个最小屏幕宽度 (sw320dp),您认为屏幕不会太小 (link with more info)
优点是您可以在运行时读取此值,并且您可以有特殊资源限定符的特殊情况...例如您可以通过调用您的活动在运行时读取此值:
if(getResources().getBoolean(R.bool.small_screen)) {
// You have a screen which is < 320dp
} else {
// You have a screen which is >= 320dp
}
您甚至可以像这样在清单中使用这个布尔资源,为小屏幕启动一个完全不同的活动
<activity android:name="SmallScreenActivity"
android:enabled="@bool/small_screen"> <!-- ENABLE FOR SMALL SCREEN -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="NormalActivity"
android:enabled="@bool/normal_screen"> <!-- ENABLE FOR OTHER -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样你就可以简单地为普通情况使用一个 Activity (android:enabled="@bool/normal_screen") 并为小屏幕使用一个特殊的 Activity android:enabled="@bool/small_screen"
警告:此方法不适用于自蜂窝以来的较新设备。 You can read why this method is not allowed anymore 或 read about working similar solution