标签:
package com.ndkj.jsxt.module.login.activity; import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; import android.text.Selection; import android.text.TextUtils; import android.text.TextWatcher; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.alibaba.fastjson.JSON; import com.android.volley.VolleyError; import com.bigkoo.alertview.AlertView; import com.easemob.EMCallBack; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMGroupManager; import com.ndkj.jsxt.R; import com.ndkj.jsxt.common.utils.AlarmUtils; import com.ndkj.jsxt.module.main.activity.MainActivity; import com.ndkj.jsxt.chat.chatuidemo.DemoHelper; import com.ndkj.jsxt.common.BaseActivity; import com.ndkj.jsxt.common.adapter.http.BaseJsonHttpResponseAdapter; import com.ndkj.jsxt.common.callbackinf.HttpPostHandler; import com.ndkj.jsxt.common.entity.HttpResponseBean; import com.ndkj.jsxt.common.utils.AsyncClientUtils; import com.ndkj.jsxt.common.utils.MD5Utils; import com.ndkj.jsxt.common.utils.ToastUtils; import com.ndkj.jsxt.common.utils.TokenUtils; import com.ndkj.jsxt.common.utils.Utils; import com.ndkj.jsxt.constants.AppConstants; import com.easemob.easeui.utils.HttpConstants; import com.ndkj.jsxt.module.login.bean.AccountInfoBean; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import cn.jpush.android.api.JPushInterface; /** * Created by Administrator on 2015/10/27. */ public class LoginActivity extends BaseActivity { private Button submitBtn;//登录按钮 //用户名,密码,验证码 private EditText accout, password, validateNum; private LinearLayout getPwdBtn;//找回密码的按钮 private CheckBox remPwd;//记住密码 private boolean isRemPwd = false; private AlertView alertView; private String pwd; private AlertView loginErrorView; public static final String LOGINTYPE = "logintype"; public static final String LOGINTYPE_CONFLICT = "logintype_conflict"; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { ToastUtils.show(context, "登录失败"); alertView.dismiss(); // loginErrorView.show(); } }; private ImageView clearBtn; @Override protected int getLayoutId() { supportRequestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); return R.layout.activity_login; } @Override protected void initData(Bundle savedInstanceState) { loginErrorView = new AlertView(null, "账号或密码不正确", "重新输入", null, null, LoginActivity.this, AlertView.Style.Alert, null); loginErrorView.setCancelable(true); accout.setText(sharedPreferences.getString("accountName", "")); if (Utils.isNotEmpty(accout.getText().toString())) { Selection.setSelection(accout.getText(), accout.getText().length()); clearBtn.setVisibility(View.VISIBLE); } String loginType = getIntent().getStringExtra(LOGINTYPE); if (Utils.isNotEmpty(loginType)) { if (loginType.equals(LOGINTYPE_CONFLICT)) { sharedPreferences.edit().putBoolean("hasLogin", false).commit(); ToastUtils.show(context, "您的账号在另一个设备上登录了,为了您的信息安全请重新登录,并修改密码。", Toast.LENGTH_LONG); } } } @Override protected void bindListener() { accout.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (Utils.isNotEmpty(s.toString())) { clearBtn.setVisibility(View.VISIBLE); } else { clearBtn.setVisibility(View.GONE); } } }); clearBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { accout.setText(""); } }); submitBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final LinearLayout container = new LinearLayout(context); container.setOrientation(LinearLayout.VERTICAL); container.setGravity(Gravity.CENTER); ProgressBar progressBar = new ProgressBar(context); container.addView(progressBar); TextView textView = new TextView(context); textView.setGravity(Gravity.CENTER); textView.setText("登陆中,请稍后..."); textView.setTextColor(Color.BLACK); container.addView(textView); alertView = new AlertView(null, null, null, null, null, context, AlertView.Style.Alert, null); alertView.addExtView(container); if (validateLogin()) { alertView.show(); AsyncClientUtils.stringPost(params, HttpConstants.LOGIN, new BaseJsonHttpResponseAdapter(context), new HttpPostHandler() { @Override public void postSuccessful(HttpResponseBean httpResponseBean) { try { if (httpResponseBean.getFlag().equals("1")) { SharedPreferences.Editor edit = sharedPreferences.edit(); edit.putString("UserTypeCode", httpResponseBean.getUserTypeCode()); edit.putString("AccountID", httpResponseBean.getAccountId()); edit.putString("EmAccountName", httpResponseBean.getAccountName()); edit.putString("Token", AppConstants.token); edit.putString("Uuid", httpResponseBean.getUuid()); AppConstants.isFirstLogin = httpResponseBean.getIsFirstLogin(); AppConstants.account = (String) params.get("accountName"); AppConstants.accountId = httpResponseBean.getAccountId(); edit.commit(); loginIM(); } else { handler.sendEmptyMessage(1); ToastUtils.show(context, httpResponseBean.getMsg()); } } catch (Exception e) { handler.sendEmptyMessage(1); ToastUtils.show(context, "登录失败,请重试..."); e.printStackTrace(); } } @Override public void postError(VolleyError error) { // ToastUtils.show(context, ""); handler.sendEmptyMessage(1); } }); } } }); //获得密码按钮的点击事件 getPwdBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(GetPwdActivity.class); } }); //记住密码 remPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { isRemPwd = isChecked; } }); remPwd.setChecked(true); } //校验数据格式 private boolean validateLogin() { String logaccount = accout.getText().toString().trim(); pwd = password.getText().toString().trim(); if (TextUtils.isEmpty(logaccount)) { accout.startAnimation(emptyAnimation); return false; } if (TextUtils.isEmpty(pwd)) { password.startAnimation(emptyAnimation); return false; } String s = MD5Utils.encodeMD5(pwd); if (isRemPwd) { sharedPreferences.edit().putString("Pwd", s).commit(); } else { sharedPreferences.edit().putString("Pwd", "").commit(); } sharedPreferences.edit().putString("accountName", logaccount).commit(); sharedPreferences.edit().putBoolean("hasLogin", isRemPwd); params.put("accountName", logaccount); params.put("password", s); String date = Utils.getDate(); String token = TokenUtils.getToken(date, this); AppConstants.token = token; params.put("signature", TokenUtils.getSignature(logaccount, date, token)); params.put("timeStamp", date + ""); params.put("token", token); params.put("jpushCode", JPushInterface.getRegistrationID(context)); System.out.println(params.toString()); return true; } //获得控件 @Override protected void initView() { submitBtn = (Button) this.findViewById(R.id.login_submit_bt); accout = (EditText) this.findViewById(R.id.login_account_et); password = (EditText) this.findViewById(R.id.login_pwd_et); getPwdBtn = (LinearLayout) this.findViewById(R.id.login_getpwd_bt); remPwd = (CheckBox) findViewById(R.id.login_rempwd_rb); clearBtn = (ImageView) findViewById(R.id.login_clear_input); } private void loginIM() { // 调用sdk登陆方法登陆聊天服务器 EMChatManager.getInstance().login(sharedPreferences.getString("EmAccountName", ""), params.get("password").toString().toUpperCase(), new EMCallBack() { @Override public void onSuccess() { try { DemoHelper.getInstance().init(context); } catch (Exception e) { e.printStackTrace(); } // 登陆成功,保存用户名 DemoHelper.getInstance().setCurrentUserName(sharedPreferences.getString("EmAccountName", "")); // 注册群组和联系人监听 DemoHelper.getInstance().registerGroupAndContactListener(); //注册全局监听器 // ** 第一次登录或者之前logout后再登录,加载所有本地群和回话 // ** manually load all local groups and EMGroupManager.getInstance().loadAllGroups(); EMChatManager.getInstance().loadAllConversations(); DemoHelper.getInstance().asyncFetchContactsFromServer(null); // 更新当前用户的nickname 此方法的作用是在ios离线推送时能够显示用户nick // boolean updatenick = EMChatManager.getInstance().updateCurrentUserNick( // DemoApplication.currentUserNick.trim()); // if (!updatenick) { // Log.e("aaa", "update current user nick fail"); // } //异步获取当前用户的昵称和头像(从自己服务器获取,demo使用的一个第三方服务) AppConstants.NOTIFYCATION_REQUESTCODE = sharedPreferences.getInt(AppConstants.NOTIFYCATION_ID_NAME, 0); getAccountInfo(); //判断是否设置了提醒,如果没有设置提醒就去添加提醒 Calendar calendar = Calendar.getInstance(); if (!sharedPreferences.getBoolean(AppConstants.SIGN_NOTIFYDATE_HASSET, false)) { String signDate = sharedPreferences.getString(AppConstants.SIGN_NOTIFYDATE, ""); if (Utils.isNotEmpty(signDate)) { AlarmUtils.cancleSignNotify(sharedPreferences.getInt(AlarmUtils.ALARM_NOTIFYCATION_SIGN_DNOTIFY_ID, 0)); AlarmUtils.addSignNotifyCation(calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH) + " " + signDate, "签到的时间就要到了,不要忘记签到哦...", "签到提醒", AlarmUtils.ALARM_NOTIFYCATION_SignType_SIGN); } } if (!sharedPreferences.getBoolean(AppConstants.SIGN_OUT_NOTIFYDATE_HASSET, false)) { String signDate = sharedPreferences.getString(AppConstants.SIGN_OUT_NOTIFYDATE, ""); if (Utils.isNotEmpty(signDate)) { AlarmUtils.cancleSignNotify(sharedPreferences.getInt(AlarmUtils.ALARM_NOTIFYCATION_SIGN_DNOTIFY_ID, 0)); AlarmUtils.addSignNotifyCation(calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH) + " " + signDate, "签退的时间就要到了,不要忘记签到哦...", "签到提醒", AlarmUtils.ALARM_NOTIFYCATION_SignType_SIGNOUT); } } } @Override public void onProgress(int progress, String status) { } @Override public void onError(final int code, final String message) { handler.sendEmptyMessage(1); } }); } private void getAccountInfo() { Map<String, Object> map = new HashMap<>(); initParams(map); map.put("action", "getTrainSysUsersData"); AsyncClientUtils.stringPost(map, HttpConstants.GET_ACCOUNTINFO, new BaseJsonHttpResponseAdapter(context), new HttpPostHandler() { @Override public void postSuccessful(HttpResponseBean httpResponseBean) { String resStr = httpResponseBean.getRows(); if (resStr != null) { resStr = resStr.substring(1, resStr.length() - 1); AccountInfoBean accountInfoBean = null; try { accountInfoBean = JSON.parseObject(resStr, AccountInfoBean.class); AppConstants.ACCOUNT_INFO_BEAN = accountInfoBean; // DemoHelper.getInstance().getUserProfileManager().setCurrentUserNick(accountInfoBean.getJSON_username()); // DemoHelper.getInstance().getUserProfileManager().setCurrentUserAvatar(accountInfoBean.getJSON_emphotoaddress()); DemoHelper.getInstance().getUserProfileManager().asyncGetCurrentUserInfo(); sharedPreferences.edit().putBoolean("hasLogin", true).commit(); } catch (Exception e) { sharedPreferences.edit().putBoolean("hasLogin", false).commit(); e.printStackTrace(); } Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { alertView.dismiss(); } }); startActivity(MainActivity.class); finish(); } }, 2000); } else { handler.sendEmptyMessage(1); } } @Override public void postError(VolleyError error) { handler.sendEmptyMessage(1); // ToastUtils.show(context, "服务器出错了..."); } }); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/login_bg" android:orientation="vertical"> <ScrollView android:fillViewport="true" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="@dimen/m6" android:src="@mipmap/login_logo" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="@dimen/m1" android:text="优训竞技体育" android:textColor="@android:color/white" android:textSize="@dimen/t8" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/m3" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/he1" android:layout_marginLeft="@dimen/m6" android:layout_marginRight="@dimen/m6" android:layout_marginTop="@dimen/m2" android:background="@drawable/login_inputbg" android:gravity="center" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/m4" android:src="@mipmap/user" /> <EditText android:id="@+id/login_account_et" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="@dimen/m2" android:background="@null" android:gravity="center_vertical" android:hint="请输入账号" android:maxLength="32" android:paddingRight="@dimen/m2" android:singleLine="true" android:textColor="@android:color/white" android:textColorHint="@android:color/white" android:textSize="@dimen/t5" /> <ImageView android:visibility="gone" android:id="@+id/login_clear_input" android:scaleType="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/clear_input" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/he1" android:layout_marginLeft="@dimen/m6" android:layout_marginRight="@dimen/m6" android:layout_marginTop="@dimen/m2" android:background="@drawable/login_inputbg" android:gravity="center" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/m4" android:src="@mipmap/password" /> <EditText android:id="@+id/login_pwd_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="@dimen/m2" android:background="@null" android:gravity="center_vertical" android:hint="请输入密码" android:inputType="textPassword" android:maxLength="32" android:paddingRight="@dimen/m2" android:singleLine="true" android:textColor="@android:color/white" android:textColorHint="@android:color/white" android:textSize="@dimen/t5" /> </LinearLayout> <Button android:id="@+id/login_submit_bt" android:layout_width="fill_parent" android:layout_height="@dimen/he1" android:layout_marginLeft="@dimen/m6" android:layout_marginRight="@dimen/m6" android:layout_marginTop="@dimen/m2" android:background="@drawable/shap_login_btn" android:text="登 录" android:textColor="@color/login_btn_text_color" android:textSize="@dimen/t5" /> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <CheckBox android:id="@+id/login_rempwd_rb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/m2" android:layout_marginLeft="@dimen/m3" android:button="@null" android:drawableLeft="@drawable/selector_login_remberpwd" android:drawablePadding="@dimen/m1" android:paddingLeft="0dp" android:text="记住我" android:textColor="@android:color/white" android:textSize="@dimen/t5" /> <LinearLayout android:id="@+id/login_getpwd_bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="@dimen/m2" android:layout_marginRight="@dimen/m3" android:clickable="true" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/forgetpassword" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/m1" android:text="忘记密码" android:textColor="@android:color/white" android:textSize="@dimen/t5" /> </LinearLayout> </RelativeLayout> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout>
标签:
原文地址:http://www.cnblogs.com/jiang2538406936/p/5724851.html