반응형
Night mode 의 각 모드에 대한 설명과 각 모드가 어떻게 동작하는지 예제를 만들어보았습니다.
먼저 Night mode는 아래와 같은 모드를 가지고 있습니다.
모드명 | 설명 | 참고 |
MODE_NIGHT_UNSPECIFIED | 야간 모드에 대해 지정되지 않은 모드입니다. 기본 야간 모드를 사용하기 위해 이것은 주로 setLocalNightMode ()와 함께 사용되어 기본 야간 모드를 사용할 수 있도록합니다. |
기본 모드와 로컬 야간 모드가 모두 이 값으로 설정된 경우에는MODE_NIGHT_FOLLOW_SYSTEM의 기본값이 적용됩니다. |
MODE_NIGHT_FOLLOW_SYSTEM | 시스템의 설정에 따라서 동작 | |
MODE_NIGHT_AUTO_TIME | 시간(일출/일몰)에 따른 동작 | Deprecated 됨 |
MODE_NIGHT_NO | 동작안하도록 함 | |
MODE_NIGHT_YES | 동작하도록 함 | |
MODE_NIGHT_AUTO_BATTERY | 절전모드시 동작하도록 함 |
실제 Night mode 동작 확인을 위해 각 모드별 버튼을 만들어서 버튼을 클릭한 이후 어떻게 동작하는지 확인합니다.
class MainActivity() : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
val modeNightText = mapOf(-100 to "MODE_NIGHT_UNSPECIFIED", -1 to "MODE_NIGHT_FOLLOW_SYSTEM",
0 to "MODE_NIGHT_AUTO_TIME", 1 to "MODE_NIGHT_NO",
2 to "MODE_NIGHT_YES", 3 to "MODE_NIGHT_AUTO_BATTERY")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textModeNight : TextView = findViewById(R.id.tvModeNight)
findViewById<View>(R.id.btnModeNightFollowSystem).setOnClickListener {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
findViewById<View>(R.id.btnModeNightAutoTime).setOnClickListener {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_TIME)
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
findViewById<View>(R.id.btnModeNightNo).setOnClickListener{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
findViewById<View>(R.id.btnModeNightYes).setOnClickListener {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
findViewById<View>(R.id.btnModeNightAutoBattery).setOnClickListener {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY)
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
textModeNight.text = modeNightText[AppCompatDelegate.getDefaultNightMode()]
}
}
나이트 모드별 버튼을 가지고 있고, 마지막 버튼 아래에는 현재 동작중인 모드가 무엇인지 테스트 표시됩니다.
시간(주/야), 절전여부, 시스템 설정(Night mode 여부)에 따른 동작 결과
주간 / 절전 x / 시스템 설정 (Night mode x)
주간 / 절전 x / 시스템 설정 (Night mode o)
주간 / 절전 o / 시스템 설정 (Night mode x)
주간 / 절전 o / 시스템 설정 (Night mode o)
야간 / 절전 x / 시스템 설정 (Night mode x)
야간 / 절전 x / 시스템 설정 (Night mode o)
야간 / 절전 o / 시스템 설정 (Night mode x)
야간 / 절전 o / 시스템 설정 (Night mode o)
'Android Dev > App Basics & UI' 카테고리의 다른 글
android:visibility - invisible과 gone 차이 간단 설명과 비교 그림 (0) | 2020.09.18 |
---|---|
uses-permission-sdk-23 의미 (0) | 2019.10.31 |
앱에서 시스템 설정 변경 / 화면 밝기 및 화면 방향 조절 예제 / Settings SettingsProvider WRITE_SETTINGS (2) | 2019.04.03 |
안드로이드 런타임 권한 확인 및 요청 처리하기 (Android Runtime permission check and request) (5) | 2019.02.07 |
버그 리포팅을 위한 준비 / 이전 오류 정보를 보관하는 tombstone과 dropbox (2) | 2018.12.29 |