软件主界面采用Fragment+ViewPager组成。在点开后将会自动对学校新闻页面使用URl类来抓取,然后对网页中的信息提取,使用WebView来loadData在主界面上面显示,

为了使用方便,软件会将最近一次抓取结果,写入文件中,在没有网络时,可以查看最近的缓存新闻。

在技术上用到了,Handler类,用于子线程与Activity通信,Intent基本使用,网络操作基本类URL,Fragmen+ViewPager支持滑动布局,调用系统分享功能等等。

项目结构:

部分核心代码摘要:

// 列表解析
private boolean url_data_download(final String url) {
if (!isRunning) {
new Thread() {
@Override
public void run() {
// TODO 自动生成的方法存根
super.run();
isRunning = true;
String url_str;
String url_data = null;
try {
URL ncwuURL = new URL(url);
// 加"gbk",解决一bug
InputStreamReader in = new InputStreamReader(
ncwuURL.openStream(), "gbk");
BufferedReader reader = new BufferedReader(in);
while ((url_str = reader.readLine()) != null) {
url_data += url_str;

}

if (url_data != null) {
String url_datas[] = url_data
.split("<TD vAlign=top height=12 >");

String url_datass[] = url_datas[1]
.split("<TD vAlign=top height=10></TD>");

System.out.println(url_datass[0]);
datas = url_datass[0];
if (!isPaused) {

Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据成功...");
m.setData(resBund);
m.what = 1;
data_handler.sendMessage(m);
}
} else {
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据失败...");
m.setData(resBund);
m.what = 0;
data_handler.sendMessage(m);
}
} catch (Exception e) {
e.printStackTrace();

}
}
}.start();
}
return false;
}

// 详情页解析
private boolean Detail_data_download(final String url) {
notice_state.setText("正在获取最新数据。。。");

new Thread() {
@Override
public void run() {
// TODO 自动生成的方法存根
super.run();

String url_str;
String url_data = null;
try {
URL ncwuURL = new URL(url);
// 加"gbk",解决一bug
InputStreamReader in = new InputStreamReader(
ncwuURL.openStream(), "gbk");
BufferedReader reader = new BufferedReader(in);
while ((url_str = reader.readLine()) != null) {
url_data += url_str;

}
} catch (MalformedURLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();

}
if (url_data != null) {
String url_datas[] = url_data
.split("BORDER-LEFT-STYLE: dotted; BORDER-RIGHT-STYLE: dotted; BORDER-TOP-STYLE: dotted\" color=\"#BCE5F5\"/></span>");
String url_datass[] = url_datas[1]
.split(" <td><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
// System.out.println(url_datass[0]);
urldatasDetailsString = url_datass[0];
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据成功...");
m.setData(resBund);
m.what = 3;
data_handler.sendMessage(m);

} else {
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据失败...");
m.setData(resBund);
m.what = 4;
data_handler.sendMessage(m);
}
}
}.start();

return false;
}

public class MyPageAdapter extends FragmentStatePagerAdapter {

private List<Fragment> listFragment = new ArrayList<Fragment>();

public MyPageAdapter(FragmentManager fm) {
super(fm);
}

public void setListFragment(List<Fragment> listFragment) {
this.listFragment = listFragment;
}

@Override
public Fragment getItem(int arg0) {
return listFragment.get(arg0);
}

@Override
public int getCount() {
return listFragment.size();
}

}

我的一个小作品 android App ---校园资讯助手的更多相关文章

  1. 健身小管家--android app源码

    把做了近一个月的android程序源码放出来,里面包括但不限于如下内容: 1. 简单的android项目结构 2. 通用的adapter,不再为每一个ListView都写一个adapter,只要用此一 ...

  2. 【Android UI】如何做一个纯粹的Android app UI 设计

    原文:http://android.eoe.cn/topic/summary 许多开发者会在多个平台上发布应用.如果您打算为 Android 开发应用,请记住在不同的平台需要遵守不同的要求和惯例.在某 ...

  3. Android App优化之ANR详解

    引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...

  4. 【Bugly安卓开发干货】Android APP 高速 Pad 化实现

    Bugly 技术干货系列内容主要涉及移动开发方向.是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创.转载请标明出处. 怎样能在最快的时间内,实现一个最新 ...

  5. 关于Android App开发技术分类的一个小总结

     前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的技术进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [ ...

  6. 关于Android App开发知识体系的一个小总结

     前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 ...

  7. 一个小巧,也很nice的“小日历”--一个Android App

    一个小巧也很Nice的“小日历” 背景 因为,常用日历记一些事情,Android自带的日历,如果有事情,会显示一个小点,然后点击进去后才能看到事情的具体内容,不是很方便. 所以,写了一个“小日历” 特 ...

  8. 用android去写一个小程序

    前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云    共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...

  9. 一个简单的Android小实例

    原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台   3.安装J ...

随机推荐

  1. 准备使用 Office 365 中国版--安装

    温故而知新,先附上一个链接:Office 365常见问题 Office 365中Office套件的安装介质和传统Office套件的安装介质是有些区别的,虽然功能都一样.因此,如果购买了带Office套 ...

  2. 2014 UESTC暑前集训搜索专题解题报告

    A.解救小Q BFS.每次到达一个状态时看是否是在传送阵的一点上,是则传送到另一点即可. 代码: #include <iostream> #include <cstdio> # ...

  3. ACCP 结业考试

    1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...

  4. Linux设备驱动之中断支持及中断分层

    快速中断:在开启快速中断时,其他中断不会打断快速中断. 多个中断共享一个中断号. 中断行为受到限制: 1.不能使用可能引起阻塞的函数 2.不能使用可能引起调度的函数 中断注册:request_irq( ...

  5. Android:关于声明文件中android:process属性说明

    笔者在学习Android Service组件的过程中碰到了一个问题,就是在Android应用的声明文件Manifest.xml中有时候会对相关的服务标签设置一个android:process=&quo ...

  6. 模拟placeholder支持ie8以下处理了密码框只读的问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Swift函数编程之Map、Filter、Reduce

    在Swift语言中使用Map.Filter.Reduce对Array.Dictionary等集合类型(collection type)进行操作可能对一部分人来说还不是那么的习惯.对于没有接触过函数式编 ...

  8. JS常用自定义方法

    1,JS生成随机数方法 getRandom(100),表示生成0-100的数 function getRandom(n){ return Math.floor(Math.random()*n+1) } ...

  9. 微软职位内部推荐-B&I Site Lead

    微软近期Open的职位: Job Title: B&I Site Lead Division: Phones Quality, SWIQ Location: Beijing, China Mi ...

  10. js profiler

    https://developers.google.com/web/fundamentals/performance/critical-rendering-path/?hl=en https://de ...