您的位置:首页 > 其它

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与@**等的区别,在这篇文章中有个简单的介绍。大家可以移步去看下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: