将画布绘制到Android WebView并缩放

时间:2012-01-04 10:26:26

标签: android-webview android-canvas zooming

我是Android编程的新手。我想在图像上画线并允许用户放大和缩小。由于ImageView似乎没有内置的缩放控件,我决定使用WebView。我扩展了WebView类并覆盖了onDraw方法,让我在画布上绘制线条。然后我将我的图像加载到WebView中。这向我展示了我在画布中绘制的线条放置在WebView中的图像上。

虽然我能够在WebView中放大和缩小我的图像,但是我在画布中绘制的线条并没有相应缩放;我的图像被放大了,但线条(画布)在屏幕上保持相同的大小。当我放大我的WebView时,是否有某种方法可以放大我的画布?

此代码在我的主要活动中:

    final CustomWebView webview = (CustomWebView) findViewById(R.id.webView1);
    webview.loadUrl("file:///android_asset/myimage.png");
    WebSettings websettings;
    websettings = webview.getSettings();
    websettings.setBuiltInZoomControls(true);

此代码位于我的CustomWebView中并绘制一条直线:

public CustomWebView (Context context, AttributeSet attrs)
{
    super (context, attrs);
}

@Override
protected void onDraw(Canvas canvas) 
{
    super.onDraw (canvas);

    Paint p = new Paint();
    p.setColor (Color.RED);
    canvas.drawLine (20, 10, 300, 400, p);
}

我还尝试使用位图将图像直接加载到CustomWebView中的画布上,然后在其上绘制线条。

map = BitmapFactory.decodeResource(getResources(), R.drawable.demo);
canvas.drawBitmap(map, 0, 0, null);

但这不允许我放大画布。另外,平移图像时非常慢。

我应该选择这个而不是使用WebView方式吗?如果是的话,是否有某种方法可以提高效率?或者是否有更好的方法来实现我想要实现的目标?

1 个答案:

答案 0 :(得分:2)

使用

webview.loadUrl("file:///android_asset/myimage.png");
    WebSettings websettings;
    websettings = webview.getSettings();
    websettings.setBuiltInZoomControls(true); 

CustomWebView

的构造函数中的那些行