Рисование холста в Android WebView и масштабирование - PullRequest
2 голосов
/ 04 января 2012

Я новичок в программировании на 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 и рисует один прямойline:

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?Если да, есть ли какой-нибудь способ сделать его более эффективным?Или есть какой-то лучший способ реализовать то, чего я пытаюсь достичь?

1 Ответ

2 голосов
/ 24 апреля 2012

использование

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

что строки в конструкторе CustomWebView

...