LoginView
package com.example.huidiao; /** * Created by 小薇 on 2018/7/11. */ public interface LogView { //progress 显示 void showProgress(); //progress 隐藏 void hideProgress(); //name 格式错误 void setUsernameError(); //pswd 格式错误 void setPasswordError(); //页面成功跳转home void navigateToHome(); }
LoginViewImpl
package com.example.huidiao; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.ProgressBar; public class LogActivity extends AppCompatActivity implements LogView, View.OnClickListener { private ProgressBar progressBar; private EditText username; private EditText password; private PresenterActivity presenterActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log); //初始化控件 progressBar = findViewById(R.id.progress); username = findViewById(R.id.username); password= findViewById(R.id.password); findViewById(R.id.button).setOnClickListener(this); presenterActivity = new PresenterActivity(this); } @Override protected void onDestroy() { presenterActivity.onDestroys(); super.onDestroy(); } //显示视图 @Override public void showProgress() { progressBar.setVisibility(View.VISIBLE); } //隐藏试图 @Override public void hideProgress() { progressBar.setVisibility(View.GONE); } //用户名错误 @Override public void setUsernameError() { username.setError(getString(R.string.username_error)); } @Override public void setPasswordError() { password.setError(getString(R.string.password_error)); } @Override public void navigateToHome() { startActivity(new Intent(this,MainActivity.class)); } @Override public void onClick(View view) { presenterActivity.validate(username.getText().toString(),password.getText().toString()); } }
LoginPresenter
package com.example.huidiao; /** * Created by 小薇 on 2018/7/11. */ public interface LogPresenter { //获取view的数据 void validate(String username,String password); //解绑 void onDestroys(); }
LoginPresenterimpl
package com.example.huidiao; /** * Created by 小薇 on 2018/7/11. */ public class PresenterActivity implements LogPresenter, LogModel.OnLoginFinishedListener { private LogView logView; private LogModel model; public PresenterActivity(LogView logView) { this.logView= logView; //实例化model this.model= new ModelImplements(); } @Override public void validate(String username, String password) { if(logView!=null){ logView.showProgress(); } model.login(username,password,this); } @Override public void onDestroys() { logView=null; } @Override public void onUsernameError() { if(logView!=null){ logView.setUsernameError(); logView.hideProgress(); } } @Override public void onPasswordError() { if(logView!=null){ logView.setPasswordError(); logView.hideProgress(); } } @Override public void onSuccess() { if(logView!=null){ logView.navigateToHome(); } } }LoginModel
package com.example.huidiao; /** * Created by 小薇 on 2018/7/11. */ public interface LogModel { interface OnLoginFinishedListener{ //用户名错误 void onUsernameError(); //密码错误 void onPasswordError(); //成功 void onSuccess(); } void login(String username,String password,OnLoginFinishedListener onLoginFinishedListener); }
LoginModelImpl
package com.example.huidiao; import android.os.Handler; import android.text.TextUtils; /** * Created by 小薇 on 2018/7/11. */ public class ModelImplements implements LogModel{ @Override public void login(final String username, final String password, final OnLoginFinishedListener onLoginFinishedListener) { new Handler().postDelayed(new Runnable() { @Override public void run() { boolean error=false; if(TextUtils.isEmpty(username)){ onLoginFinishedListener.onUsernameError(); error=true; return; } if(TextUtils.isEmpty(password)){ onLoginFinishedListener.onPasswordError(); error=true; return; } if(!error){ onLoginFinishedListener.onSuccess(); } } },2000); } } xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="250dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:orientation="vertical" android:gravity="center" android:layout_gravity="center_horizontal" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:id="@+id/username" android:gravity="center_vertical" android:layout_height="wrap_content" android:layout_width="match_parent" android:drawablePadding="8dp" android:hint="@string/user_name"/> <EditText android:id="@+id/password" android:gravity="center_vertical" android:layout_height="wrap_content" android:layout_width="match_parent" android:drawablePadding="8dp" android:hint="@string/password" android:inputType="textPassword"/> <Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/log_in"/> <ProgressBar android:id="@+id/progress" android:layout_marginTop="8dp" android:layout_height="wrap_content" android:layout_width="wrap_content" android:visibility="gone"/> </LinearLayout>