Html5在Android开发中的应用

1、抓取网络html并显示

一个在线的网页,解析得到它的源码,作为字符串,然后根据一定的规则(正则表达式)来获取相应的内容,举两个简单例子

(1)CSDN博文列表

获取我的博客中博文列表,,如图所示:

主要代码其实就是一段正则

, Object>> getCsdnNetDate() {, ObjectArrayList, Object>>();String csdnString = http_get(CSDNURL);csdnString);// (?s) 加在表达式前面可以匹配空格换行等字符Pattern p = Pattern.compile(“(?s)<span class=\”link_title\”><a href=\”(.*?)\”>(.*?)</a>”);Matcher m = p.matcher(csdnString);while (m.find()) {MatchResult mr = m.toMatchResult();, ObjectHashMap<String, Object>();mr.group(1));(2).replace(“\n”, “”).replace(“\r”, “”));data.add(map);});return data;}

这里面的http_get方法,是借了网上一位博友的,就是获取一个网址的源码字符串

(2)哔哩哔哩最新视频列表

B站 ,每天应该都会不一样的

与上面最大的区别在于正则匹配,由于对正则的不太熟悉,所以只能写成下面这样冗余的表达式了

Pattern p = Pattern.compile(“<li class=www\\W]*?)<div class=\”info\”>(.*?)</div>([\\w\\W]*?)</li>”);

然后再通过一个for循环把得到的list转成自定义的list

for(int i size();i++){, Objectget(i);VideoListData vData = new VideoListData();vData.setAuthor((String)map.get(“author”));vData.setDate((String)map.get(“date”));vData.setImage((String)map.get(“image”));vData.setUrl((String)map.get(“url”));vData.setInfo((String)map.get(“info”));vData.setTitle((String)map.get(“title”));mListData.add(vData);}2、解析本地html并交互(1)UI交互

直接在手机界面上修改html的显示,比如下面这块代码

=>====>=>

为了方便修改html内容,我们把这段html代码直接作为一个字符串变量引用,需要重写webviewclient的shouldOverrideUrlLoading方法,在里面根据超链接的地址(diyangxia://title)去匹配,如果有的话,再根据id的值(title)去取值,取完值后把值和值之前以及值之后的字符串都传给第二个界面,在第二个界面修改完成后拼接完全回传过来再在webview中显示即可

@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {Log.i(“TAG”, “url==>” + url);if (url.equals(“diyangxia://title”)) {String idStr = url.substring(10);String subStr = “id=\”” + idStr + “\”>”;int firstIndex = inputStr.indexOf(subStr);String firstStr = inputStr.substring(0, firstIndex + subStr.length());Log.i(“TAG”, “firstStr==>” + firstStr);String otherStr = inputStr.substring(firstIndex + subStr.length());Log.i(“TAG”, “otherStr==>” + otherStr);int middleIndex = otherStr.indexOf(“<“);String middleStr = otherStr.substring(0, middleIndex);Log.i(“TAG”, “middleStr==>” + middleStr);String lastStr = otherStr.substring(middleIndex);Log.i(“TAG”, “lastStr==>” + lastStr);startActivityForResult(new Intent(HtmlActivity.this, EditContentActivity.class).putExtra(“title”, middleStr).putExtra(“first”, firstStr).putExtra(“last”, lastStr), REQUEST_CODE_EDIT);return true;} else {return super.shouldOverrideUrlLoading(view, url);}}(2)JS交互

这里以播放视频为例,在html代码的head区添加一个js脚本用来控制video视频的自动且循环播放,因为据测试,直接在video标签中添加autoplay以及loop属性是没有效果的

<script type=”text/javascript”>{var videos = document.getElementById(‘videoTag’);videos.loop = ‘loop’;videos.play();}</script>喜欢就该珍惜,珍惜就别放弃。

Html5在Android开发中的应用

相关文章:

你感兴趣的文章:

标签云: