package com.zenglb.framework.activity.access; import android.app.ActivityOptions; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.CardView; import android.text.TextUtils; import android.transition.Explode; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.zenglb.baselib.base.BaseActivity; import com.zenglb.baselib.rxUtils.RxObservableUtils; import com.zenglb.baselib.sharedpreferences.SharedPreferencesDao; import com.zenglb.framework.R; import com.zenglb.framework.config.SPKey; import com.zenglb.framework.http.core.HttpCall; import com.zenglb.framework.http.core.HttpCallBack; import com.zenglb.framework.http.param.LoginParams; import com.zenglb.framework.http.result.LoginResult; import com.zenglb.framework.navigation.MainActivityBottomNavi; import com.zenglb.framework.rxhttp.BaseObserver; import java.util.Arrays; /** * 1.登录的对话框在弹出键盘的时候希望能够向上移动 * 2.内存占用实在是太多太多了,太多太多了! * * @author zenglb */ public class LoginActivity extends BaseActivity { private EditText etUsername; private EditText etPassword; private Button btGo; private CardView cv; private FloatingActionButton fab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferencesDao.getInstance().saveData(SPKey.KEY_ACCESS_TOKEN, ""); } @Override protected int setLayoutId() { return R.layout.activity_login; } @Override protected void initViews() { etUsername = (EditText) findViewById(R.id.et_username); etPassword = (EditText) findViewById(R.id.et_password); btGo = (Button) findViewById(R.id.bt_go); cv = (CardView) findViewById(R.id.cv); fab = (FloatingActionButton) findViewById(R.id.fab); // fab.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // Toast.makeText(this, test, Toast.LENGTH_LONG).show(); // } // }); // // fab.setOnClickListener(V -> Toast.makeText(this, "lamada 测试", Toast.LENGTH_LONG).show()); fab.setOnClickListener(this); btGo.setOnClickListener(this); etUsername.setText(SharedPreferencesDao.getInstance().getData(SPKey.KEY_LAST_ACCOUNT, "", String.class)); etUsername.setText("18826562075"); etPassword.setText("zxcv1234"); } /** * Login ,普通的登录和使用Rxjava 的方式都可以 */ private void loginByRxJava2() { String userName = etUsername.getText().toString().trim(); String password = etPassword.getText().toString().trim(); if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(password)) { Toast.makeText(this, "请完整输入用户名和密码", Toast.LENGTH_SHORT).show(); return; } HttpCall.setToken(""); //1.需要改进,能否改进为链式写法 LoginParams loginParams = new LoginParams(); loginParams.setClient_id("5e96eac06151d0ce2dd9554d7ee167ce"); loginParams.setClient_secret("aCE34n89Y277n3829S7PcMN8qANF8Fh"); loginParams.setGrant_type("password"); loginParams.setUsername(userName); loginParams.setPassword(password); HttpCall.getApiService().goLoginByRxjavaObserver(loginParams) .compose(RxObservableUtils.applySchedulers()) .compose(bindToLifecycle()) //两个compose 能否合并起来,或者重写一个操作符 .subscribe(new BaseObserver<LoginResult>(mContext) { @Override public void onSuccess(LoginResult loginResult) { loginSuccess(loginResult); } // @Override // public void onFailure(int code, String message) { // super.onFailure(code, message); // } }); } /** * Login ,普通的登录和使用Rxjava 的方式都可以 */ private void loginByRetrofit() { String userName = etUsername.getText().toString().trim(); String password = etPassword.getText().toString().trim(); if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(password)) { Toast.makeText(this, "请完整输入用户名和密码", Toast.LENGTH_SHORT).show(); return; } HttpCall.setToken(""); LoginParams loginParams = new LoginParams(); loginParams.setClient_id("5e96eac06151d0ce2dd9554d7ee167ce"); loginParams.setClient_secret("aCE34n89Y277n3829S7PcMN8qANF8Fh"); loginParams.setGrant_type("password"); loginParams.setUsername(userName); loginParams.setPassword(password); //2.Generic Programming Techniques is the basis of Android develop HttpCall.getApiService().goLoginByRetrofit(loginParams) .enqueue(new HttpCallBack<LoginResult>(this) { @Override public void onSuccess(LoginResult loginResult) { loginSuccess(loginResult); } @Override public void onFailure(int code, String messageStr) { super.onFailure(code, messageStr); } }); } private void loginSuccess(LoginResult loginResult) { SharedPreferencesDao.getInstance().saveData(SPKey.KEY_ACCESS_TOKEN, "Bearer " + loginResult.getAccessToken()); SharedPreferencesDao.getInstance().saveData(SPKey.KEY_REFRESH_TOKEN, loginResult.getRefreshToken()); SharedPreferencesDao.getInstance().saveData(SPKey.KEY_LAST_ACCOUNT, etUsername.getText().toString().trim()); Intent i2 = new Intent(LoginActivity.this, MainActivityBottomNavi.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //Android 5.0 以下不能使用啊 Explode explode = new Explode(); explode.setDuration(300); getWindow().setExitTransition(explode); getWindow().setEnterTransition(explode); ActivityOptionsCompat oc2 = ActivityOptionsCompat.makeSceneTransitionAnimation(LoginActivity.this); startActivity(i2, oc2.toBundle()); } else { startActivity(i2); } LoginActivity.this.finish(); } public void onClick(View view) { switch (view.getId()) { case R.id.fab: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setExitTransition(null); getWindow().setEnterTransition(null); ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, fab, fab.getTransitionName()); startActivity(new Intent(this, RegisterActivity.class), options.toBundle()); } else { startActivity(new Intent(this, RegisterActivity.class)); } break; case R.id.bt_go: loginByRxJava2(); break; } } /** * 登录页面不允许返回,就是这样的流氓 * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //监控/拦截/屏蔽返回键 return true; } return super.onKeyDown(keyCode, event); } }