NowUIColoring을 사용하여 NowWebTheme 및 NowChatTheme 테마 적용

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기3분
  • NowUIColoring 인터페이스에는 모든 NowSDK 모듈에서 사용하는 모든 색이 포함되어 있습니다.

    여러 SDK 모듈에서 유사한 색 변수를 사용하는 시나리오의 경우 NowUIColoring 인터페이스를 구현할 수 있습니다. 이 인터페이스를 사용하여 색 값을 재정의한 다음 해당 구현을 사용하여 테마 클래스 NowWebThemeNowChatTheme 내에서 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
      })
    }