2011-03-18 49 views
2

我希望能够创建一个应用程序,使用WebView从外部web应用程序请求url ,该应用程序返回html和css, 引用图像即实际应用程序中的资产。 的想法基本上是加快一切,使图像永远不必 被下载。使用本地路径将web应用程序加载到存储在应用程序中的图像

下面是一个简单的例子:

服务器HTML:

<html> 
    <head> 
    <style> 
    #myImage { background-image: url("file:///android_asset/myImage.jpg"; width: 50px; height: 50px;} 
    </style> 
    </head> 
    <body> 
    <div id="myImage"></div> 
    </body> 
</html> 

那么,有没有什么办法能够做到这一点?我的主要目标是让应用程序请求来自服务器的所有HTML,但能够将图像URL映射到应用程序中的本地资源。

由于提前, 莱昂

+0

告诉我的HTML文件来自服务器或他们是本地的应用程序。如果他们来自服务器,您如何使用资产文件夹中的图像。请更精确地问。 – 2013-04-29 10:33:34

回答

1

为什么不加载从应用程序端的所有HTML?如果您打扰此网页将无法访问网络 - 请使用WebView.loadDataWithBaseUrl方法。

对于嵌入图像到网页上,你可以使用数据:URI方案:http://en.wikipedia.org/wiki/Data_URI_scheme

您也可以,即使你是网页远程加载地图应用程序中的图像。您可以使用WebView.loadUrl(“javascript:....”)通过JavaScript代码(也使用data:URI方案)“发送”图像数据。

编辑。

首先,在HTML侧带有嵌入式图像的例子将是这个样子:

<html> 
    <head> 
    <style> 
    #myImage { background-image: url('data:image/png;base64,iVBORw0KG.....'); width: 50px; height: 50px;} 
    </style> 
    </head> 
    <body> 
    <div id="myImage"></div> 
    </body> 
</html> 

后,如果您想将这个页面在应用端存储,可以存储在某个地方(字符串资源,资产文件夹)和什么时候得到它。

String pageResource = // get it somehow 
WebView myWebView; 

myWebView.loadDataWithBaseUrl(
    "http://my.site.com", // The base url 
    pageResource,   // page content to load... 
    "text/html",   // it's MIME type... 
    "UTF-8",    // and encoding 
    "http://my.site.com/page.html"); 

现在WebView已经加载了您的页面。它从本地资源加载,但从WebView的角度来看,它就像从网络加载一样。它也可以访问此处的网络资源和JavaScript代码(这是loadDataloadDataWithBaseUrl之间的主要区别)。

+0

我不确定我是否明白你的意思。你能举个简单的例子吗? – Leon 2011-03-18 12:05:31

+0

@Leon,我已经编辑了我的答案 – Olegas 2011-03-18 12:43:55

相关问题