@ Отображение Android / Res / для просмотра в WebView - PullRequest
17 голосов
/ 13 апреля 2010

Я добавляю HTML в веб-представление для рендеринга. В HTML мне нужно загрузить изображение, которое у меня есть в /res/drawable.

У меня есть /res/drawable/my_image.png и такой код:

final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");

Где строка html имеет что-то вроде:

<html><head>
<h1>Here is the image</h1>
<img src="my_image.png" />
</head><html>

Вопрос в том, каким должен быть атрибут изображения src для ссылки на изображение в /res/drawable?

Ответы [ 7 ]

30 голосов
/ 02 декабря 2010

Это работало в Android 2.2

<img src = "file:///android_res/drawable/q1.png" />

где q1.png находится в папке res / drawable-hdpi

5 голосов
/ 13 апреля 2010

Признаюсь, я мало что знаю о WebViews / HTML, но, похоже, вы выбираете более сложный путь для этого. Есть простой способ загрузить файл HTML; Поместите его в папку с активами, и тогда его можно отнести к следующему.

WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);

Очевидно, что ваш макет более сложный, поскольку у вас есть больше, чем просто WebView, поэтому вы не можете использовать setContentView() напрямую, но это основная идея. Затем для ссылки на изображение в этом HTML-файле я использовал тег <img>, например:

<img src="res/drawable/icon.png"/>

Это работает для вас?

3 голосов
/ 06 января 2012

user302750,

Ваш метод неверен. res/drawable/banner300.jpg должно быть file:///android_res/drawable/banner300.jpg.

banner300.jpg может находиться в одном из следующих мест в вашем проекте, и Android автоматически загрузит правильную папку для используемого вами устройства.

  • res/drawable/banner300.jpg
  • res/drawable-ldpi/banner300.jpg
  • res/drawable-mdpi/banner300.jpg
  • res/drawable-hdpi/banner300.jpg
  • res/drawable-xhdpi/banner300.jpg

Папка assets предназначена для общих ресурсов, для которых вам не нужны разные версии. Примером может быть шаблон XSL или что-то в этом роде.

MikeNereson, ваш ответ на вашу проблему также неверен, ресурсы для рисования должны находиться в каталоге res.

Вот пример из моего собственного проекта. Я вывожу HTML, точно так:

<img src="file:///android_res/drawable/stats_btn.png"/>

Если вы используете устройство ldpi, я получаю изображение ldpi, если вы используете hdpi или mdpi, я также получаю соответствующее изображение. Android разрешает file:///android_res/drawable/stats_btn.png для одного из следующих ресурсов, которые есть в моем проекте.

  • ./res/drawable-ldpi/stats_btn.png
  • ./res/drawable-hdpi/stats_btn.png
  • ./res/drawable-mdpi/stats_btn.png
2 голосов
/ 21 мая 2012

Ответы, касающиеся file: // URL-адреса могут больше не работать с Android 4.0. Смотрите ответ на этот вопрос . Способ, который будет работать, находится в ответе здесь .

2 голосов
/ 31 марта 2011

Из моих тестов путь "file: ///android_res/drawable/q1.png" работает только с 2.2+. Для 2.1 это дает файл не найдена ошибка. Перемещение ресурса в ресурсы будет работать, но на самом деле это неосуществимо, если вы хотите использовать возможности рисования (то есть вам потребуется копия изображения в каждой папке ...).

0 голосов
/ 01 июля 2011

Вы загружаете Drawables, как и везде в вашем коде ... http://developer.android.com/guide/topics/resources/drawable-resource.html

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

также @MikeNereson, используя Android, вы можете напрямую получать доступ только к необработанным файлам, которые находятся в каталоге ресурсов и SDCard.

0 голосов
/ 09 июня 2010

У меня точно такая же проблема, но я не помещал файл изображения в res/drawable (который я сначала должен был создать, у меня уже были drawable-hdpi, -ldpi и -mdpi уже существует) или использовал URL file:///asset/ работал на меня.

Вот что я делаю:

Активность:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        String summary = "<html><body><div style=\"background:red; width:300px; height:50px;\"></div><img src=\"res/drawable/banner300.jpg\"/></body></html>";
        mWebView.loadData(summary, "text/html", "utf-8");

Затем в res/drawable я разместил баннер300.jpg - но он не появляется. Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...