3

在 Eclipse 中为 Google API 提供的 Android MapsDemo 中,他们SmoothCanvas在 MapViewCompassDemo.java 中创建了一个内部类。在这个类中,似乎重新实现了每个方法并将其重新路由到Canvas.

static final class SmoothCanvas extends Canvas {
    Canvas delegate;

    private final Paint mSmooth = new Paint(Paint.FILTER_BITMAP_FLAG);

    public void setBitmap(Bitmap bitmap) {
        delegate.setBitmap(bitmap);
    }

    public void setViewport(int width, int height) {
        delegate.setViewport(width, height);
    }
    ...

在这种情况下,代表的意义是什么?

4

2 回答 2

1

的值delegate被传递给dispatchDraw。该类SmoothCanvasdelegate. 通过委托,Canvas传递给的实现可以dispatchDraw完成所有繁重的工作。包装器只允许注入平滑的油漆,而无需实现Canvas.

于 2010-07-25T01:42:14.347 回答
0

在这种情况下委托的关键点是:

private final Paint mSmooth = new Paint(Paint.FILTER_BITMAP_FLAG);

FILTER_BITMAP_FLAG少量。过滤会影响位图在变换时的采样。过滤不会影响位图中的颜色如何转换为设备像素。这取决于抖动和 xfermodes。

通过激活该标志,绘制位图将基本上提高其性能。您将在mSmoth每次drawBitmap调用中使用的示例中。

于 2010-07-24T18:56:01.800 回答