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