接下来是在LoginActivity里使用这个开源库,并且实现网络的初始化。在这之前有个服务器的创建,我暂时还不会。所以只用了师兄的服务器URL。
LoginActivity里很简单,因为每个点击事件都已经在开源库中实现了,在这里只要实现 @1 View的初始化
注册界面View的初始化
initRegisterView(registerName
, registerUser
, registerPass
, registerPassRep
, registerBtn)
;
private void
initRegisterView(TextInputLayout registerName
, TextInputLayout registerUser
,
TextInputLayout registerPass , TextInputLayout registerPassRep ,
TextView registerBtn) {
mRegisterBtn=registerBtn ;
mRegisterName=registerName.getEditText() ;
mRegisterPass=registerPass.getEditText() ;
mRegisterPassReq=registerPassRep.getEditText() ;
mRegisterUser=registerUser.getEditText() ;
}
TextInputLayout registerPass , TextInputLayout registerPassRep ,
TextView registerBtn) {
mRegisterBtn=registerBtn ;
mRegisterName=registerName.getEditText() ;
mRegisterPass=registerPass.getEditText() ;
mRegisterPassReq=registerPassRep.getEditText() ;
mRegisterUser=registerUser.getEditText() ;
}
登录界面View的初始化
initLoginView(loginUser
,loginPass
,loginBtn)
;
private void
initLoginView(TextInputLayout loginUser
, TextInputLayout loginPass
, TextView loginBtn) {
mLoginBtn=loginBtn ;
mLoginPass=loginPass.getEditText() ;
mLoginUser=loginUser.getEditText() ;
}
mLoginBtn=loginBtn ;
mLoginPass=loginPass.getEditText() ;
mLoginUser=loginUser.getEditText() ;
}
两个方法都在
mlv_login.setListener(
new MaterialLoginViewListener() {
中分别初始化。
@2 判断输入是否符合规则。
final String name = registerName.getEditText().getText().toString()
;
final String email = registerUser.getEditText().getText().toString() ;
final String pass = registerPass.getEditText().getText().toString() ;
final String passReq = registerPassRep.getEditText().getText().toString() ;
if (TextUtils. isEmpty(name) || TextUtils. isEmpty(email) ||
TextUtils. isEmpty(pass) || TextUtils. isEmpty(passReq)) {
Utils. ToastMsg(LoginActivity. this, "不能为空!" , Toast. LENGTH_LONG) ;
return false;
}
if (!(email.endsWith( "@qq.com")
|| email.endsWith( "@gmail.com") || email.endsWith( "@foxmail.com")
|| email.endsWith( "@yahoo.com") || email.endsWith( "@163.com"))) {
if (!pass.equals(passReq)) {
Utils. ToastMsg(LoginActivity. this, "两次密码不一致" , Toast. LENGTH_LONG) ;
} else {
Utils. ToastMsg(LoginActivity. this, "请输入qq、163、gmail、yahoo、foamail" +
"等邮箱" , Toast. LENGTH_SHORT) ;
}
return false;
} else if(!pass.equals(passReq)){
Utils. ToastMsg(LoginActivity. this, "两次密码不一致" , Toast. LENGTH_LONG) ;
return false;
}
setRegisterEnable( false) ;
final String email = registerUser.getEditText().getText().toString() ;
final String pass = registerPass.getEditText().getText().toString() ;
final String passReq = registerPassRep.getEditText().getText().toString() ;
if (TextUtils. isEmpty(name) || TextUtils. isEmpty(email) ||
TextUtils. isEmpty(pass) || TextUtils. isEmpty(passReq)) {
Utils. ToastMsg(LoginActivity. this, "不能为空!" , Toast. LENGTH_LONG) ;
return false;
}
if (!(email.endsWith( "@qq.com")
|| email.endsWith( "@gmail.com") || email.endsWith( "@foxmail.com")
|| email.endsWith( "@yahoo.com") || email.endsWith( "@163.com"))) {
if (!pass.equals(passReq)) {
Utils. ToastMsg(LoginActivity. this, "两次密码不一致" , Toast. LENGTH_LONG) ;
} else {
Utils. ToastMsg(LoginActivity. this, "请输入qq、163、gmail、yahoo、foamail" +
"等邮箱" , Toast. LENGTH_SHORT) ;
}
return false;
} else if(!pass.equals(passReq)){
Utils. ToastMsg(LoginActivity. this, "两次密码不一致" , Toast. LENGTH_LONG) ;
return false;
}
setRegisterEnable( false) ;
final String password=loginPass.getEditText().getText().toString()
;
final String email=loginUser.getEditText().getText().toString() ;
if (TextUtils. isEmpty(email)||TextUtils. isEmpty(password)){
Utils. ToastMsg(LoginActivity. this, "邮箱或密码不能为空" ,Toast. LENGTH_LONG) ;
return false;
}
setLoginEnable( false) ;
final String email=loginUser.getEditText().getText().toString() ;
if (TextUtils. isEmpty(email)||TextUtils. isEmpty(password)){
Utils. ToastMsg(LoginActivity. this, "邮箱或密码不能为空" ,Toast. LENGTH_LONG) ;
return false;
}
setLoginEnable( false) ;
这里Utils.
ToastMsg是自定义的Toast。
public class Utils {
public static void ToastMsg(Context context ,String msg ,int type){
if (type!= Toast. LENGTH_LONG&&type!=Toast. LENGTH_SHORT){
throw new IllegalArgumentException( "Toast Type must be " +
"Toast.LENGTH_LONG or Toast.LENGTH_SHORT") ;
}
switch (type){
case Toast. LENGTH_LONG:
Toast. makeText(context ,msg ,Toast. LENGTH_LONG).show() ;
break;
case Toast. LENGTH_SHORT:
Toast. makeText(context ,msg ,Toast. LENGTH_SHORT).show() ;
break;
default:
break;
}
}
}
public static void ToastMsg(Context context ,String msg ,int type){
if (type!= Toast. LENGTH_LONG&&type!=Toast. LENGTH_SHORT){
throw new IllegalArgumentException( "Toast Type must be " +
"Toast.LENGTH_LONG or Toast.LENGTH_SHORT") ;
}
switch (type){
case Toast. LENGTH_LONG:
Toast. makeText(context ,msg ,Toast. LENGTH_LONG).show() ;
break;
case Toast. LENGTH_SHORT:
Toast. makeText(context ,msg ,Toast. LENGTH_SHORT).show() ;
break;
default:
break;
}
}
}
@3将信息放入Map
注册信息
//用HashMap进行数据存储
Map<String ,String> params= new HashMap<String , String>() ;
params.put( "name" ,name) ;
params.put( "email" ,email) ;
params.put( "password" ,pass) ;
Map<String ,String> params= new HashMap<String , String>() ;
params.put( "name" ,name) ;
params.put( "email" ,email) ;
params.put( "password" ,pass) ;
登录信息
final Map<String
,String> params=
new HashMap<>()
;
params.put( "email" , email) ;
params.put( "password" , password) ;
params.put( "email" , email) ;
params.put( "password" , password) ;
@4 使用okhttp 访问网络并对返回的数据进行解析,根据解析结果进行handler异步更新。
注册信息传递
MyHttpClient.
httpPost(MyHttpUrl.
HTTP_URL + MyHttpUrl.
REGISTER
, params
,
new Callback() {
@Override
public void onFailure(Call call , IOException e) {
mHandler.sendEmptyMessage( REGISTER_FAIL) ;
}
@Override
public void onResponse(Call call , Response response) throws IOException {
try {
JSONObject jsonObject= new JSONObject(response.body().string()) ;
if (jsonObject.getString( "register").equals( "true")){
mHandler.sendEmptyMessage( REGISTER_SUCCESS) ;
} else {
mHandler.sendEmptyMessage( REGISTER_FAIL_EXIST) ;
}
} catch (JSONException e) {
e.printStackTrace() ;
}
}
}) ;
new Callback() {
@Override
public void onFailure(Call call , IOException e) {
mHandler.sendEmptyMessage( REGISTER_FAIL) ;
}
@Override
public void onResponse(Call call , Response response) throws IOException {
try {
JSONObject jsonObject= new JSONObject(response.body().string()) ;
if (jsonObject.getString( "register").equals( "true")){
mHandler.sendEmptyMessage( REGISTER_SUCCESS) ;
} else {
mHandler.sendEmptyMessage( REGISTER_FAIL_EXIST) ;
}
} catch (JSONException e) {
e.printStackTrace() ;
}
}
}) ;
登录信息传递
MyHttpClient. httpPost(MyHttpUrl. HTTP_URL + MyHttpUrl. LOGIN , params
, new Callback() {
@Override
public void onFailure(Call call , IOException e) {
mHandler.sendEmptyMessage( LOGIN_FAIL) ;
}
@Override
public void onResponse(Call call , Response response) throws IOException {
try {
JSONObject jsonObject= new JSONObject(response.body().string()) ;
if (jsonObject.getString( "login").equals( "true")){
SPUtils. save(LoginActivity. this, params) ;
mHandler.sendEmptyMessage( LOGIN_SUCCESS) ;
} else {
mHandler.sendEmptyMessage( LOGIN_FAIL_PASS_ERROR) ;
}
} catch (JSONException e) {
e.printStackTrace() ;
}
}
}) ;
okhttp的用法: