2012-10-15 75 views
1

我正在使用WebView在Web资源中显示使用WebView的图像,因为我需要它是可缩放的。动态地,我需要能够在图像上绘制点,它是一张地图。要做到这一点,我试图把一个画布放在加载的图像上。画布上会绘制点。Android:在Webview上绘制画布

mWebView = (WebView)findViewById(R.id.webview); 
mWebView.getSettings().setBuiltInZoomControls(true); 
mWebView.loadUrl("file:///android_res/drawable/map.png"); 

Canvas c = new Canvas(); 
c.drawARGB(10, 0, 100, 12);//This is just random. It is where I would draw the points 
mWebView.draw(c); 

代码中的最后3行看起来没有做任何事情。

有没有更好的方法去绘制WebView的顶部?这种方式甚至可能吗?

+0

您是否尝试过制作WebView的子类并重写'onDraw()'方法?该方法接收一个'Canvas'参数,并且可以使用它来绘制图像。 – acj

+0

我会试一试。谢谢。 – Colin

+0

有大量的第三方可缩放'ImageView'替代品,通过您最喜爱的搜索引擎轻松找到。不需要使用“WebView”。 – CommonsWare

回答

0

在你最后一行,你给它一个新的画布(它不会加载map.png)。

你应该做的是:

  • 创建延伸的WebView
  • 覆盖其的onDraw()方法,像一个新的类:

公共类MyWebView扩展的WebView {

@Override 保护无效onDraw(画布画布){

super.onDraw(canvas); 
      canvas.drawPoint(yourPoint); 
} 

}

使其变量:

 MyWebView mWebView = new MyWebView(this); 
     mWebView.getSettings().setBuiltInZoomControls(true); 
     mWebView.loadUrl("file:///android_res/drawable/map.png"); 

添加此视图布局的主视图中。

 myMainView.add(wv); 

完成!