WebView автоматично мащабира локални изображения

Въпросът ми е подобен на този, но е достатъчно различен, че ще публикувам нов.

Пиша програма за преглед на изображения, която изтегля PNG от отдалечен сървър, записва я в хранилище и след това я отваря в WebView, така че да получа мултитъч увеличение безплатно. Тези изображения обикновено са документи, така че потребителят ще иска да може да увеличава много далеч. Изпращам изображения с достатъчна разделителна способност, за да позволя това, но WebView изглежда ми „помага“, като мащабира изображението ми до размера на екрана, за да започна. Това означава, че моето изображение е с твърде ниска разделителна способност, за да бъде правилно увеличено.

Търсих наоколо за това и намерих други хора, срещащи подобен проблем, но единственият възможно решение, което намерих, беше да нарежа изображението на плочки и да ги сглобя отново с помощта на HTML, преди да го заредя в изгледа. Това изглежда като глупост и питам StackOverflow hivemind дали някой има или начин да изключи това мащабиране, или алтернативен метод, за да получа това, от което се нуждая.

Кодът, който инициализира WebView:

viewer = (WebView)findViewById(R.id.activity_imageviewer_webview);
viewer.setBackgroundColor(0);
WebSettings settings = viewer.getSettings();
settings.setJavaScriptEnabled(false);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

Кодът, който зарежда изображението в WebView:

viewer.loadUrl(Uri.fromFile(imageFile).toString());

person jakebasile    schedule 03.03.2011    source източник


Отговори (2)


Промяната на свойствата на прозореца за изглед може да помогне, разгледайте

<meta name="viewport" ...>

мета таг в html хедъра

person rquinn    schedule 14.04.2011
comment
Благодаря за съвета, но след като опитах <meta name="viewport" content="target-densitydpi=device-dpi" /> и редица други свойства на прозореца за изглед, нищо не се промени. Изображението ми все още е мащабирано и изглежда ужасно. - person jakebasile; 18.04.2011
comment
Джейк, това беше малко дълъг шанс. Ако попадна на нещо, ще ви уведомя. - person rquinn; 19.04.2011
comment
Изглежда, че вършите много работа, за да избегнете нещо, което не е толкова трудно. Мултитъч мащабиране/рисуване на изображения може да се направи в няколко реда Java код. - person BitBank; 04.11.2011

В крайна сметка решихме това по трудния начин, като използвахме метода на подреждане. Разделяме изображението на вертикални срезове на нашия сървър, след което ги изпращаме надолу за повторно сглобяване с помощта на HTML на клиента, преди да го поставим в WebView.

Всъщност изглежда, че работи сравнително добре. Графиката определено е по-качествена и лесно се чете текста в нея. Единственият проблем, който видяхме, е, че има постижение на производителността за панорамиране и мащабиране, което по неизвестни за мен причини (все още) е изключително лошо само на Nexus S.

Докато нещо друго не се промени, мисля, че това може да е единственото решение на проблема без писане на персонализирана контрола за изглед.

person jakebasile    schedule 21.07.2011