NowUIColoring を使用して NowWebTheme と NowChatTheme をテーマに設定する

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む3読むのに数分
  • NowUIColoring インターフェイスには、すべての NowSDK モジュールで使用されるすべての色が含まれています。

    複数の SDK モジュールで類似した色変数を使用するシナリオでは、 NowUIColoring インターフェイスを実装できます。このインターフェイスを使用すると、色の値を上書きし、その実装を使用して、テーマクラス NowWebTheme および NowChatTheme 内の nowUIColoring 値を上書きできます。色変数がオーバーライドされない場合、 NowUIColoring インターフェイスはデフォルトの色を使用します。

    次のコード例は、Web 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 クラス内では、テーマクラスの色変数をオーバーライドするときに、明るいテーマ用と暗いテーマ用の 2 つの Int Color 値を渡すことができます。2 番目のパラメーター 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
      })
    }