2012-01-04 80 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

構造線