版权声明:叮叮叮!!!! https://blog.csdn.net/Xuexx_520/article/details/83983010
登录页面,包括自动登录,记住密码
public class MainActivity extends AppCompatActivity implements View.OnClickListener, LoginPresenter.MyListener {
private EditText ed_tel;
private EditText ed_pass;
private CheckBox ck_jz;
private CheckBox ck_zd;
private Button login;
private LoginPresenter mLoginPresenter;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private LoginModel loginModel;
private String username;
private String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//自定义控件
initView();
//当选中自动登录时,自动勾选记住密码
ck_zd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(ck_zd.isChecked()){
ck_jz.setChecked(true);
}
}
});
mLoginPresenter=new LoginPresenter(this);
loginModel=new LoginModel();
//获得sp数据
mSharedPreferences=getSharedPreferences("xxx",MODE_PRIVATE);
boolean jz=mSharedPreferences.getBoolean("jz",false);
boolean zd=mSharedPreferences.getBoolean("zd",false);
String tel=mSharedPreferences.getString("tel","");
String pass=mSharedPreferences.getString("pass","");
//是否点击记住密码
mLoginPresenter.isJz(jz,tel,pass);
//是否点击自动登录
mLoginPresenter.isZd(zd);
}
/*
自定义控件
*/
private void initView() {
ed_tel = (EditText) findViewById(R.id.ed_tel);
ed_pass = (EditText) findViewById(R.id.ed_pass);
ck_jz = (CheckBox) findViewById(R.id.ck_jz);
ck_zd = (CheckBox) findViewById(R.id.ck_zd);
login = (Button) findViewById(R.id.login);
username = ed_tel.getText().toString();
password = ed_pass.getText().toString();
login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login:
username = ed_tel.getText().toString();
password = ed_pass.getText().toString();
new AsyncTask<String,Void,Login>(){
@Override
protected Login doInBackground(String... strings) {
loginModel = new LoginModel();
//获得数据
String textString= loginModel.login(strings[0]);
Login login=new Gson().fromJson(textString,Login.class);
return login;
}
@Override
protected void onPostExecute(Login login) {
super.onPostExecute(login);
//判断登录成功失败
mLoginPresenter.checklogin(login);
}
}.execute("http://www.xieast.com/api/user/login.php?username="+ username +"&password="+ password);
break;
}
}
/*
登录成功
*/
@Override
public void loginSuccess() {
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
//判断是否记住密码
if(ck_jz.isChecked()){
mEditor=mSharedPreferences.edit();
loginModel.setJz(mEditor,username,password);
} else {
mEditor=mSharedPreferences.edit();
loginModel.cancelJz(mEditor,username,password);
}
//判断是否自动登录
if(ck_zd.isChecked()){
mEditor=mSharedPreferences.edit();
loginModel.setZd(mEditor);
}
startActivity(new Intent(MainActivity.this,SuccessActivity.class));
finish();
}
/*
登录失败
*/
@Override
public void loginFailed(String msg) {
Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
}
/*
记住密码时设置文本
*/
@Override
public void jzText(String tel,String pass) {
ed_tel.setText(tel);
ed_pass.setText(pass);
ck_jz.setChecked(true);
}
@Override
public void cancelText(String tel,String pass) {
ed_tel.setText(tel);
ed_pass.setText(pass);
ck_jz.setChecked(false);
}
@Override
public void zd() {
ck_zd.setChecked(true);
startActivity(new Intent(MainActivity.this,SuccessActivity.class));
finish();
}
/*
自动登录
*/
// @Override
// public void zd() {
// startActivity(new Intent(MainActivity.this,SuccessActivity.class));
// }
}
登录的Presenter
public class LoginPresenter {
public MyListener mMyListener;
public LoginPresenter(MyListener myListener) {
mMyListener = myListener;
}
/*
判断登录是否成功
*/
public void checklogin(Login login) {
if(login.getCode()==100){
mMyListener.loginSuccess();
} else {
mMyListener.loginFailed(login.getMsg());
}
}
/*
是否记住密码
*/
public void isJz(boolean jz, String tel, String pass) {
if(jz==true){
mMyListener.jzText(tel,pass);
} else {
mMyListener.cancelText(tel,pass);
}
}
/*
是否点击自动登录
*/
public void isZd(boolean zd) {
if(zd){
mMyListener.zd();
}
}
public interface MyListener{
void loginSuccess();
void loginFailed(String msg);
void jzText(String tel, String pass);
void cancelText(String tel, String pass);
void zd();
}
}
我的名片
public class MingFragment extends Fragment implements View.OnClickListener {
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Bitmap mBitmap;
private TextView username;
private ImageView QRcode;
private Button back;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_ming, container, false);
initView(view);
mSharedPreferences = getActivity().getSharedPreferences("xxx", getActivity().MODE_PRIVATE);
//获得传过来的用户名
String tel = mSharedPreferences.getString("tel", "");
mBitmap = CodeUtils.createImage(tel, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
QRcode.setImageBitmap(mBitmap);//设置图片
username.setText(tel);//设置传过来的用户名
return view;
}
private void initView(View view) {
username = (TextView) view.findViewById(R.id.username);
QRcode = (ImageView) view.findViewById(R.id.QRcode);
back = (Button) view.findViewById(R.id.back);
back.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.back:
//退到主界面
getActivity().finish();
break;
}
}
}