BaseProject之账号体系
2015-12-15 17:40
260 查看
前言:
《BaseProj库》
的使用以及剖析,weatherfish已经做过详细介绍,
具体可参考:/article/10983446.html
正文:
一、介绍:
BaseProj库中账号体系部分分成2个包:account、usercenter其中account主管:登录、注册、找回密码、设置密码、输入验证码、账号绑定、设置个人资料信息等。
usercenter主管:个人中心、个人资料、性别修改、昵称修改、图片多指缩放浏览、所在地区。
其目录结构分别如下:
account:
usercenter:
二、用法:
1):Account
以登录为例:1.带界面
直接在你的主工程登录入口处,调用BaseProj中的LoginActivity就ok了。
一行代码:
LoginActivity.startLoginActivity(mContext);
//这个是LoginActivity中的一个静态方法,用来启动LoginActivity //主要是方便开发者在自己的主工程中去进行相应的操作。 public static void startLoginActivity(Context context) { Intent intent = new Intent(context, LoginActivity.class); context.startActivity(intent); } //登录成功或失败的结果,我会通过EventBus总线的方式post一个LoginEvent实例出来, //在你的MainActivity或BaseActivity中,重写OnEventMainThread(LoginEvent event){}方法 //来进行相关的操作即可。 /** * 登录成功通知回调 */ private void notifyLogin(boolean loginTrue) { LoginEvent event = new LoginEvent(); event.setLoginSuccess(loginTrue); EventBus.getDefault().post(event); }
2、不带界面
如果开发者不需要界面,只要业务,那么就可以照如下操作:
//直接用LoginApi来调静态方法,传入参数即可 /** * 1.登录 * * @param callback 网络请求成功、失败回调 * @param account 登录用户名 * @param password 登录密码 * @param id 这是当时作者weatherfish考虑到扩展,需要外部传入的view id,现在没用到,传-1即可 */ public static void login(ICallback callback, String account, String password, int id) { TreeMap<String, String> params = new TreeMap<String, String>(); params.put(ComParamContant.User.ACCOUNT, account); params.put(ComParamContant.User.PASSWORD, SecurityUtils.encrypt4login(password, AppContext.getAppSecret())); new HetNetworkBuilder(new HetBaseNetwork()).setCallBack(callback) .setParams(params).setUrl(ComUrls.SERVER_HOST + AccountUrls.Login.LOGIN).setMethod(Request.Method.POST).setId(id).setNoAccessToken().setSign().setHttps().commit(); }
3,不要第三方登录入口
因为BaseProject里面默认是有第三方登录入口的,考虑到有的项目可能还没申请第三方的账号,或暂时不需要第三方登录入口,这时可以通过调下面的方法来去掉第三方登录:
LoginActivity.startLoginActivity(mContext,false);
4,那么假如我的界面与BaseProj中的都不一样了,只是接口是一样的,现在想用公司账号系统登录或第三方登录,咋办呢?答案如下:
在account/manager/中有一个LoginManager管理类,作为一个登录管理的入口,持有了hetLogin(),sinaWeiboLogin(),weixinLogin()等方法,具体见下图:
由于水平有限,暂时只能整理成这样,具体用法,
可以参考事例工程CLifeNew
2):Usercenter
这个没有什么特别要说的,用法跟上面的殊途同归。不理解的可稳步上面的事例工程。3):UserManager
这是一个用户信息,行为统一管理类,获取用户信息、更改用户信息、账号搜索
/** * 1.获取用户信息 */ public void getUserInfo(final ICallback<String> callback, final String thirdId, final String type) { UserApi.get(new ICallback<String>() { @Override public void onSuccess(String s, int id) { setUserModel(s); callback.onSuccess(s, id); } @Override public void onFailure(int code, String msg, int id) { callback.onFailure(code, msg, id); } }, -1); }
//2.如果已经登录,可以直接获取UserModel public UserModel getUserModel() { if (mUserModel == null || TextUtils.isEmpty(mUserModel.getUserId())) { List<UserModel> list = DataSupport.findAll(UserModel.class); if (list != null && list.size() > 0) { mUserModel = list.get(0); } } return mUserModel; }
/** * 3.修改用户信息相关函数 * * @param callback 修改成功失败回调 * @param userModel * @param id */ public void modifyPersonalInfo(final ICallback callback, final UserModel userModel, int id) { UserApi.update(new ICallback() { @Override public void onSuccess(Object o, int id) { setUserModel(userModel); callback.onSuccess(o, id); } @Override public void onFailure(int code, String msg, int id) { callback.onFailure(code, msg, id); } }, userModel, id); }
4):LoginManager
登录管理类,主要用来管理登录,退出,判断是否登录,第三方登录类型处理。主要的方法如下:
hetLogin(IQueryFirstLoginCallback callback,String account,String password);//和而泰账号登录
sinaWeiboLogin(IQueryFirstLoginCallback callback, SsoHandler ssoHandler);//微博登录
weixinLogin(IQueryFirstLoginCallback callback);//微信登录
loginOut();//退出
isLogin();//是否登录
toBindThirdAccount(final String thirdId, final String bindType);//绑定第三方账号
bind(final String type, final UserModel thirdLoginUserModel);//第三方账号进入CLife账号系统
三、关于CommonTopBar
BaseProj中的界面标题栏不是用的ActionBar,而是自定义的CommonTopBar,它的背景色是可以动态修改的,依赖于v7包的主题:Theme.AppCompat.Light.NoActionBar.所以当你想要标题栏显示你需要的颜色时,你得定义一个继承自Theme.AppCompat.Light.NoActionBar的主题。
eg:
//1.自定义style <style name="Theme.CLife.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/common_top_bar_color</item><!--在这里给定自己需要的颜色--> </style>
//2.CommonTopBar布局源码实现 <?xml version="1.0" encoding="utf-8"?> <com.het.common.resource.widget.CommonTopBar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/common_top_bar" android:layout_width="wrap_content" android:layout_height="50dp" android:background="?attr/colorPrimary"> </com.het.common.resource.widget.CommonTopBar>
关于?attr与@**等的区别,在这篇文章中有个简单的介绍。大家可以移步去看下。
相关文章推荐
- ViewPager onPageChangeListener总结
- POJ-1125 Stockbroker Grapevine
- js深入研究之函数内的函数
- 实验五
- vl_feat库的安装
- 内存管理
- 【error 500】网站的Css,image,js load 不下来
- 使用移动广告平台横幅广告自动刷新教程
- atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
- mysql悲观锁总结和实践
- 《Android群英传》读书笔记(2)第四章:ListView常用优化技巧
- Elasticsearch Reference [2.x] scroll
- KMP/扩展KMP
- 我的iOS学习历程 - UIView动画与CAAnimation动画详解
- ubuntu下将可执行程序打包成deb包
- delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- 使用glReadPixels 读取颜色缓存,深度缓存和模板缓存数据
- atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别
- 实验四
- C++嵌入Python,以及两者混用