BaseProject之账号体系

来源:互联网 发布:淘宝在线登录 编辑:程序博客网 时间:2024/04/29 10:33

前言:

  《BaseProj库》

的使用以及剖析,weatherfish已经做过详细介绍,
具体可参考:http://blog.csdn.net/felix_wangq/article/details/50315047

正文:

一、介绍:

BaseProj库中账号体系部分分成2个包:account、usercenter

其中account主管:登录、注册、找回密码、设置密码、输入验证码、账号绑定、设置个人资料信息等

usercenter主管:个人中心、个人资料、性别修改、昵称修改、图片多指缩放浏览、所在地区。
其目录结构分别如下:
account:
account
usercenter:
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()等方法,具体见下图:
LoginManager类

由于水平有限,暂时只能整理成这样,具体用法,
可以参考事例工程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与@**等的区别,在这篇文章中有个简单的介绍。大家可以移步去看下。

1 0
原创粉丝点击