码迷,mamicode.com
首页 > 其他好文 > 详细

login

时间:2016-08-01 12:01:22      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

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>

 

login

标签:

原文地址:http://www.cnblogs.com/jiang2538406936/p/5724851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!