在安卓开发中,肯定少不了登录,前几天写了个登录的demo,就想着记录下来,是新手,写的可能不太好,但是能用,以后写登录的时候直接copy不就好了么哈哈哈哈哈O(∩_∩)O~
Emmm,先上代码吧
public class LoginActivity extends Activity implements View.OnClickListener {
private SharedPreferences sp;
private SharedPreferences.Editor editor;
private ProgressBar processBar;
private AutoCompleteTextView autoUsername;
private EditText editTextPassword;
private Button btnSignIn;
private Button btnSignUp;
private CheckBox checkBox;
public static int LOG_OUT = 0; //注销登录标识
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sp = PreferenceManager.getDefaultSharedPreferences(this);//获取SharedPreferences
processBar =(ProgressBar) findViewById(R.id.login_progress);
autoUsername = (AutoCompleteTextView) findViewById(R.id.username);
editTextPassword = (EditText) findViewById(R.id.password);
btnSignIn = (Button) findViewById(R.id.sign_in_button);
btnSignUp = (Button) findViewById(R.id.sign_up_button);
checkBox = (CheckBox)findViewById(R.id.rem_for_password);
btnSignIn.setOnClickListener(this);
btnSignUp.setOnClickListener(this);
boolean isRemember = sp.getBoolean("remember_password",false); //在SharedPreferences中获取是否记住密码
if(getIntent().getFlags() == LOG_OUT){ //若是注销登录,那就不要记住密码了是吧
isRemember = false;
}
if (isRemember){ //若记住密码,则在SharedPreferences中获取进行自动登录
String username = sp.getString("username","");
String password = sp.getString("password","");
autoUsername.setText(username);
editTextPassword.setText(password);
checkBox.setChecked(true);
//记住密码自动登录
doLogin(username,password);
}
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.sign_in_button:
if(!processBar.isShown()){
processBar.setVisibility(View.VISIBLE);
}
String username = autoUsername.getText().toString();
String password = editTextPassword.getText().toString();
doLogin(username,password);
break;
case R.id.sign_up_button:
Intent intent = new Intent(LoginActivity.this,SignUpActivity.class);
startActivity(intent);
break;
default:
break;
}
}
//登录
private void doLogin(String username, String password) {
editor = sp.edit();
if(checkBox.isChecked()){ //若勾选记住密码,则在登录的时候将密码保存到SharedPreferences中
editor.putBoolean("remember_password",true);
editor.putString("username",username);
editor.putString("password",password);
}else {
editor.clear(); //否则清空
}
editor.apply();
//登录请求(RetrofitFactory是自己封装的网络请求工具,别到时候啥都复制不能用)
RetrofitFactory.getInstance()
.getService(UserService.class)
.login(username, password)
.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
String name = response.body().getResult().getName();
Toast.makeText(LoginActivity.this,"登录成功,欢迎"+name,Toast.LENGTH_SHORT).show();
MyApplication.setUser(response.body().getResult());
if(processBar.isShown())
processBar.setVisibility(View.GONE);
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
@Override
public void onFailure(Call call, Throwable t) {
if(processBar.isShown())
processBar.setVisibility(View.GONE);
Toast.makeText(LoginActivity.this,"登录失败,请检查您的账户或者密码重新登录",Toast.LENGTH_SHORT).show();
}
});
}
}
//注销登录
Button logOut = (Button) findViewById(R.id.btn_logout);
logOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(UerInfoActivity.this);
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("remember_password",false);
editor.apply();
Intent intent = new Intent(UerInfoActivity.this,LoginActivity.class);
intent.setFlags(LOG_OUT);
startActivity(intent);
finish();
}
});
啊~都写到这了,索性把注册也撂这
public class SignUpActivity extends Activity {
private ProgressBar signupProgress;
private AutoCompleteTextView autoTextName;
private EditText editTextPassword;
private EditText editTextAge;
private EditText editTextAddress;
private Button btnSignUp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
signupProgress =(ProgressBar) findViewById(R.id.sign_up_progress);
autoTextName = (AutoCompleteTextView) findViewById(R.id.sign_up_username);
editTextPassword = (EditText) findViewById(R.id.sign_up_password);
editTextAge = (EditText) findViewById(R.id.sign_up_age);
editTextAddress = (EditText)findViewById(R.id.sign_up_address);
btnSignUp = (Button) findViewById(R.id.sign_up);
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!signupProgress.isShown()){
signupProgress.setVisibility(View.VISIBLE);
}
doSignUp();
}
});
}
/**
* 注册
*/
public void doSignUp() {
String username = autoTextName.getText().toString();
String password = editTextPassword.getText().toString();
String age = editTextAge.getText().toString();
String address = editTextAddress.getText().toString();
RetrofitFactory.getInstance()
.getService(UserService.class)
.toSign(username,password, Integer.parseInt(age),address)
.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Toast.makeText(SignUpActivity.this,"注册成功,去登录吧",Toast.LENGTH_SHORT).show();
if(signupProgress.isShown())
signupProgress.setVisibility(View.GONE);
//注册成功后跳转到登录界面
Intent intent = new Intent(SignUpActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
@Override
public void onFailure(Call call, Throwable t) {
if(signupProgress.isShown())
signupProgress.setVisibility(View.GONE);
Toast.makeText(SignUpActivity.this,"注册失败",Toast.LENGTH_SHORT).show();
}
});
}
}
刺激刺激~写完就走