• Stars
    star
    264
  • Rank 154,631 (Top 4 %)
  • Language
    HTML
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Coding Android 客户端源代码

Coding Android客户端代码说明

编译环境

Android Studio 3.1.3,根据 variants 选择编译企业版或个人版。修改 gradle.properties.samplegradle.properties 并修改文件中 keystore 相关的环境变量,编译企业版的时候,DEV_ENTERPRISE 设置为 true ,因为用 gradle 引用的许多第三方库,所以第一次加载会有点慢,加载完毕后要 build 一下,这些带下划线的类(比如 MainActivity_)会在build之后自动生成。

包说明

common 基类和工具类

comment 评论区
enter 输入框
network 对网络做了一点封装
photopick 图片多选控件
umeng 封装了umeng

hide 进入staging界面
maopao 冒泡界面
message 消息界面
model 一些数据结构
project 我的项目界面
setting 设置界面
task 我的任务界面
third 一些第三方代码
user 好友界面

一些觉得有必要提一下的

因为不想写一堆绑定函数,所以项目用了 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.

More Repositories

1

Coding-iOS

CODING iOS 客户端源代码
Objective-C
3,802
star
2

WebIDE

Coding WebIDE Community Edition
Shell
1,709
star
3

WebIDE-Frontend

WebIDE 前端项目
JavaScript
380
star
4

Coding-iPad

CODING iPad 客户端源代码
Objective-C
298
star
5

WebIDE-Backend

WebIDE 后端项目
Java
229
star
6

coding-download-center

CODING 公共制品库
Shell
53
star
7

WebIDE-Frontend-Webjars

webjar 项目,用于将 WebIDE 前端打包成 webjar
40
star
8

emoji-java

emoji-java
Java
35
star
9

coding.github.io

🌏最👍的云端开发平台 > https://coding.github.io
HTML
33
star
10

m.coding.net

https://m.coding.net 源代码
JavaScript
21
star
11

awesome-blogs

最佳 Coding Pages 博客合集
16
star
12

Comments

(Migrated) A comment system based on Coding.net
JavaScript
13
star
13

Coding-Plugin-for-JetBrains

Coding-Plugin-for-JetBrains
Java
11
star
14

Coding-Emoji

Coding 洋葱猴表情 😄 欢迎大家提交自己的个性洋葱猴表情 ^_^
HTML
7
star
15

ci-plugins

plugins for coding-ci
6
star
16

coding-cli

CODING 命令行工具,提供事项导入导出等功能
PHP
4
star
17

helm-push

用于推送 Chart 包到 Coding 制品库的 Helm 插件。
Shell
4
star
18

Webhook.v2.Demo

JavaScript
4
star
19

coding-generic

用于推送 generic 类型的制品到制品库
JavaScript
4
star
20

url2pic

A web service for fetching url and converting into image using headless Chromium.
JavaScript
3
star
21

Coding-Plus

为 Coding.net 添加更多酷炫的特性的 Chrome 插件!
CSS
3
star
22

coding-sketch-toolkit

A series of sketch scripts for CODING designers
JavaScript
2
star
23

WebIDE-CI

Java
2
star
24

coding-activeness-graph-widget

Coding 活跃图挂件
JavaScript
2
star
25

coding-sdk-php

CODING.net SDK for PHP
PHP
1
star
26

coding-design-token-vscode-snippets

1
star
27

cloudstudio-extension

The cloudstudio.d.ts node module
1
star
28

pages-builder-jekyll

Coding Pages Builder for Jekyll
Shell
1
star
29

WebIDE-Plugin-Env

ENV for Coding/WebIDE
JavaScript
1
star
30

coding-images

扣钉 Docker images,用于持续集成
Dockerfile
1
star