1.登录布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".model.MainActivity"
android:orientation="vertical"
>
<EditText
android:id="@+id/etname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入账号"
android:layout_gravity="center_horizontal"/>
<EditText
android:id="@+id/etpass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:layout_gravity="center_horizontal"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="100dp"
android:layout_gravity="center_horizontal">
<Button
android:id="@+id/deng"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal"/>
<Button
android:id="@+id/zhu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册"
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
</LinearLayout>
注册布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".model.Main2Activity"
android:orientation="vertical">
<EditText
android:id="@+id/ename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入账号"
android:layout_gravity="center"/>
<EditText
android:id="@+id/epass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:layout_marginTop="50dp"
android:layout_gravity="center"/>
<Button
android:id="@+id/sing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
2.V
package com.bw.ymy.mvptext1.view;
public interface IView<T> {
//成功
void success(T data);
//失败
void fail(String msg);
}
3.M
登录
package com.bw.ymy.mvptext1.model;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.bw.ymy.mvptext1.R;
import com.bw.ymy.mvptext1.presemter.Login;
import com.bw.ymy.mvptext1.view.IView;
/**
* 1.首先创建一个 Interstance View接口类
* 2.主页面继承 Activity implements View.OnClickListener, 上一步写的类
*
*
*
*/
public class MainActivity extends Activity implements View.OnClickListener,IView {
EditText etname,etpass;
//P
Login mlogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个方法,获取资源id
initView();
//创建一个实列
initPersenter();
}
private void initPersenter() {
mlogin=new Login(this);
}
//获取资源id
private void initView() {
etname=findViewById(R.id.etname);
etpass=findViewById(R.id.etpass);
//无效 作废
etpass.invalidate();
//点击登录 http://120.27.23.105/user/login?mobile=手机号&password=密码
findViewById(R.id.deng).setOnClickListener(this);
//点击注册 http://120.27.23.105/user/reg?mobile=手机号&password=密码
findViewById(R.id.zhu).setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id=v.getId();
switch (id)
{
//点击登录
case R.id.deng:
//吧User类拿过来 引用
User user=new User(etname.getText().toString(),etpass.getText().toString());
mlogin.submit(user);
break;
//点击注册
case R.id.zhu:
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
break;
default:
break;
}
}
//解绑
@Override
protected void onDestroy() {
super.onDestroy();
mlogin.detachView();
}
//成功
@Override
public void success(Object data) {
Toast.makeText(this,"success",Toast.LENGTH_LONG).show();
}
//失败
@Override
public void fail(String msg) {
Toast.makeText(this,msg,Toast.LENGTH_LONG).show();
}
}
3.1 注册
package com.bw.ymy.mvptext1.model;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.bw.ymy.mvptext1.R;
import com.bw.ymy.mvptext1.presemter.Sing;
import com.bw.ymy.mvptext1.view.IView;
public class Main2Activity extends AppCompatActivity implements View.OnClickListener,IView
{
private EditText ename,epass;
Sing sing;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initview();
initpersenter();
}
private void initpersenter() {
sing=new Sing(this);
}
private void initview() {
//获取资源id
ename=findViewById(R.id.ename);
epass=findViewById(R.id.epass);
epass.invalidate();
findViewById(R.id.sing).setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id=v.getId();
switch (id)
{
case R.id.sing:
User user=new User(ename.getText().toString(),epass.getText().toString());
sing.submit(user);
break;
}
}
@Override
public void success(Object data) {
Toast.makeText(this,"成功",Toast.LENGTH_LONG).show();
}
@Override
public void fail(String msg) {
Toast.makeText(this,msg,Toast.LENGTH_LONG).show();
}
}
3.2 User类
package com.bw.ymy.mvptext1.model;
public class User {
private String name;
private String pass;
public User(String name, String pass) {
this.name = name;
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
4.P
登录
package com.bw.ymy.mvptext1.presemter;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.bw.ymy.mvptext1.Bean.LoginBean;
import com.bw.ymy.mvptext1.Utils.Netius;
import com.bw.ymy.mvptext1.model.User;
import com.bw.ymy.mvptext1.view.IView;
public class Login {
//把第一个实列拿过来
private IView mIView;
public Login(@NonNull IView iView)
{
mIView=iView;
}
public void submit(User user)
{
if(checkName(user.getName())&&checkPass(user.getPass()))
{
Netius.getInsatnce().requestData("http://120.27.23.105/user/login?mobile="+user.getName()+"&password="+user.getPass(),
LoginBean.class,new Netius.Callback<LoginBean>(){
@Override
public void onsuccess(LoginBean loginBean) {
if(loginBean.getCode()==0)
{
mIView.success(loginBean);
}else
{
mIView.fail("账号密码失败");
}
}
});
}
else
{
mIView.fail("账号或者密码错误");
}
}
public void detachView()
{
mIView=null;
}
//判断账号
private boolean checkName(String name)
{
return !TextUtils.isEmpty(name);
}
//判断密码大于6位
private boolean checkPass(String pass)
{
return (!TextUtils.isEmpty(pass)&&pass.length()>=6);
}
}
4.1 注册
package com.bw.ymy.mvptext1.presemter;
import com.bw.ymy.mvptext1.Bean.SingBean;
import com.bw.ymy.mvptext1.Utils.Netius;
import com.bw.ymy.mvptext1.model.User;
import com.bw.ymy.mvptext1.view.IView;
public class Sing {
private IView iView;
public Sing(IView iView) {
this.iView = iView;
}
public void submit(User user)
{
if(checkName(user.getName())&&checkPass(user.getPass()))
{
Netius.getInsatnce().requestData("http://120.27.23.105/user/reg?mobile="+user.getName()+"&password="+user.getPass(),
SingBean.class,new Netius.Callback<SingBean>(){
@Override
public void onsuccess(SingBean singBean) {
if(singBean.getCode()==0)
{
iView.success(singBean);
}else
{
iView.fail(singBean.getMsg());
}
}
});
}else
{
iView.fail("请输入正确的账号和密码");
}
}
//解绑
public void detach()
{
iView=null;
}
//判断密码不少于6位
protected boolean checkPass(String pass)
{
return !pass.isEmpty()&&pass.length()==6;
}
//判断手机号大于11位
private boolean checkName(String name)
{
return !name.isEmpty()&&name.length()==11;
}
}
5.工具类
package com.bw.ymy.mvptext1.Utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Netius {
private static Netius insatnce;
public Netius() {
}
public static Netius getInsatnce()
{
if(insatnce==null)
{
insatnce=new Netius();
}
return insatnce;
}
public interface Callback<T>
{
void onsuccess(T t);
}
//是否可以用网络
public boolean hasNetWork(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
}
//判断是否是手机网络
public boolean isMobile(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo.getType()==ConnectivityManager.TYPE_MOBILE;
}
public void requestData(final String urlstr,final Class clazz,final Callback callback)
{
new AsyncTask<String,Void,Object>()
{
@Override
protected Object doInBackground(String... strings) {
return requestData(urlstr,clazz);
}
@Override
protected void onPostExecute(Object o) {
callback.onsuccess(o);
}
}.execute(urlstr);
}
public <T> T requestData(String urlstr,Class clazz)
{
return (T)new Gson().fromJson(requestData(urlstr),clazz);
}
public String requestData(String urlstr)
{
String result="";
try {
URL url=new URL(urlstr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if(responseCode==200){
String s = streamTostring(urlConnection.getInputStream());
return s;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public String streamTostring(InputStream is)throws IOException
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder=new StringBuilder();
for (String tmp=bufferedReader.readLine();tmp!=null;tmp=bufferedReader.readLine()){
builder.append(tmp);
}
return builder.toString();
}
}
6.
登录的Bean类
package com.bw.ymy.mvptext1.Bean;
public class LoginBean {
/**
* msg : 登录成功
* code : 0
* data : {"age":null,"appkey":"dba243496835d7fe","appsecret":"075A1D91B6EA54A018F21DA8DA1CE0A8","createtime":"2018-11-27T19:52:50","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"15233802510","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"BB3D32DAA139E7646E92FD86DAE83DD5","uid":22989,"userId":null,"username":"15233802510"}
*/
private String msg;
private int code;
private DataBean data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* age : null
* appkey : dba243496835d7fe
* appsecret : 075A1D91B6EA54A018F21DA8DA1CE0A8
* createtime : 2018-11-27T19:52:50
* email : null
* fans : null
* follow : null
* gender : null
* icon : null
* latitude : null
* longitude : null
* mobile : 15233802510
* money : null
* nickname : null
* password : 8F669074CAF5513351A2DE5CC22AC04C
* praiseNum : null
* token : BB3D32DAA139E7646E92FD86DAE83DD5
* uid : 22989
* userId : null
* username : 15233802510
*/
private Object age;
private String appkey;
private String appsecret;
private String createtime;
private Object email;
private Object fans;
private Object follow;
private Object gender;
private Object icon;
private Object latitude;
private Object longitude;
private String mobile;
private Object money;
private Object nickname;
private String password;
private Object praiseNum;
private String token;
private int uid;
private Object userId;
private String username;
public Object getAge() {
return age;
}
public void setAge(Object age) {
this.age = age;
}
public String getAppkey() {
return appkey;
}
public void setAppkey(String appkey) {
this.appkey = appkey;
}
public String getAppsecret() {
return appsecret;
}
public void setAppsecret(String 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 Object getFans() {
return fans;
}
public void setFans(Object fans) {
this.fans = fans;
}
public Object getFollow() {
return follow;
}
public void setFollow(Object follow) {
this.follow = follow;
}
public Object getGender() {
return gender;
}
public void setGender(Object gender) {
this.gender = gender;
}
public Object getIcon() {
return icon;
}
public void setIcon(Object icon) {
this.icon = icon;
}
public Object getLatitude() {
return latitude;
}
public void setLatitude(Object latitude) {
this.latitude = latitude;
}
public Object getLongitude() {
return longitude;
}
public void setLongitude(Object longitude) {
this.longitude = longitude;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Object getMoney() {
return money;
}
public void setMoney(Object 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 Object getPraiseNum() {
return praiseNum;
}
public void setPraiseNum(Object praiseNum) {
this.praiseNum = praiseNum;
}
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 Object getUserId() {
return userId;
}
public void setUserId(Object userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
}
注册的
package com.bw.ymy.mvptext1.Bean;
public class SingBean {
private String msg;
private int code;
public SingBean(String msg, int code) {
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
效果图: