或使用 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),您会认为屏幕不小(更多信息链接)
优点是您可以在运行时读取此值,并且您可以有特殊资源限定符的特殊情况......例如,您可以通过调用您的活动在运行时读取此值:
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"
警告:此方法不适用于自蜂窝以来的较新设备。 您可以阅读为什么不再允许使用此方法或阅读有关工作类似解决方案的信息