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高频面试题,以及面试经历