标签:android
File tempFile = Environment.getExternalStorageDirectory() .getAbsoluteFile(); File file = new File(tempFile, (format.format(date) + ".xml")); HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(RSS_URL); try { HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == 200) { InputStream inputStream = response.getEntity().getContent(); FileOutputStream fos = new FileOutputStream(file); int byteread = 0; byte[] buffer = new byte[1024]; while ((byteread = inputStream.read(buffer)) != -1) { fos.write(buffer, 0, byteread); } fos.flush(); fos.close(); inputStream.close(); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
list=new ArrayList<Map<String,RssItem>>(); SAXReader reader = new SAXReader(); try { Document document = reader.read(file); // 通过reader对象的read方法获得document对象 Element rootelement = document.getRootElement(); // 获得根节点 Element channelelement = rootelement.element("channel");// 获得channel节点 Iterator channel_iterator = channelelement.elementIterator(); // 准备第一个模板,将需要改变的时间格式 String pat1 = "EEE, dd MMM yyyy HH:mm:ss Z" ; // 准备第二个模板,将提取后的日期数字变为指定的格式 String pat2 = "yyyy年MM月dd日 HH时mm分" ; Locale local=Locale.ENGLISH; SimpleDateFormat sdf1 = new SimpleDateFormat(pat1,local) ; // 实例化模板对象 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ; // 实例化模板对象 while (channel_iterator.hasNext()) { //只能放在map里,不能发在对象里 Map<String,RssItem>map1=new HashMap<String,RssItem>(); Element itemelement = (Element) channel_iterator.next(); if ("item".equals(itemelement.getName())) { Iterator item_iterator = itemelement.elementIterator(); rssItem = new RssItem(); while (item_iterator.hasNext()) { Element itemChild = (Element) item_iterator.next(); if ("title".equals(itemChild.getName())) { rssItem.setTitle(itemChild.getStringValue()); Log.i("RSS", itemChild.getStringValue()); } if ("link".equals(itemChild.getName())) { rssItem.setLink(itemChild.getStringValue()); Log.i("RSS", itemChild.getStringValue()); } if ("description".equals(itemChild.getName())) { rssItem.setDescription(itemChild .getStringValue()); Log.i("RSS", itemChild.getStringValue()); if (getImgStr(itemChild.getStringValue())!=null) { //区第一个的url地址 rssItem.setImage(getImgStr(itemChild.getStringValue())); }else{ rssItem.setImage(""); } } if ("pubDate".equals(itemChild.getName())) { Date date1= sdf1.parse(itemChild.getStringValue()); String pubDate=sdf2.format(date1); rssItem.setPubDate(pubDate); Log.i("RSS", pubDate); } if ("author".equals(itemChild.getName())) { rssItem.setAuthor(itemChild.getStringValue()); Log.i("RSS", itemChild.getStringValue()); } } if (rssItem.getImage().equals("")) { }else { map1.put("rssItem", rssItem); list.add(map1); } //feed.addItem(map1); } } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message message = new Message(); message.what = 1; handler.sendMessage(message); RSS_URL=null; }
String a="Fri, 14 Aug 2015 02:20:10 +0800";// String pat1 = "EEE, dd MMM yyyy HH:mm:ss Z" ; //EEE, dd MMM yyyy HH:mm:ss Z // 准备第二个模板,将提取后的日期数字变为指定的格式 String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ; //MOTH //由于local生成很费时间,提前生成 Locale local=Locale.ENGLISH; SimpleDateFormat sdf1 = new SimpleDateFormat(pat1,local) ; // 实例化模板对象 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ; // 实例化模板对象 try { Date date= sdf1.parse(a); System.out.println(sdf2.format(date)); } catch (ParseException e) { e.printStackTrace(); }对于这个应该都会很常用。
//是内容与手机适配 bodyHtml.getSettings().setUseWideViewPort(true); bodyHtml.getSettings().setLoadWithOverviewMode(true);这样确实可以把图片变得适合手机大小,但是字体随着图片同样的变小了,因此我们需要把字体调大:
//设置默认的字体大小 bodyHtml.getSettings().setDefaultFontSize(40);这虽然不是最佳解决办法,应该在RSS里文章的内容写设定好图片的最大大小,但如果在重新修改img标签,会让图片多的文章加载变得慢,因此只能委曲求全应这个办法,(网上写的大多数方法还是不能解决我的需求,还是在泡上在网上的日子找到解决的办法,该网站做的不错,风格我喜欢的类型,简洁风格)把全部代码显示如下:
Intent itent=getIntent(); //文章内容 String title=itent.getStringExtra("content"); //去除超链接,保留字体 String regex="<\\s*a.*?/a\\s*>"; title=title.replaceAll(regex, ""); //添加html标头 String news="<html>"+title+"<html>"; //得到WebView组件 WebView bodyHtml=(WebView)this.findViewById(R.id.wv_paper_content); //设置默认的字体大小 bodyHtml.getSettings().setDefaultFontSize(40); //是内容与手机适配 bodyHtml.getSettings().setUseWideViewPort(true); bodyHtml.getSettings().setLoadWithOverviewMode(true); //能够的调用JavaScript代码 bodyHtml.getSettings().setJavaScriptEnabled(true); bodyHtml.getSettings().setDefaultTextEncodingName("utf-8"); //加载HTML字符串进行显示 bodyHtml.loadDataWithBaseURL(null, news, "text/html", "utf-8", null);总算把这个星期碰到的问题和解决办法写完了,虽然只是简单写下,而且还是学了两个星期的安卓,就开始做项目,但是真的学到了很多知识,尤其运用到了web的知识,我也相信webApp才是未来的主潮!!!
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:android
原文地址:http://blog.csdn.net/u012157999/article/details/47666967