반응형

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)

 

 

+ Recent posts