我有一个自定义视图,我可以像这样绘制有边框的矩形:
protected void onDraw(Canvas cv) {
Paint p = new Paint();
p.setStrokeWidth(5);
p.setColor(Color.LTGRAY);
p.setStyle(Paint.Style.FILL);
for (Rect rect : rects) {
cv.drawRect(rect.left, rect.top, rect.right, rect.bottom, p);
}
p.setColor(Color.BLACK);
p.setStyle(Paint.Style.STROKE);
for (Rect rect : rects) {
cv.drawRect(rect.left, rect.top, rect.right, rect.bottom, p);
}
}
当用户通过与其交互修改此视图时,是时候将其保存到sqlite数据库,以及它的缩略图,其目的是将每个特定视图的缩略图添加到列表视图,当用户想要检索特定的一个时。 除了缩略图处理之外,所有这些都能完美地工作:一些但不是全部的黑线丢失,每隔一个像素都是正确的,并且缩放也是正确的。
view.setDrawingCacheEnabled(true);
Bitmap original = view.getDrawingCache();
int w = original.getWidth();
int h = original.getHeight();
float scaling = 100f / Math.max(w, h);
Bitmap b = Bitmap.createScaledBitmap(original, Math.round(scaling * w), Math.round(scaling * h), false);
在这个特定点上,位图是错误的,无论是使用上面的代码创建,使用ThumbnailUtils类,还是使用android.graphic.Matrix来处理缩放。 没有缩放,位图始终是正确的。
以下是视图的截图,由四个矩形(在本例中为方形)和上述代码生成的错误缩略图组成。
如果有人有领导,非常感谢。