2016-02-04 14 views
6

Şu anda Crosswalk motorunu kullanan web tarayıcım Cornowser üzerinde çalışıyorum ve bir sorunla karşılaştım. UltimateBrowserProject'te oldukları gibi renk modlarını uygulamak istiyorum.XWalkView için renk filtresi nasıl ayarlanır?

Ancak renk filtreleri geçerli değil. Katman türünü ayarlamayı ve Paint renk filtresini geçmeyi denedim. İşte

kaynak kodu:

// 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); 
} 

Ben de draw(canvas) geçersiz kılarak denedim ama aynı sonuç.

XWalkView için renk filtresi nasıl ayarlanacağını bilen var mı?

Şimdiden teşekkürler!

GÜNCELLEME:

O SurfaceView renk filtreleri desteklemediği gibi görünüyor. Nasıl yapılır? GÜNCELLEME 2

: bu soru çok dikkatini çekmenin olmadığını görünüyor ... Ben nasıl çalışır, benim kaynak kodunu düzenlenmiş, ancak çalışmıyor, kontrol edin, logcat bana şu çıktıyı verir :

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

Final güncelleme: Ben aslında JavaScript kullanarak çalışma var . Nasıl çözdüğümü öğrenmek isterseniz, right here'a bakın. Aramak istediğiniz neden

cevap

0
beraberlik geçersiz kılar

(Tuval) yöntemi

beraberlik() yöntemi çağrısı geçersiz() sonunda yukarıdaki kaynak kodu

yazmak

+0

anlamıyorum draw'in() sonundaki geçersiz kılma. – xdevs23

İlgili konular