gpt4 book ai didi

java - XWalkView如何设置滤色器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:52 25 4
gpt4 key购买 nike

我目前正在使用我的网络浏览器 Cornowser ,它使用 Crosswalk 引擎,我遇到了一个问题。我想实现颜色模式,因为它们在 UltimateBrowserProject 中。

但是滤色器不适用。我尝试设置图层类型并使用滤色器传递 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设置颜色过滤器?

提前致谢!

更新:

SurfaceView 似乎不支持滤色器。到底该怎么做?

更新 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 .

最佳答案

覆盖绘制( Canvas )方法

编写上面的源代码

在draw()方法调用结束时invalidate()

关于java - XWalkView如何设置滤色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com