Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
@Android显示/分辨率/可在WebView中查看_Android_Webview_Drawable - Fatal编程技术网

@Android显示/分辨率/可在WebView中查看

@Android显示/分辨率/可在WebView中查看,android,webview,drawable,Android,Webview,Drawable,我正在将HTML扔到webview以进行渲染。在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"

我正在将HTML扔到webview以进行渲染。在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>

这是图片

问题是,image
src
属性应该是什么来指代
/res/drawable
中的图像?

我承认我对WebViews/HTML了解不多,但似乎你在走更复杂的道路。有一种加载HTML文件的简单方法;将它放在您的资产文件夹中,然后可以按如下方式引用它

WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);
显然,您的布局更复杂,因为您不仅仅拥有WebView,因此无法直接使用
setContentView()
,但这是基本思想。然后,为了引用HTML文件中的图像,我使用了


这对你有用吗

我有完全相同的问题,但是既没有将图像文件放在
res/drawable
(我首先必须创建,我已经有了drawable hdpi,-ldpi和-mdpi)中,也没有使用
file:///asset/
URL对我很有用

以下是我的工作:

活动:

<img src="res/drawable/icon.png"/>
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView=(WebView)findViewById(R.id.WebView);
mWebView.getSettings().setJavaScriptEnabled(true);
字符串摘要=”;
加载数据(摘要,“文本/html”、“utf-8”);

然后在
res/drawable
中,我放置了banner300.jpg,但它没有显示。有什么想法吗?

这在android 2.2中有效

    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");


其中q1.png位于路径中的res/drawable hdpi文件夹中,“file:///android_res/drawable/q1.png“仅适用于2.2+。对于2.1,会出现“未找到文件”错误。将资源移动到“资源”会起作用,但如果要使用可绘制功能,则这并不切实可行(这意味着每个文件夹中都需要一份图像的副本…。

您可以像在代码中的任何其他地方一样加载可绘图项。。。

另外@MikeNereson使用Android,您只能直接访问位于资产目录和SD卡中的原始文件。

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模板或类似的内容

Mikeneeson,您对问题的回答也不正确,可提取的资源应该包含在
res
目录中

下面是我自己项目中的一个示例。我输出html,如下所示:

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

如果使用
ldpi
设备,我会得到
ldpi
图像,如果使用
hdpi
mdpi
,我也会得到相应的图像。Android解析
file:///android_res/drawable/stats_btn.png
到我项目中的以下资源之一

  • /res/drawable ldpi/stats\u btn.png
  • /res/drawable hdpi/stats\u btn.png
  • /res/drawable mdpi/stats\u btn.png

从Android 4.0开始,涉及file://URL的答案可能不再有效。请参阅答案。答案中有一个可行的方法。

它是离题的,但loadUrl不合适。我正在从我们的一个应用程序下载HTML片段,装饰HTML,然后将HTML发送到视图。对于这个特定的用例,我得到了HTML有一个显示FLV的对象标记。我必须用FLV的MP4的锚定标记替换它。锚定标记包含一个图像,一个播放按钮。这个播放按钮是我试图加载的资源。不起作用。嗯。奇怪的是,如上所述不起作用,但它可能会与起始文件夹的位置混淆。无论如何,从你对这个问题的直接评论来看,似乎你找到了一种解决方法。我很高兴关于资产文件夹的评论有所帮助,即使我走的是另一条路!虽然Superfuzz的解决方案似乎适用于Android2.2+,但这种方法似乎可以缩小到Android1.6。在Emulator中进行了测试。顺便说一句,对于Ste来说+1ve Haley,如果没有这篇文章,我可能永远不会想到这一轮解决方案。我找到了一个适合我的解决方案。我不知道如何从/res/drawable加载图像,但我可以将图像复制到/assets并通过file:///android_asset/my_image.pngSo 我将res/drawable/my_image.png复制到assets/my_image.png,然后使用…和access我指的是操作、更改、上载和删除的能力。这意味着一旦文件位于drawable文件夹中,它将始终在那里,除非您明确删除它并重新编译apk。此外,您的用户将永远无法对图像执行任何操作。这个答案与在Web中显示带有HTML的图像有什么关系bView?摩托罗拉Zoom 3.2我必须将其制作成
文件:/android_res/drawable/app_icon_1.png
。但这可能是因为它是使用
mWebView.addJavascriptInterface()通过Javacode插入webview的。
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
<img src="file:///android_res/drawable/stats_btn.png"/>