NowUIColoring을 사용하여 NowWebTheme 및 NowChatTheme 테마 적용
NowUIColoring 인터페이스에는 모든 NowSDK 모듈에서 사용하는 모든 색이 포함되어 있습니다.
여러 SDK 모듈에서 유사한 색 변수를 사용하는 시나리오의 경우 NowUIColoring 인터페이스를 구현할 수 있습니다. 이 인터페이스를 사용하여 색 값을 재정의한 다음 해당 구현을 사용하여 테마 클래스 NowWebTheme 및 NowChatTheme 내에서 nowUIColoring 값을 재정의할 수 있습니다. 색 변수가 재정의되지 않은 경우 NowUIColoring 인터페이스는 기본 색을 사용합니다.
다음 코드 예제에서는 웹 UI와 채팅 UI 모두에 대한 색을 재정의하는 방법을 보여 줍니다.
// Implement the NowUIColoring and override desired color variables
val nowUIColoringImpl = object : NowUIColoring {
override val brand: NowUIAdaptiveColor
get() = NowUIAdaptiveColor(lightColor = Color.BLACK, darkColor = Color.WHITE)
override val textPrimary: NowUIAdaptiveColor
get() = NowUIAdaptiveColor(lightColor = Color.BLACK, darkColor = Color.WHITE)
//override the rest of color variables
}
// Override the nowUIColoring for NowWeb value using the NowUIColoring implementation
lifecycleScope.launch {
sdkManager.getNowWebService()?.launch(this@MainActivity, URL("https://instance-name.service-now.com"), object : NowWebTheme {
override val nowUIColoring: NowUIColoring
get() = nowUIColoringImpl
})
}
//Override the nowUIColoring for NowChat value using the NowUIColoring implementation
lifecycleScope.launch {
sdkManager.getNowChatService()?.start(this@MainActivity, object : NowChatTheme {
override val nowUIColoring: NowUIColoring
get() = nowUIColoringImpl
})
}
어두운 테마 처리에 대한 참고 사항
NowUIAdaptiveColor 클래스 내에서 테마 클래스의 색 변수를 재정의할 때 밝은 테마와 어두운 테마에 대해 하나씩 두 개의 Int Color 값을 전달할 수 있습니다. 두 번째 매개 변수인 darkColor는 선택 사항입니다. 색상 값을 전달하지 않으면 기본 색상 값이 사용됩니다. 사용되는 기본 테마(밝거나 어둡게)는 사용자의 휴대폰 설정을 기반으로 합니다.
lifecycleScope.launch {
sdkManager.getNowWebService()?.launch(this@MainActivity, URL("https://instance-name.service-now.com"), object : NowWebTheme {
override val brand: NowUIAdaptiveColor
//Setting lightColor only. For dark theme, default color are used.
get() = NowUIAdaptiveColor(lightColor = Color.BLACK)
override val primary: NowUIAdaptiveColor
//Setting both lightColor and darkColor
get() = NowUIAdaptiveColor(lightColor = Color.BLACK, darkColor = Color.WHITE)
// Override the rest of color variables
})
}