【发布时间】: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