Android Studio 导入 jar 包及第三方开源库教程
title: 加油宝简洁版Android端开发历程
date: 2017-01-03 11:14:45
tags: Android
categories: Android
一个尚在开发阶段的App—加油宝简洁版
源码地址:https://github.com/jiayangme/work
设计思想:
• 面向对象,面向接口编程
• 低耦合和高内聚
• ** 规范化,包括变量命名,dimen,drawable,id资源的命名,padding和margin使用的细微区别
• 清晰化,页面的实现,脑海里会形成一条思路线,知道现在进行到哪一步。先整体,后局部。
• 一定的扩展性,对象和接口的设计不局限于当前的需求,具有一定的扩展性
• DataBinding** 数据绑定
• 一套默认的自动初始化框架,网络请求与渲染UI
• 后期将要做的事:优化页面,页面的设计以产品为核心
开发中涉及到的技术要点:
• App架构自动化刷新视图,此处难点在于bind时需要先执行setContentView
• Rxjava网络通信模式,请求方式,数据加密
• Databinding绑定数据
• 登录态的保存
• 基于MultiType的复杂列表实现
未完成的部分:
请求中,请求成功,请求失败框架如何搭建?
七大模块:
1.App架构
• 所有Activity基类BaseActivity。所有无网络请求的Activity继承
• 具有初始化网络请求功能的基类NetWorkBaseActivity,继承自BaseActivity。所有具有初始化网络请求的Activity继承,实现自动下拉刷新
• 基于DataBinding的Activity基类DataBindingBaseActivity。使用DataBinding的所有Activity继承
• BaseFragment,BaseAdapter,BaseRequest,BaseResult
• 部分网络请求加载中处理,网络请求失败处理逻辑,现有项目下未成熟
2.网络通信架构
• Retrofit + Rxjava 构建数据加载器,实现与后台的数据传输,请求方式POST
•请求体和部分请求参数使用BlackBox,Crypt共同加密,响应数据通过本地native方法解密,并通过Cmd分发器统一进行json反序列化
• 请求回调设置为三种情况,code为0,请求成功。code不为0,请求结果错误。网络异常,请求 失败
3.账户
• 账户的登录模块
• 注册模块
• 找回密码模块
• 手机验证码动态登录模块,尚未进入开发阶段
4.产品
• 一级页面首页,基于Drakeet的MultiType开源项目,实现低耦合,更加优雅的首页模块
• 一级页面理财产品模块
• 一级页面车主加油详情模块,页面不美观,待重新设计
• 二级页面四类理财产品列表模块,页面尚待美化
• 二级页面车主加油支付方式选择模块,尚未进入开发阶段
• 三级页面理财产品详情模块,验证交易密码对话框
• 三级页面车主加油支付模块,尚未进入开发阶段
5.支付
• 余额支付模块:产品详情 -> 验证交易密码 -> 创建订单
• 银行卡支付模块:产品详情 -> 支付方式选择 -> 验证交易密码 -> 验证手机验证码 -> 创建订单成功
• 支付宝支付模块:尚未进入开发阶段
• 提现模块,尚未进入开发阶段
6.资产
• 一级页面资产模块
• 二级页面未满期总资金模块
• 二级页面我的余额模块
• 二级页面我的红包模块
• 二级页面我的银行卡模块
• 二级页面我的加油卡模块,尚未进入开发阶段
• 三级页面已购理财产品详情页模块
• 三级页面交易明细模块
7.基于MaterialDesign的设置界面
• 退出登录模块
• 身份认证模块
• 个人安全中心其他模块:账号信息,登录密码,交易密码,手势密码,尚未进入开发阶段
• 清除缓存,检查更新,关于页面等模块,尚未进入开发阶段
成长与收获:
1.优雅的代码:
• UI:记住常用的dp大小,可以在写界面布局时,快速的完成控件的大小,位置,边界的设置,提高开发效率。
对细节的把握,margin和padding的不同,视觉上的表现一模一样,但点击事件的触摸范围,背景的效果范围,边线是有区别的。
• 一个完整的需求页面:代码结构应该有大局观,先整体,后局部。这样写代码的思路会更加清晰。例如一个页面的实现顺序应该如下:界面布局 建立Activity 根据文档建立请求model和响应model Cmd命令字分发Json 发起请求和成功返回时数据处理
• 避免内存泄漏,匿名内部类和非静态内部类会引用外部对象,如果在Activity销毁的时候,没有释放。内部类会持有Activity对象,造成内存泄漏
• 适时的使用面向接口编程,化解一些类之间的强依赖,让耦合程度降到最低
• 接受新知识,新的知识能帮助我们写出更优秀的代码和更高的效率。在必要的时候应该利用我们的创造性,创造新知识
开发人员:
jiayang(主要Android开发&设计)
加油宝技术研发中心后台人员(主要服务端开发)
用到的开源库:
compile 'com.android.support:appcompat-v7:25.+'
compile 'com.android.support:design:25.0.0'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.android.support:cardview-v7:25.+'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile 'com.orhanobut:logger:1.15'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'me.grantland:autofittextview:0.2.+'
compile 'com.jungly:gridPasswordView:0.3'
compile 'com.rengwuxian.materialedittext:library:2.1.4'
compile 'me.drakeet.multitype:multitype:2.3.0'