我正在Android设备上开发漫画阅读应用程序。我添加了许多功能,使其对电子墨水设备更加用户友好,但我仍然面临一个问题。
在更改页面时,可以看到来自先前页面的重影。在某些设备上进行全页面刷新(如Nook Simple Touch(root))不是问题,但在Onyx Lynx T68等其他设备上可能会非常明显。完全刷新会使屏幕闪烁一段时间变为负片,之后所有重影都消失了。
如何执行整页刷新,以清除所有重影?我认为可以做到,因为Onyx Lynx已经包含了#34;强制全面刷新"最新固件更新中的选项。它可以通过按住其中一个按钮来触发。我担心,它可能需要一个根。
答案 0 :(得分:0)
它确实是特定于设备的。我有2种方法可以做到。
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);
}
}
}
这将首先为一帧画出负片,然后画一张正片。它可以很好地消除重影,并模拟真实的东西。你可以通过多种方式对其进行改进,例如显示负面框架更长一些等等。总的来说,这是非常难看的黑客,但在大多数设备上运行良好。
2)真实的方式
就Onyx设备而言,您可以要求Onyx为您提供对其SDK的访问权限。它提供了EpdController,其功能如下:
可让您在必要时强制刷新。您也可以根据需要选择刷新模式,但没有详细记录哪种模式是什么。
你可以在同一个控制器中使用更好的
这使您可以更改为更符合您需求的模式,让设备负责其余部分。那边有很多其他有用的东西。
我使用sales@onyx-international.com与他们联系,但你可能会更好地使用dev@onyx-international.com
由于您可以使用该SDK检测您是否使用Onyx设备,因此您仍然可以让用户在设置中激活电子墨水模式,然后从答案1)或类似内容中回退。