1.BaseView
package com.example.zhou2.base;
public interface BaseView {
void ondatanull(String data);
}
2.CallBack接口
package com.example.zhou2;
public interface CallBack {
void onSuccess(String result);
void onFailer(String error);
}
3.LoginView
package com.example.zhou2.view;
import com.example.zhou2.base.BaseView;
public interface LoginView extends BaseView {
void onSuccess(String result);
void onFailer(String error);
}
4.LoginModel
package com.example.zhou2.model;
import android.os.AsyncTask;
import android.os.SystemClock;
import com.example.zhou2.CallBack;
import com.example.zhou2.bean.RootBean;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class LoginModel {
public void login(String mobile, String password, final CallBack callBack) {
final String url = "http://www.zhaoapi.cn/user/login?mobile=" + mobile + "&password=" + password;
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... strings) {
try {
URL url1 = new URL(url);
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(3000);
int codase = connection.getResponseCode();
if (codase == 200) {
InputStream inputStream = connection.getInputStream();
String s = CharStreams.toString(new InputStreamReader(inputStream,"utf-8"));
SystemClock.sleep(3000);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
RootBean rootBean = gson.fromJson(s, RootBean.class);
if (rootBean.getCode()==0) {
callBack.onSuccess(s);
} else {
callBack.onFailer("登錄失敗");
}
}
}.execute();
}
}
5.LoginPresenter
package com.example.zhou2.presenter;
import android.os.SystemClock;
import android.text.TextUtils;
import com.example.zhou2.CallBack;
import com.example.zhou2.model.LoginModel;
import com.example.zhou2.model.RisgisterModel;
import com.example.zhou2.view.LoginView;
public class LoginPresenter {
private LoginView loginView;
private LoginModel loginModel;
private RisgisterModel risgisterModel;
public LoginPresenter(LoginView loginView) {
this.loginView = loginView;
loginModel=new LoginModel();
risgisterModel= new RisgisterModel();
}
public void login(String mobile, String password){
if (TextUtils.isEmpty(mobile)&&TextUtils.isEmpty(password)){
loginView.ondatanull(“不能爲空”);
}
loginModel.login(mobile, password, new CallBack() {
@Override
public void onSuccess(String result) {
loginView.onSuccess(result);
}
@Override
public void onFailer(String error) {
loginView.onFailer(error);
}
});
}
public void zhuce(String zname,String zpass){
if (TextUtils.isEmpty(zname)&&TextUtils.isEmpty(zpass)){
loginView.ondatanull("不能爲空");
}
risgisterModel.zhuce(zname,zpass, new CallBack() {
@Override
public void onSuccess(String result) {6.
loginView.onSuccess(result);
}
@Override
public void onFailer(String error) {
loginView.onFailer(error);
}
});
}
}
6.MainActivity
package com.example.zhou2;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.zhou2.presenter.LoginPresenter;
import com.example.zhou2.view.LoginView;
public class MainActivity extends AppCompatActivity implements LoginView {
private EditText username;
private EditText password;
private Button login;
private TextView register;
private ProgressDialog progressDialog;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
loginPresenter = new LoginPresenter(this);
}
private void initListener() {
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = username.getText().toString();
String pass = password.getText().toString();
loginPresenter.login(name,pass);
progressDialog =ProgressDialog.show(MainActivity.this,"登錄","正在登錄");
}
});
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,RisgisterActivity.class));
}
});
}
private void initView() {
username = findViewById(R.id.et_userName);
password = findViewById(R.id.et_password);
login = findViewById(R.id.login);
register = findViewById(R.id.zhuce);
}
@Override
public void onSuccess(String result){
//SystemClock.sleep(3000);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
}
@Override
public void onFailer(String error) {
Toast.makeText(this, "用戶名或密碼錯誤", Toast.LENGTH_SHORT).show();
}
@Override
public void ondatanull(String data) {
Toast.makeText(this, "不能爲空", Toast.LENGTH_SHORT).show();
}
}
7.RigisterModel
package com.example.zhou2.model;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.SystemClock;
import com.example.zhou2.CallBack;
import com.example.zhou2.bean.RootBean;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class RisgisterModel {
@SuppressLint(“StaticFieldLeak”)
public void zhuce(String name, String password, final CallBack callBack){
final String path = “http://www.zhaoapi.cn/user/reg?mobile="+name+"&password=”+password;
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String… strings) {
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(“GET”);
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.connect();
int code = urlConnection.getResponseCode();
if (code==200){
InputStream inputStream = urlConnection.getInputStream();
String str = CharStreams.toString(new InputStreamReader(inputStream,“utf-8”));
return str;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
RootBean rootBean = gson.fromJson(s, RootBean.class);
if (rootBean.getCode()==0){
callBack.onSuccess(s);
}else {
callBack.onFailer("失敗");
}
}
}.execute();
}
}
8.RigisterActivity
package com.example.zhou2;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.zhou2.presenter.LoginPresenter;
import com.example.zhou2.view.LoginView;
public class RisgisterActivity extends AppCompatActivity implements LoginView {
private EditText name;
private EditText pass;
private Button zhuce;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_risgister);
initView();
initListener();
loginPresenter = new LoginPresenter(this);
}
private void initListener() {
zhuce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String zname = name.getText().toString();
String zpass = pass.getText().toString();
loginPresenter.zhuce(zname,zpass);
}
});
}
private void initView() {
name = findViewById(R.id.zc_userName);
pass = findViewById(R.id.zc_password);
zhuce = findViewById(R.id.zhuce);
}
@Override
public void onSuccess(String result) {
startActivity(new Intent(this,Main2Activity.class));
}
@Override
public void onFailer(String error) {
Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
}
@Override
public void ondatanull(String data) {
Toast.makeText(this, "不能爲空", Toast.LENGTH_SHORT).show();
}
}
9.登錄佈局
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_userName"
android:hint="賬號"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_password"
android:hint="密碼"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/login"
android:text="登錄"
android:layout_gravity="center_horizontal"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="立即註冊"
android:textColor="#de0000"
android:id="@+id/zhuce"
android:layout_gravity="center_horizontal"
/>
10.bean類
package com.example.zhou2.bean;
public class RootBean {
private String msg;
private int 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;
}
}