我的一个小作品 android App ---校园资讯助手



软件主界面采用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 ---校园资讯助手的更多相关文章
- 健身小管家--android app源码
把做了近一个月的android程序源码放出来,里面包括但不限于如下内容: 1. 简单的android项目结构 2. 通用的adapter,不再为每一个ListView都写一个adapter,只要用此一 ...
- 【Android UI】如何做一个纯粹的Android app UI 设计
原文:http://android.eoe.cn/topic/summary 许多开发者会在多个平台上发布应用.如果您打算为 Android 开发应用,请记住在不同的平台需要遵守不同的要求和惯例.在某 ...
- Android App优化之ANR详解
引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...
- 【Bugly安卓开发干货】Android APP 高速 Pad 化实现
Bugly 技术干货系列内容主要涉及移动开发方向.是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创.转载请标明出处. 怎样能在最快的时间内,实现一个最新 ...
- 关于Android App开发技术分类的一个小总结
前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的技术进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [ ...
- 关于Android App开发知识体系的一个小总结
前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 ...
- 一个小巧,也很nice的“小日历”--一个Android App
一个小巧也很Nice的“小日历” 背景 因为,常用日历记一些事情,Android自带的日历,如果有事情,会显示一个小点,然后点击进去后才能看到事情的具体内容,不是很方便. 所以,写了一个“小日历” 特 ...
- 用android去写一个小程序
前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云 共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...
- 一个简单的Android小实例
原文:一个简单的Android小实例 一.配置环境 1.下载intellij idea15 2.安装Android SDK,通过Android SDK管理器安装或卸载Android平台 3.安装J ...
随机推荐
- [转]MVC3缓存之一:使用页面缓存
本文转自:http://www.cnblogs.com/parry/archive/2011/03/19/OutputCache_In_MVC3.html 在以前的WebForm的开发中,在页面的头部 ...
- eclipse乱码解决方法
eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同 ...
- SVN服务器&客户端的搭建和使用
目录结构: 1. SVN服务器搭建和使用-VisualSVNServer 2. SVN客户端安装和使用-TortoiseSVN 3. TortoiseSVN使用方法 SVN简介 SVN是Subvers ...
- Python+excel实现的简单接口自动化 V0.1
好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...
- 今天在看UWP蓝牙的例子
private async void InitializeRfcommServer() { ListenButton.IsEnabled = false; DisconnectButton.IsEna ...
- 网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
网页动物园2.0发布,经过几个月的努力,采用JAVA编写! 网页动物园2.0 正式发布!游戏发布 游戏名称: 网页动物园插件 游戏来源: 原创插件 适用版本: Discuz! X1.5 - X3.5 ...
- string、math类、random随机数、datetime、异常保护
今天讲的知识点比较多,比较杂,以至于现在脑子里还有点乱,慢慢来吧... string (1)string.length; (获得你string字符串的长度) (2)a = a.Trim(); 重新赋值 ...
- 更改项目名或者多个项目时,发现多个"Home"匹配的Controller时,解决方法
[备份]异常信息:找到多个与名为“Home”的控制器匹配的类型.如果为此请求(“{controller}/{action}/{id}”)提供服务的 路由在搜索匹配此请求的控制器时没有指定命名空间,则会 ...
- zoj 1610
Count the Colors Time Limit: 2 Seconds Memory Limit: 65536 KB Painting some colored segments on ...
- maya 专家模式
maya中按ctrl + 空格 可以在普通模式与专家模式之间切换,如图 普通模式 按ctrl+空格后进入专家模式 来自为知笔记(Wiz)