它确实是特定于设备的。我有两种方法。
1)肮脏的黑客
首先创建“负”油漆:
float[] colorMatrix_Negative = { -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
};
private final Paint mPaintNegative = new Paint();
private final ColorFilter colorFilter_Negative = new ColorMatrixColorFilter(colorMatrix_Negative);
在 ImageView 中显示图像时,您可以在 onDraw 中执行以下操作:
protected void onDraw(Canvas canvas) {
if (mBitmap != null && !mBitmap.isRecycled()) {
if(isNewImage) {
canvas.drawBitmap(mBitmap, mImgTrans.srcRect, mImgTrans.viewRect, mPaintNegative);
invalidate();
} else {
canvas.drawBitmap(mBitmap, mImgTrans.srcRect, mImgTrans.viewRect, mPaint);
}
}
}
这将首先为一帧绘制负片,然后是正常的。它可以很好地消除重影,并模拟真实的东西。您可以通过多种方式对其进行改进,例如将负帧显示更长的时间等。总体而言,这是非常丑陋的 hack,但在大多数设备上都可以正常工作。
2)真实方式
就 Onyx 设备而言,您可以要求 Onyx 为您提供对其 SDK 的访问权限。它提供了具有以下功能的 EpdController:
- 刷新屏幕(视图,模式)
- 无效(视图,模式)
- postInvalidate(视图,模式)
它可以让您在必要时强制刷新。您也可以根据需要选择刷新模式,但没有很好地记录哪种模式是什么。
更好的是,您可以在同一个控制器中使用
- setViewDefaultUpdateMode(视图,模式)
这使您可以更改为更适合您需求的模式,并让设备负责其余的工作。那里还有很多其他有用的东西。
我使用 sales@onyx-international.com 与他们联系,但您最好使用 dev@onyx-international.com
由于您可以使用该 SDK 检测您是否在 Onyx 设备上,您仍然可以让用户在设置中激活 E-ink 模式,然后从答案 1) 或类似的东西退回到黑客。