2012-01-04 79 views
2

我是Android编程的新手。我想在图像上画线,并允许用户放大和缩小。由于ImageView似乎没有内置缩放控件,因此我决定使用WebView。我扩展了WebView类并覆盖了onDraw方法,让我在画布上绘制线条。然后我将我的图像加载到WebView中。这显示了我在WebView中放置在图像上的画布中绘制的线条。将画布拖入Android 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方式吗?如果是的话,有没有办法让它更有效率?还是有更好的方法来实现我想要实现的目标?

回答

2

使用

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

在的CustomWebView

构造线