【问题标题】:Drawing canvas into Android WebView and zooming将画布绘制到 Android WebView 中并缩放
【发布时间】:2012-02-02 06:14:40
【问题描述】:

我是 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 方式吗?如果是,是否有某种方法可以提高效率?还是有更好的方法来实现我想要实现的目标?

【问题讨论】:

    标签: android-webview android-canvas zooming


    【解决方案1】:

    使用

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

    CustomWebView 的构造函数中的那一行

    【讨论】:

      猜你喜欢
      • 2015-01-05
      • 1970-01-01
      • 2012-06-06
      • 2015-03-06
      • 2014-08-21
      • 1970-01-01
      • 2013-01-06
      • 2019-12-27
      • 1970-01-01
      相关资源
      最近更新 更多