/eshow-android

eshow-android 是EShow开源框架中的Android框架

Primary LanguageJavaApache License 2.0Apache-2.0

eshow-android

eshow-android 是EShow开源框架中的Android框架

www.eshow.org.cn 旗下 Android开源框架

EShow Android客户端代码说明

##编译环境 Android Studio 1.5.1,用gradle引用的许多第三方库,第一次加载会有点慢,加载完毕后要build一下,这些待下划线的类(比如 MainActivity_)会在build之后自动生成(因为用了gradle,所以不支持eclipse)。

####下面介绍一下文件的大概目录先: . ├── EShow-Android │ ├── Application │ ├── Activity:活动类 | | |——进入staging界面 | | |——maopao 冒泡界面 | | |——message 消息界面
| | |——model 一些数据结构
| | |——project 我的项目界面
| | |——setting 设置界面
| | |——task 我的任务界面
| | |——third 一些第三方代码 | | └──user 好友界面
│ ├── View:视图类 │ │ ├── CircleImageView:复写ImageView头像圆形控件 │ │ ├── ShareDialog:集成分享Dialog | | |—— PullToRefreshListView下拉刷新控件 │ │ └── XXX:其它功能块所需要使用到的视图层单独建立 │ ├── drawable:app中用到的所有的图片都在这里 │ ├── layout:布局文件 │ ├── Util:一些常用控件和Category、Manager之类 │ │ ├── common 基类和工具类 │ │ ├── comment 评论区
│ │ ├── enter 输入框 │ | |—— photopick 图片多选控件
| | |—— umeng 封装了umeng
| │ └── network 对网络做了一点封装
│ └── bangqulib:帮趣集成新模块 └── 注解开发:项目使用(https://github.com/excilys/androidannotations)这个类库管理工具

##一些觉得有必要提一下的 因为不想写一堆绑定函数,所以项目用了 androidannotations,如果以前没用过最好先看看。 显示图片用的universal-image-loader,网络库用的android-async-http,因为登录以后保存的cookie都在android-async-http,有些图片需要登录后的cookie才能取到(例如项目文档里面的图片),这种情况就会用先用android-async-http下载图片(AttachmentimagePagerFragment.java)。

  • Application用的是MyApp.java,用静态变量保存了用户信息,屏幕长宽等信息(理论上来说不是好的做法,但是这些基本都是只读的数据,而且并不大,所以就这么做了)。

  • 跳转:Coding的url是可以通过正则匹配来确定需要跳转的页面和参数。比如

        // 项目讨论
        // https://coding.net/u/8206503/p/AndroidCoding/topic/9638?page=1
        final String topic = "^https://[\\w.-]*/u/([\\w.-]+)/p/([\\w.-]+)/topic/(\\w+)(?:\\?[\\w=&-]*)?$";
        pattern = Pattern.compile(topic);
        matcher = pattern.matcher(uriString);
        if (matcher.find()) {
            intent.setClass(context, TopicListDetailActivity_.class);
            TopicListDetailActivity.TopicDetailParam param =
                    new TopicListDetailActivity.TopicDetailParam(matcher.group(1),
                            matcher.group(2), matcher.group(3));
            intent.putExtra("mJumpParam", param);
            context.startActivity(intent);
            return;
        }

8206503是创建者的个性后缀,AndroidCoding是项目名称,topic表示这是一个讨论,9638是讨论的id号。

  • 图文混排显示:服务端给我的是html,图片的链接通过正则表达式提取出来用单独的ImageView显示,文字和表情则保留下来,通过 Html.fromHtml() 转换成 Spannable,用TextView显示,表情的图片已经打包到了apk,TextView会直接在资源里面查找出来。

  • 本地缓存:由 AccountInfo 实现,其实就是将数据类以文件的方式保存起来。

  • 表情输入:在后台,表情其实是我们自定义的文字,没有用emoji,比方说笑脸,emoji是0x0001F604,我们的后台对应的是 😄 ,用户用系统键盘输入emoji的时候,我会做一下替换,至于显示,因为android的TextView和Edit本来就支持显示Spannable,基本上就是将文字转成Spannable就可以做到图文混排了。自定义的表情键盘就是用pager做出来的,有一点麻烦的是要保证表情键盘和系统键盘不能同时出现,我的做法是通过监听屏幕高度变化来设置键盘的显示和隐藏,在魅族的手机上遇到了问题,估计是因为smartbar的原因,回调函数有时候没有被调用,我的解决方法是用handle发了一个延时消息,保证回调函数能被调用。

  • 用户统计用的是umeng,因为以前用过,觉得还好,所以就继续用了。

  • 推送用的是腾讯的信鸽,之前用的是umeng推送,但有延迟有时候很大,而且用新帐号登录后还能收到旧帐号的推送,多种原因之下就换了。

##用到的一些开源库说明 见我写的blog

##License Coding is available under the MIT license. See the LICENSE file for more info.