BaseProject之账号体系

前言:

  《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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值