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'
// Retrofitcompile '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();    }}








原创粉丝点击