本项目,是基于玩Android平台提供的API接口,从0开始搭建的APP项目,本项目采用MVP架构,网络请求框架采用Retrofit,图片加载框架使用Glide,具体模块开发将会后续的章节中依次介绍。
1、欢迎界面
用户进入欢迎页面后,点击“登录/注册”按钮,进入登录注册界面
在这里有个小知识点,就是底部按钮边框的定义,采用的是自定义边框。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:color="@color/colorBlack" android:width="3dp"></stroke>
<corners android:radius="50dp"></corners>
<solid android:color="@color/colorWhite"></solid>
<size android:width="150dp" android:height="20dp"></size>
</shape>
通常在自定义图形时,都使用shape
来作为处理工具:
(1)stroke
:边框;可以设置边框的颜色,以及边框的宽度。
(2)corners
:边框四个角的角度值,可以根据自己喜好设置。
(3)solid
:填充色
(4)size
:自定义边框的宽度和高度,可自行设置。
在Button的背景中设置即可。
android:background="@drawable/shape"
2、登录界面
在注册账号之后,回到登录界面,根据注册的用户名和密码,以及返回的信息,验证用户信息。
@Override
public void getLoginIds(String name, String password, DataCallback callback) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
LoginService loginService = retrofit.create(LoginService.class);
Call<LoginBean> call = loginService.getLoginInfo(name, password);
call.enqueue(new Callback<LoginBean>() {
@Override
public void onResponse(Call<LoginBean> call, Response<LoginBean> response) {
LoginBean loginBean = response.body();
String info = loginBean.toString();
Log.e("TAG","info===="+info);
int id = loginBean.getId();
callback.RegisterSuccess(id);
}
@Override
public void onFailure(Call<LoginBean> call, Throwable t) {
}
});
}
3、注册界面
在点击注册按钮时,携带用户名和密码,以POST请求方式去向后台请求注册,返回注册后的响应信息。
@Override
public void getRegisterData(String username, String password, String repassword, DataCallback callback) {
//联网加载数据
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
LoginService loginService = retrofit.create(LoginService.class);
Call<RegisterBean> call = loginService.getRegisterData(username, password, repassword);
call.enqueue(new Callback<RegisterBean>() {
@Override
public void onResponse(Call<RegisterBean> call, Response<RegisterBean> response) {
int errorCode = response.body().getErrorCode();
callback.RegisterSuccess(errorCode);
Log.e("TAG","errorCode==="+errorCode);
}
@Override
public void onFailure(Call<RegisterBean> call, Throwable t) {
}
});
}
Retrofit网络请求框架的使用,在之前的设计中,有介绍过,返回的RegisterBean封装实体类,将返回的errorCode
回调至注册界面。
@Override
public void getRegisterInfo(int errorCode) {
if(errorCode== 0){
Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
//如果注册成功,那么就跳转回到登录界面
startActivity(new Intent(RegisterActivity.this,LoginActivity.class));
finish();
}else{
Toast.makeText(RegisterActivity.this,"注册失败",Toast.LENGTH_SHORT).show();
}
}
4、登录成功之后,保存登录信息,下次直接跳过登录页面。
//保存登录信息
SPUtils.getInstance().saveInfo("login",true);
if(SPUtils.getInstance().getInfo("login",false)){
startActivity(new Intent(SplashActivity.this,MainActivity.class));
}else {
//显示登录注册按钮
btn_loginregister.setVisibility(View.VISIBLE);
}
关于SPUtils工具类,在之前的博客中写过,可以看看之前的博客信息。