zoukankan      html  css  js  c++  java
  • APP:校园网登录app—中小南—源码简析

    转载请注明出处:http://www.cnblogs.com/wondertwo/p/5392496.html


    最近一段时间真的很惭愧,一直琐事缠身没有空闲的时间来安安心心写一篇博客,直到今晚基本忙完了专业课程设计的大作业,赶紧来赶中小南app的源码分析的稿子,不是着急要发表,而是对自己的一个承诺。

    其实在4月初我动手之前,类似功能的app就已经有四五个了,那我为什么还要花时间在这里折腾呢?之前网上那四五个app的功能都很相似,登录中南大学的校园网数字中南,支持wifi账号登录、下线这两个最基本的功能,但是这些功能我觉得都有很大的优化空间,比如在最基本的功能基础上,我的app新增了未下线账号的一键下线和沉浸式状态栏,以及启动动画等。当然在做未下线账号一键下线功能时,参考了github上一款名叫[登陆助手]的软件,它的一步下线工具类写的很棒,我基本没做多大的修改。所以本着开源的心态,我的app——中小南,也是开源的。文末会放上github源码链接。

    其实一开始,我的想法是做一个app,既要对已有的数字中南登录这些功能做出优化,也要加入一些有意思的功能,比如可以浏览维系和微博消息等,可是当我花了将近一个星期的时间把第一个功能实现后,突然发现app架构失误,原来的想法是通过底部的RadioButton来切换三个功能页签,可是却发现并不可行,登录功能倒还好,但是要在一个页签中实现微信图文消息的展示和跳转,不仅界面会很难看,逻辑实现起来也会很诡异,有种头大脚轻的感觉,所以,我的选择是大改!上面提到的app其实就是在我大改的雏形加上三四次的rebuild才发布出来的。

    所以为了避免上面提到的头大脚轻的问题,我采取了一种现在很流行的做法,就是侧滑菜单栏实现不同功能切换。很自然的,SlidingMenu这个又古老又出名的开源库第一个被我相中,前景Activity是每个具体功能的展示页,后景Activity集成了切换菜单栏和设置以及用户登录等功能。下面先看我的项目目录,一眼看上去还是蛮清晰的。

    有过app开发经历的同学,一眼就能看明白这是一个再基本不过的按组件模块来划分的做法。我就上面的项目目录结构,从上往下做一下简单的介绍:

    • adapter包:顾名思义,是适配器。里面分别是ListView适配器和一个ViewHolder,用于展示登录成功后的返回数据;
    • async包:包含了一个ExceptionWarpper异常包裹类和一个NotifyListener监听器接口,以及下面的四个异步类,AdaptiveAsyncTask继承自android.os.AsyncTask,主要增大了并发网络请求的数量;AsyncTaskWork,AsyncTaskWarpper,AsyncWorkResult封装了网络请求的具体实现逻辑,是实现未下线账号的一键下线这个功能的基础依赖;
    • constant包:NetworkConstant类封装了一些网络登录的静态常量,包括用户名、密码、宽带地址、内联网地址;
    • newwork包:NetConnectFactory类,我们实现网络登录最为重要的一个工厂方法类,封装了奘号登陆、下线,地址获取、密码加密等方法;
    • ui包:与用户界面展示相关的代码都在这里了,app中你能看到的所有界面都是在这部分实现的。包含network(校园网登录相关),setting(用户设置相关),userinfo(用户信息相关),wechat(拉取微信图文相关),weibo(拉取微博消息列表相关),BaseSlidingActivity是所有Activity的基类,也是唯一的后景Activity,GuideActivity是新手引导页,SplashActivity是闪屏页;
    • utils包:包含各种工具类,比如网络连接工具类NetConnectUtils,本地缓存工具类SharedPreferUtils,展示吐司工具类ShowToastUtils,适配系统状态栏工具类SystemBarUtils,URL地址解析工具类UrlEncodeUtils;

    那么,现在大家看到的app,其实只实现了网络登录这个主要的功能模块,其他两部分是微信、微博消息列表的拉取,都要用到网络爬虫,由于腾讯对微信内容的限制只能在微信中打开连接访问,所以短时间小猿还没有找到一个比较靠谱的解决办法,这两个功能模块会争取在下一个版本中更新出来,希望大家喜欢。


    查看Github源码请点击这里

  • 相关阅读:
    原生js封装二级城市下拉列表
    jsonp帮助你知道你关注的他或她喜欢什么歌曲
    sql 进制转换,支持93内的进制相互转换
    linux下批量删除文件
    Ubuntu环境下golang环境搭建
    centos6.5 修改网络配置
    elasticsearch(二)
    Redis
    Spring Data JPA
    elasticsearch(一)
  • 原文地址:https://www.cnblogs.com/wondertwo/p/5392496.html
Copyright © 2011-2022 走看看