有没有比这更好的方法?
Boolean isNight;
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if(hour < 6 || hour > 18){
isNight = true;
} else {
isNight = false;
}
它只检查小时是否在晚上7点到早上5点之间。还有其他办法吗?
答案 0 :(得分:5)
没有太大区别,但你可以做作业:
isNight = hour < 6 || hour > 18;
答案 1 :(得分:2)
如果您使用UiModeManager启用CarMode,则NIGHT模式设置为AUTO。您可以通过声明在运行时查找属性来获取对当前主题的引用。
attrs.xml
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
<强>值夜强> /themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<item name="metaThemeName">night</item>
</style>
</resources>
的java.class
...
TypedValue outValue = new TypedValue();
getTheme().resolveAttribute(R.attr.metaThemeName, outValue, true);
boolean isNight="night".equals(outValue.string);
...
答案 2 :(得分:0)
<强>值强> \ values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">false</bool>
</resources>
<强>值夜强> \ values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">true</bool>
</resources>
现在,请查看您的class.java
public boolean isNightMode(){
return getResources().getBoolean(R.bool.isNightMode);
}