Attualmente sto lavorando al mio browser web Cornowser, che utilizza il motore Crosswalk e ho riscontrato un problema. Voglio implementare le modalità colore, così come sono in UltimateBrowserProject.Come impostare un filtro colorato per XWalkView?
Ma i filtri di colore non si applicano. Ho provato a impostare il tipo di livello e passare il Paint
con il filtro colore.
Ecco il codice sorgente:
// 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);
}
Ho anche provato ridefinendo draw(canvas)
ma è lo stesso risultato.
Qualcuno sa come impostare un filtro colore per XWalkView?
Grazie in anticipo!
UPDATE:
Sembra essere che SurfaceView
non supporta filtri di colore. Come si fa comunque?
UPDATE 2: sembra che questa questione non è sempre così tanta attenzione ... ho modificato il mio codice sorgente, come dovrebbe funzionare, ma non funziona, prego la controlliamo, logcat mi dà seguente output :
D/Cornowser: Applying web render color mode...
D/Cornowser: Found color mode: 2
D/Cornowser: Applying negative mode
D/Cornowser: Setting layer type...
aggiornamento finale: realtà ho ottenuto che funziona utilizzando JavaScript. Se vuoi sapere come ho risolto, guarda right here.
non capisco il motivo per cui si desidera chiamare invalido alla fine del sorteggio(). – xdevs23