有没有比这个更好的方法?
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点之间。还有其他方法可以做到这一点吗?
有没有比这个更好的方法?
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点之间。还有其他方法可以做到这一点吗?
虽然差异不大,但是你可以进行赋值操作:
isNight = hour < 6 || hour > 18;
values\values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">false</bool>
</resources>
values-night\values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">true</bool>
</resources>
public boolean isNightMode(){
return getResources().getBoolean(R.bool.isNightMode);
}
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
values-night/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);
...