本文共 2857 字,大约阅读时间需要 9 分钟。
对于网上爬虫技术,爬取网上的文章,当事文章中有文章和图片,那应该怎样处理呢??直接在xml布局文件用TextView,这是可以的,但是对于文章中的图片的很难处理。所以本文介绍的是动态生成TextView和 ImageView,即在Java中抓取文章之后,遇到文字,每一段自动创建一个TextView对象,遇到图片额url自动创建一个ImageView,在布局文件中只要创建一个LinerLayout就行了,之后在Java文件中addView加入自动生成的TextView和 ImageView。
话不多说,先上图(图是一个例子):for (int i = 0; i < contents.size(); i++) { //把图片保存到项目的根目录 try { String urlPath = contents.get(i).toString(); URL url = new URL(urlPath); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(6 * 1000); // 注意要设置超时,设置时间不要超过10秒,避免被android系统回收 if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败"); InputStream inSream = conn.getInputStream(); readAsFile(inSream, new File(Environment.getExternalStorageDirectory() + "/" + i + ".jpg")); Log.i("我是图片",i+".jpg"); index[i]=i; Log.i("indexfirst",index[i]+""); } catch (Exception e) { e.printStackTrace(); }
在xml布局文件中,设置:
在java中动态生成:
//根据URL下载图片 if (contents.get(i).toString()!="") { if(contents.get(i).toString().contains("http")){ Log.i("woshiimgurl",contents.get(i).toString()); // Log.i("index",index[i]+""); ImageView imageView=new ImageView(NewsContent.this); imageView.setImageBitmap(BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/"+index[i]+".jpg")); // showContent.append("\n " + contents.get(i).toString()); linearLayout.addView(imageView); } else { // 动态生成TextView,每一段文字,生成一个 TextView textView = new TextView(NewsContent.this); textView.setText(" "+contents.get(i).toString()); textView.setTextSize(20); linearLayout.addView(textView); }
注意的是:获取到的内容设置在组件中,采用异步线程,防止阻塞。
//创建异步线程启动 Message msg=new Message(); msg.what=0; handler.sendMessage(msg); //异步线程启动 //创建Handler Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what==0){ //这里设置 } };
案例下载连接: