Android 进阶之 MVP,看完就能找到工作

62 阅读2分钟

public void onDestroy() {

mLoginView = null;

}

@Override

public void onUsernameError() {

if (mLoginView != null) {

mLoginView.setUserNameError();

mLoginView.hideProgress();

}

}

@Override

public void onPasswordError() {

if (mLoginView != null) {

mLoginView.setPasswordError();

mLoginView.hideProgress();

}

}

@Override

public void onSuccess() {

if (mLoginView != null) {

mLoginView.navigateToHome();

}

}

}

LoginActivity.java

public class LoginActivity extends AppCompatActivity implements LoginView {

private ProgressBar mProgressBar;

private EditText mUserName,mPassword;

private LoginPresenter mPresenter;

private Button mLogin;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

initView();

mPresenter = new LoginPresenter(this,new LoginInteractor());

mLogin.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

validateCredentials();

}

});

}

private void initView() {

mPassword = findViewById(R.id.password);

mUserName = findViewById(R.id.username);

mProgressBar = findViewById(R.id.progress);

mLogin = findViewById(R.id.login);

}

private void validateCredentials() {

mPresenter.validateCredentials(mUserName.getText().toString(),mPassword.getText().toString());

}

@Override

public void showProgress() {

mProgressBar.setVisibility(View.VISIBLE);

}

@Override

public void hideProgress() {

mProgressBar.setVisibility(View.GONE);

}

@Override

public void setUserNameError() {

mUserName.setError(getString(R.string.user_name_error));

}

@Override

public void setPasswordError() {

mPassword.setError(getString(R.string.password_error));

}

@Override

public void navigateToHome() {

Intent intent = new Intent(LoginActivity.this, MainActivity.class);

startActivity(intent);

finish();

}

@Override

protected void onDestroy() {

mPresenter.onDestroy();

super.onDestroy();

}

}

ic_username.xml

<vector android:height="24dp" android:tint="#666666"

android:viewportHeight="24.0" android:viewportWidth="24.0"

android:width="24dp" xmlns:android="schemas.android.com/apk/res/and…

ic_password.xml

<vector android:height="24dp" android:tint="#666666"

android:viewportHeight="24.0" android:viewportWidth="24.0"

android:width="24dp" xmlns:android="schemas.android.com/apk/res/and…

strings.xml

请输入用户名

请输入密码

登录

用户名输入错误

密码输入错误

activity_login.xml

<LinearLayout xmlns:android="schemas.android.com/apk/res/and…"

android:layout_width="250dp"

android:layout_height="match_parent"

android:layout_gravity="center_horizontal"

android:layout_marginTop="16dp"

android:gravity="center"

android:orientation="vertical">

<EditText

android:id="@+id/username"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:drawablePadding="8dp"

android:drawableStart="@drawable/ic_username"

android:gravity="center_vertical"

android:hint="@string/user_name"

android:inputType="text"

android:drawableLeft="@drawable/ic_username" />

<EditText

android:id="@+id/password"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:drawablePadding="8dp"

android:drawableStart="@drawable/ic_password"

android:gravity="center_vertical"

android:hint="@string/password"

android:inputType="textPassword"

android:drawableLeft="@drawable/ic_password" />

<Button

android:id="@+id/login"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/log_in" />

<ProgressBar

android:id="@+id/progress"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:visibility="gone" />

学习分享,共勉

Android高级架构师进阶之路

题外话,我在阿里工作多年,深知技术改革和创新的方向,Android开发以其美观、快速、高效、开放等优势迅速俘获人心,但很多Android兴趣爱好者所需的进阶学习资料确实不太系统,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人,若有关Android学习进阶可以与我在Android终极开发交流群一起讨论交流。 点击这里前往我的Git领取资料 的同时,还可以加入一个好的学习交流圈,何乐而不为呢?加入我们和我们一起吧!!

  • Android进阶知识体系学习脑图

  • Android进阶高级工程师学习全套手册

  • 对标Android阿里P7,年薪50w+学习视频

  • 大厂内部Android高频面试题,以及面试经历