安卓开发html可以代替xml吗?

安卓开发html可以代替xml吗?,第1张

不可以

(一)、语法要求不同:1. 在html中不区分大小写,在xml中严格区分。2. 在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略

或者之类的结束标记。在XML中,是严格的树状结构,绝对不能省略掉结束标记。3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符作为结尾。这样分析器就知道不用查找结束标记了。4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。 5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。 6. 在XML文档中,空白部分不会被解析器自动删除;但是html是过滤掉空格的。(二)、标记不同:1、html使用固有的标记;而xml没有固有的标记。2、Html标签是预定义的;XML标签是免费的、自定义的、可扩展的。(三)、作用不同:1. html是用来显示数据的;xml是用来描述数据、存放数据的,所以可以作为持久化的介质!Html将数据和显示结合在一起,在页面中把这数据显示出来;xml则将数据和显示分开。 XML被设计用来描述数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。2. xml不是HTML的替代品,xml和html是两种不同用途的语言。 XML 不是要替换 HTML;实际上XML 可以视作对 HTML 的补充。XML 和HTML 的目标不同HTML 的设计目标是显示数据并集中于数据外观,而XML的设计目标是描述数据并集中于数据的内容。3. 没有任何行为的XML。与HTML 相似,XML 不进行任何 *** 作。(共同点)4. 对于XML最好的形容可能是: XML是一种跨平台的,与软、硬件无关的,处理与传输信息的工具。5. XML未来将会无所不在。XML将成为最普遍的数据处理和数据传输的工具。

首先,Android中显示Html内容,有3中方式:(目前我用到的有这3种)

1、可以利用Android原生的Html.fromHtml(str, imageGetter, tagHandler)来进行显示。(不过,我这边用了,即使加了页面加载动画,还是觉得非常慢,有大量图片,会导致OOM;如果图片不多的话,可以考虑)

2、利用第三方插件HtmlTextView。

GitHub地址:https://github.com/PrivacyApps/html-textview

图片加载很顺畅,使用方法也非常简单,不过,有两个注意事项:

(1)其中,HtmlHttpImageGetter有3个构造函数,可以根据自己的情况选择。

(2)加载大量图片的时候,会导致OOM内存溢出。针对于这个情况,HtmlHttpImageGetter有一个压缩图片的方法可以调用,可以进去查看它的公共方法。(不过,我这边显示的图片过大,每张1M左右,并且一下子有几十张,即使设置了压缩图片,还是会导致OOM问题,目前还没解决,有大神知道咋弄的,拜托指点一下,非常感谢!)

对了,这个第三方插件的基本用法,点击上面的连接,进去一看就知道了,很简单。

3、第三种,是我没办法的情况下想的:把html标签里的内容利用正则表达式拿出来,其中,文本内容用一个TextView代替,<img>标签图片用一个ImageView代替,其他相关的标签自行选择替换。说白了,就是创建一个个的TextView以及ImageView填充到布局里(LinearLayout之类的)。要说明的是:其中图片显示用Glide来实现。目前我这边测试的情况还是可以的,加载的速度非常快,也没因内存问题导致APP崩溃。

H5开发安卓界面需要注意以下三点:

(上)包括Android设备多分辨率的问题,Android中构建HTML5应用程序基础

(中)包括Android与JS之间的互动,Android处理JS的警告对话框等,Android中的调试

(下)包括本地储存在Android中的应用,地理位置的应用,离线应用的构建

进入正题

● Android设备多分辨率的问题

Android浏览器默认预览模式浏览 会缩小页面 WebView中则会以原始大小显示

Android浏览器和WebView默认为mdpi。hdpi相当于mdpi的1.5倍 ldpi相当于0.75倍

三种解决方式:1 viewport属性 2 CSS控制 3 JS控制

1 viewport属性放在HTML的<meta>中

html代码:

<span style="font-size: x-small"> <head>

<title>Exmaple</title>

<meta name=”viewport” content=”width=device-width,user-scalable=no”/>

</head></span>

meta中viewport的属性如下:

<span style="font-size: x-small"> <meta name="viewport"

content="

height = [pixel_value | device-height] ,

width = [pixel_value | device-width ] ,

initial-scale = float_value ,

minimum-scale = float_value ,

maximum-scale = float_value ,

user-scalable = [yes | no] ,

target-densitydpi = [dpi_value | device-dpi |

high-dpi | medium-dpi | low-dpi]

"

/>

</span>

2 CSS控制设备密度

为每种密度创建独立的样式表(注意其中的webkit-device-pixel-ratio 3个数值对应3种分辨率)

html代码:

<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.5)" href="hdpi.css" />

<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.0)" href="mdpi.css" />

<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 0.75)" href="ldpi.css" />

3 JS控制

Android浏览器和WebView支持查询当前设别密度的DOM特性

window.devicePixelRatio 同样值有3个(0.75,1,1.5对应3种分辨率)

JS中查询设备密度的方法

js代码:

if (window.devicePixelRatio == 1.5) {

alert("This is a high-density screen")

} else if (window.devicePixelRation == 0.75) {

alert("This is a low-density screen")

}

Android中构建HTML5应用

使用WebView控件 与其他控件的使用方法相同 在layout中使用一个<WebView>标签

WebView不包括导航栏,地址栏等完整浏览器功能,只用于显示一个网页。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6096542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存