Android mvp+Retrofit 登录注册
来源:互联网 发布:java mission control 编辑:程序博客网 时间:2024/05/17 12:56
手机号加6位密码
依赖,
//butterknife注解implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
// Retrofit库compile 'com.squareup.retrofit2:retrofit:2.0.1'// rxjava+rxandroid+retrofit2+okhttpcompile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'//gson解析数据compile 'com.google.code.gson:gson:2.6.2'
权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
utils
public class SharedPreferencesUtils { /** * 保存在手机里面的文件名 */ private static final String FILE_NAME = "share_date"; /** * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 * @param context * @param key * @param object */ public static void setParam(Context context , String key, Object object){ String type = object.getClass().getSimpleName(); SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if("String".equals(type)){ editor.putString(key, (String)object); } else if("Integer".equals(type)){ editor.putInt(key, (Integer)object); } else if("Boolean".equals(type)){ editor.putBoolean(key, (Boolean)object); } else if("Float".equals(type)){ editor.putFloat(key, (Float)object); } else if("Long".equals(type)){ editor.putLong(key, (Long)object); } editor.commit(); } /** * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 * @param context * @param key * @param defaultObject * @return */ public static Object getParam(Context context , String key, Object defaultObject){ String type = defaultObject.getClass().getSimpleName(); SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if("String".equals(type)){ return sp.getString(key, (String)defaultObject); } else if("Integer".equals(type)){ return sp.getInt(key, (Integer)defaultObject); } else if("Boolean".equals(type)){ return sp.getBoolean(key, (Boolean)defaultObject); } else if("Float".equals(type)){ return sp.getFloat(key, (Float)defaultObject); } else if("Long".equals(type)){ return sp.getLong(key, (Long)defaultObject); } return null; }}
Bean
public class Logs { /** * msg : 登录成功 * code : 0 * data : {"age":null,"appkey":null,"appsecret":null,"createtime":"2017-11-13T14:03:06","email":null,"gender":0,"icon":null,"mobile":"15810997048","money":0,"nickname":null,"password":"123456","token":"F8F6AE2A9CB78490EECEBE9E862BC435","uid":905,"username":"15810997048"} */ private String msg; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : null * appsecret : null * createtime : 2017-11-13T14:03:06 * email : null * gender : 0 * icon : null * mobile : 15810997048 * money : 0 * nickname : null * password : 123456 * token : F8F6AE2A9CB78490EECEBE9E862BC435 * uid : 905 * username : 15810997048 */ private Object age; private Object appkey; private Object appsecret; private String createtime; private Object email; private int gender; private Object icon; private String mobile; private int money; private Object nickname; private String password; private String token; private int uid; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public Object getAppkey() { return appkey; } public void setAppkey(Object appkey) { this.appkey = appkey; } public Object getAppsecret() { return appsecret; } public void setAppsecret(Object appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public Object getIcon() { return icon; } public void setIcon(Object icon) { this.icon = icon; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } public Object getNickname() { return nickname; } public void setNickname(Object nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }}
Api
public class Api { //注册 public static final String Zhuce="http://120.27.23.105/user/"; //登录 public static final String Login="http://120.27.23.105/user/";}ApiServer
public interface ApiServer { //注册 @POST Observable<Zhu> getZhu(@Url String url, @QueryMap Map<String,String> map); //登录 @POST Observable<Logs> getLog(@Url String url, @QueryMap Map<String,String> map); }Iview
public interface IView { void overAdapter(String logs); void overfairl();}Imodel
public interface IModel { void MymodelOver(String url, String mobile, String password);}Mymodel
public class Mymodel implements IModel { @Override public void MymodelOver(String url, String mobile,String password) { Map<String,String> map=new HashMap<>(); Log.d("mylog", "MymodelOver: 我规范和健康了" + url + mobile +"---"+password); map.put("mobile",mobile); map.put("password",password); Retrofit retrofit=new Retrofit.Builder().baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiServer apiServer = retrofit.create(ApiServer.class); Observable<Logs> log = apiServer.getLog("login",map); log.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Logs>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Logs log) { /* Log.d("mylog", "onNext: " + log.getCode()); Log.d("mylog", "onNext: " + log.getMsg());*/ over.setOnchang(log); } }); } public interface ovderModel{ void setOnchang(Logs log); } private ovderModel over; public void setOnchanges(ovderModel over){ this.over=over; }}Uerpresent
public class Uerpersent { private final IView iview; private final Mymodel mymodel; public Uerpersent(IView iview) { this.iview = iview; this.mymodel=new Mymodel(); } public void start(String url,String mobile,String password){ mymodel.MymodelOver(url, mobile, password); mymodel.setOnchanges(new Mymodel.ovderModel() { @Override public void setOnchang(Logs s) { if (s.getCode().equals("1")){ iview.overfairl(); }else{ iview.overAdapter(s.getData().getMobile()); } } }); }}LoginActivity
public class LoginActivity extends AppCompatActivity implements IView { @BindView(R.id.head_image) ImageView headImage; @BindView(R.id.et_userName) EditText etUserName; @BindView(R.id.et_password) EditText etPassword; @BindView(R.id.zhuce) TextView zhuce; @BindView(R.id.btn_login) Button btnLogin; Uerpersent uerpersent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); uerpersent = new Uerpersent(this); } @OnClick({R.id.zhuce, R.id.btn_login}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.zhuce: Intent intent = new Intent(LoginActivity.this,ZhuceActivity.class); startActivity(intent); break; case R.id.btn_login: final String string = etUserName.getText().toString(); String string1 = etPassword.getText().toString(); if(string.equals("") || string1.equals("")){ Toast.makeText(LoginActivity.this,"用户名和密码不能为空", Toast.LENGTH_SHORT).show(); } uerpersent.start(Api.Login,string,string1); break; } } @Override public void overAdapter(String logs) { Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); SharedPreferencesUtils.setParam(LoginActivity.this,"bolean",true); SharedPreferencesUtils.setParam(LoginActivity.this,"name",logs); finish(); } @Override public void overfairl() { Toast.makeText(LoginActivity.this,"天呐,用户不存在,请先注册",Toast.LENGTH_SHORT).show(); }}
Bean
public class Zhu { /** * msg : 注册成功 * code : 0 */ private String msg; private String code; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; }}Zview
public interface Zview { void zhusucess(); void zhufarile();}Zhumodel
public interface Zhumodel { void zhuLog(String url, String mobile, String password);}ZhuMyodel
public class ZhuMyodel implements Zhumodel { @Override public void zhuLog(String url, String mobile, String password) { HashMap<String ,String> map=new HashMap<>(); map.put("mobile",mobile); map.put("password",password); Retrofit retrofit=new Retrofit.Builder().baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiServer apiServer = retrofit.create(ApiServer.class); Observable<Zhu> reg = apiServer.getZhu("reg", map); reg.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<Zhu>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Zhu zhu) { sets.zhuOver(zhu); } }); } public interface setOverzhu{ void zhuOver(Zhu zhu); } private setOverzhu sets; public void setChangce(setOverzhu sets){ this.sets=sets; }}Zhupresenter
public class Zhupersenter { private final Zview zview; private final ZhuMyodel zhuMyodel; public Zhupersenter(Zview zview) { this.zview = zview; this.zhuMyodel=new ZhuMyodel(); } public void zhustart(String url,String mobile,String password){ zhuMyodel.zhuLog(url,mobile,password); zhuMyodel.setChangce(new ZhuMyodel.setOverzhu() { @Override public void zhuOver(Zhu zhu) { if (zhu.getCode().equals("0")){ zview.zhusucess(); }else{ zview.zhufarile(); } } }); }}ZhuceActivity
public class ZhuceActivity extends AppCompatActivity implements Zview { @BindView(R.id.ed_user) EditText edUser; @BindView(R.id.ed_password) EditText edPassword; @BindView(R.id.zhuce) Button zhuce; Zhupersenter zhucepresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhuce); ButterKnife.bind(this); zhucepresenter = new Zhupersenter(this); } @OnClick(R.id.zhuce) public void onViewClicked() { final String string = edUser.getText().toString(); final String string1 = edPassword.getText().toString(); if(string.equals("")||string1.equals("")){ Toast.makeText(ZhuceActivity.this,"用户名和密码不能为空",Toast.LENGTH_SHORT).show(); } zhucepresenter.zhustart(Api.Zhuce,string,string1); } @Override public void zhusucess() { Toast.makeText(ZhuceActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); finish(); } @Override public void zhufarile() { Toast.makeText(ZhuceActivity.this,"天呐用户已经存在",Toast.LENGTH_SHORT).show(); }}
阅读全文
0 0
- Android mvp+Retrofit 登录注册
- Retrofit+MVP登录注册+EventBus
- Android MVP +Retrofit+RxJava
- MVP 实现登录注册
- 登录注册mvp模式
- MVP注册登录
- MVP 登录注册
- MVP注册登录
- MVP 登录+注册
- MVP登录注册
- MVP登录注册
- MVP登录注册
- Mvp实现登录注册
- MVP登录注册跳转
- MVP登录注册
- MVP登录注册、跳转
- MVP实现登录注册
- 登录注册mvp
- python2.7.2+sleekxmpp arm 移植
- 添加购物车
- 1005. 继续(3n+1)猜想 (25)-浙大PAT乙级真题java实现
- 哈希检索
- GetMessage和PeekMessage的联系与区别以及用法 TranslateMessage与DispatchMessage
- Android mvp+Retrofit 登录注册
- AVFrame关于视音频数据存储
- 一个强化学习Value Iteration的演示教程
- Hibernate Criteria查询
- PHP基础语法(一)
- 如果你在运行动态库函数第一次没有问题。第二次段错误
- JS中用到的轮询小例子
- Linux下创建AndroidStudio快捷方式
- js 获得多个同name 的input输入框的值