2016-02-04 1 views
6

現在、Crosswalkエンジンを使用しているWebブラウザCornowserで作業していますが、問題が発生しました。 カラーモードは、UltimateBrowserProjectにあるように実装したいと思います。XWalkViewのカラーフィルタを設定する方法は?

ただし、カラーフィルタは適用されません。 レイヤータイプを設定して、カラーフィルターでPaintを渡しました。ここで

ソースコードです:

// Handle color modes 

public void drawWithColorMode() { 
    Logging.logd("Applying web render color mode..."); 
    RenderColorMode.ColorMode cm = CornBrowser.getBrowserStorage().getColorMode(); 
    Paint paint = new Paint(); 
    final float[] negativeColor = { 
      -1.0f, 0, 0, 0, 255, // Red 
      0, -1.0f, 0, 0, 255, // Green 
      0, 0, -1.0f, 0, 255, // Blue 
      0, 0, 0, 1.0f, 0  // Alpha 
    }; 
    final float[] darkColor = { 
      1f, 0, 0, 0, -255, 
      0, 1f, 0, 0, -255, 
      0, 0, 1f, 0, -255, 
      0, 0, 0, 1f, 0 
    }; 
    final float[] invertColor = { 
      -1f, 0, 0, 0, 0, 
      0, -1f, 0, 0, 0, 
      0, 0, -1f, 0, 0, 
      0, 0, 0, 1f, 0 
    }; 

    Logging.logd("Found color mode: " + cm.mode); 

    switch(cm.mode) { 
     case RenderColorMode.ColorMode.NORMAL: 
      Logging.logd("Applying normal color mode"); 
      paint.setColorFilter(null); 
      break; 
     case RenderColorMode.ColorMode.DARK: 
      Logging.logd("Applying dark mode"); 
      paint.setColorFilter(new ColorMatrixColorFilter(darkColor)); 
      break; 
     case RenderColorMode.ColorMode.NEGATIVE: 
      Logging.logd("Applying negative mode"); 
      paint.setColorFilter(new ColorMatrixColorFilter(negativeColor)); 
      break; 
     case RenderColorMode.ColorMode.INVERT: 
      Logging.logd("Applying inverted mode"); 
      paint.setColorFilter(new ColorMatrixColorFilter(invertColor)); 
      break; 
     case RenderColorMode.ColorMode.GREYSCALE: 
      Logging.logd("Applying greyscale"); 
      ColorMatrix m = new ColorMatrix(); 
      m.setSaturation(0); 
      paint.setColorFilter(new ColorMatrixColorFilter(m)); 
      break; 
     default: 
      Logging.logd("Warning: Unknown color mode " + cm.mode + "."); 
      break; 
    } 

    Logging.logd("Setting layer type..."); 
    setLayerType(LAYER_TYPE_HARDWARE, paint); 
} 

私もdraw(canvas)をオーバーライドすることで、それを試してみましたが、それは同じ結果です。

誰もXWalkViewのカラーフィルタを設定する方法は知っていますか?

ありがとうございます!

UPDATE:

SurfaceViewは、カラーフィルタをサポートしていないということのようです。 どうにかするには? UPDATE 2

この質問はあまり注目を集めていないようです...私はそれがどのように動作するかを、私のソースコードを編集し、それが動作しません、それを確認してください、logcatは私に次のような出力を提供します:

D/Cornowser: Applying web render color mode... 
D/Cornowser: Found color mode: 2 
D/Cornowser: Applying negative mode 
D/Cornowser: Setting layer type... 

最終更新: 私は実際にそれではJavaScriptを使用して作業しました。 解決方法を知りたい場合は、right hereをご覧ください。呼び出したい理由

答えて

0
ドローをオーバーライド

(キャンバス)メソッド

はdraw()メソッドの呼び出しの無効()の終わりに、上記のソースコード

を書く

+0

私は理解していませんdraw()の最後に無効にします。 – xdevs23

関連する問題