软件主界面采用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. java报表工具FineReport的公式编辑框的语法简介

    FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式, ...

  2. Windows Azure支持七层负载均衡--Application Gateway

    一直以来Windows Azure的负载均衡(Loadbalancer)功能一直被客户诟病,无法其竞争对手(特别是国内的云厂商)匹敌. Windows Azure的负载均衡器是四层的,前期的版本不支持 ...

  3. Eclipse汉化后怎么改回英文版(可切换中英文)

    Eclipse汉化后怎么改回英文版(可切换中英文) 很多朋友将MyEclipse汉化后还想改回英文的,其实只要修改MyEclipse的配置文件就可以了,这里我以MyEclipse7.0为例演示一下如何 ...

  4. ANSI Common Lisp Learn

    It has been a long time that I haven't dealt with my blog. On one hand I was preparing the exams.On ...

  5. 笔记:html 拾遗之一

    html 拾遗之一 今天翻了下w3schools.com 把忘掉的语法记一下(仅常用但是不熟的部分) img alt 属性,当图片无法显示时可显示alt属性的文字 br 换行 < html la ...

  6. java编程思想读书笔记2

    六:访问权限控制 1.java中的4种访问制权限: (1).public:最大访问控制权限,对所有的类都可见. (2).protect:同一包可见,不在同一个包的所有子类也可见. (3).defaul ...

  7. 洛谷10月月赛Round.1| P3399 丝绸之路 [DP]

    题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...

  8. Unity C# 反编译

    前言 结合前篇:[反编译U3D]Decompile Unity Resources 修正 本篇说说如何查看unity项目(apk) 的源代码,前提是这个apk的代码未经过加密. 写这篇的目地就是看看别 ...

  9. SecurityError Error 2148 SWF 不能访问本地资源

    错误提示: SWF 文件不能被本地访问 不能访问本地 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源 错误信息: SecurityError: Error #2148: ...

  10. Hibernate中的inverse

    inverse inverse的英文意思是反向的,倒转的 Hibernate配置文件中的inverse正是这一真实反映,inverse属性只在Hibernate配置文件的集合元素上(list,set, ...