zoukankan      html  css  js  c++  java
  • 网络记事本第二阶段第三天

    今天我进行登录界面

    主要界面的搭建,可以实现登陆功能

    package com.example.myapplication;
    
    import android.animation.Animator;
    import android.animation.AnimatorListenerAdapter;
    import android.animation.ValueAnimator;
    import android.content.Intent;
    import android.graphics.Rect;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.Editable;
    import android.text.TextUtils;
    import android.text.TextWatcher;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewTreeObserver;
    import android.view.animation.DecelerateInterpolator;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener, View.OnFocusChangeListener, ViewTreeObserver.OnGlobalLayoutListener, TextWatcher {
    
        private String TAG = "ifu25";
    
        private ImageButton mIbNavigationBack;
        private LinearLayout mLlLoginPull;
        private View mLlLoginLayer;
        private LinearLayout mLlLoginOptions;
        private EditText mEtLoginUsername;
        private EditText mEtLoginPwd;
        private LinearLayout mLlLoginUsername;
        private ImageView mIvLoginUsernameDel;
        private Button mBtLoginSubmit;
        private LinearLayout mLlLoginPwd;
        private ImageView mIvLoginPwdDel;
        private ImageView mIvLoginLogo;
        private LinearLayout mLayBackBar;
        private TextView mTvLoginForgetPwd;
        private Button mBtLoginRegister;
    
        //全局Toast
        private Toast mToast;
    
        private int mLogoHeight;
        private int mLogoWidth;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_login);
    
            initView();
        }
    
        //初始化视图
        private void initView() {
            //登录层、下拉层、其它登录方式层
            mLlLoginLayer = findViewById(R.id.ll_login_layer);
            mLlLoginPull = findViewById(R.id.ll_login_pull);
            mLlLoginOptions = findViewById(R.id.ll_login_options);
    
            //导航栏+返回按钮
            mLayBackBar = findViewById(R.id.ly_retrieve_bar);
            mIbNavigationBack = findViewById(R.id.ib_navigation_back);
    
            //logo
            mIvLoginLogo = findViewById(R.id.iv_login_logo);
    
            //username
            mLlLoginUsername = findViewById(R.id.ll_login_username);
            mEtLoginUsername = findViewById(R.id.et_login_username);
            mIvLoginUsernameDel = findViewById(R.id.iv_login_username_del);
    
            //passwd
            mLlLoginPwd = findViewById(R.id.ll_login_pwd);
            mEtLoginPwd = findViewById(R.id.et_login_pwd);
            mIvLoginPwdDel = findViewById(R.id.iv_login_pwd_del);
    
            //提交、注册
            mBtLoginSubmit = findViewById(R.id.bt_login_submit);
            mBtLoginRegister = findViewById(R.id.bt_login_register);
    
            //忘记密码
            mTvLoginForgetPwd = findViewById(R.id.tv_login_forget_pwd);
            mTvLoginForgetPwd.setOnClickListener(this);
    
            //注册点击事件
            mLlLoginPull.setOnClickListener(this);
            mIbNavigationBack.setOnClickListener(this);
            mEtLoginUsername.setOnClickListener(this);
            mIvLoginUsernameDel.setOnClickListener(this);
            mBtLoginSubmit.setOnClickListener(this);
            mBtLoginRegister.setOnClickListener(this);
            mEtLoginPwd.setOnClickListener(this);
            mIvLoginPwdDel.setOnClickListener(this);
            findViewById(R.id.ib_login_weibo).setOnClickListener(this);
            findViewById(R.id.ib_login_qq).setOnClickListener(this);
            findViewById(R.id.ib_login_wx).setOnClickListener(this);
    
            //注册其它事件
            mLayBackBar.getViewTreeObserver().addOnGlobalLayoutListener(this);
            mEtLoginUsername.setOnFocusChangeListener(this);
            mEtLoginUsername.addTextChangedListener(this);
            mEtLoginPwd.setOnFocusChangeListener(this);
            mEtLoginPwd.addTextChangedListener(this);
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.ib_navigation_back:
                    //返回
                    finish();
                    break;
                case R.id.et_login_username:
                    mEtLoginPwd.clearFocus();
                    mEtLoginUsername.setFocusableInTouchMode(true);
                    mEtLoginUsername.requestFocus();
                    break;
                case R.id.et_login_pwd:
                    mEtLoginUsername.clearFocus();
                    mEtLoginPwd.setFocusableInTouchMode(true);
                    mEtLoginPwd.requestFocus();
                    break;
                case R.id.iv_login_username_del:
                    //清空用户名
                    mEtLoginUsername.setText(null);
                    break;
                case R.id.iv_login_pwd_del:
                    //清空密码
                    mEtLoginPwd.setText(null);
                    break;
                case R.id.bt_login_submit:
                    //登录
                    loginRequest();
                    break;
                case R.id.bt_login_register:
                    //注册
                    startActivity(new Intent(MainActivity.this, RegisterActivity.class));
                    break;
                case R.id.tv_login_forget_pwd:
                    //忘记密码
                    startActivity(new Intent(MainActivity.this, ForgetPwdActivity.class));
                    break;
                case R.id.ll_login_layer:
                case R.id.ll_login_pull:
                    mLlLoginPull.animate().cancel();
                    mLlLoginLayer.animate().cancel();
    
                    int height = mLlLoginOptions.getHeight();
                    float progress = (mLlLoginLayer.getTag() != null && mLlLoginLayer.getTag() instanceof Float) ? (float) mLlLoginLayer.getTag() : 1;
                    int time = (int) (360 * progress);
    
                    if (mLlLoginPull.getTag() != null) {
                        mLlLoginPull.setTag(null);
                        glide(height, progress, time);
                    } else {
                        mLlLoginPull.setTag(true);
                        upGlide(height, progress, time);
                    }
                    break;
                case R.id.ib_login_weibo:
                    weiboLogin();
                    break;
                case R.id.ib_login_qq:
                    qqLogin();
                    break;
                case R.id.ib_login_wx:
                    weixinLogin();
                    break;
                default:
                    break;
            }
        }

    参考了https://blog.csdn.net/ifu25/article/details/83182334

    可以实现登陆界面

  • 相关阅读:
    爬虫1 爬虫介绍, requests模块, 代理(正向代理,反向代理), 爬梨视频, 自动登录网站, HTTP协议复习, 伪静态概念, 301和302状态码区别, http版本0.9 1.1 和2.0的区别
    数据结构 线性结构(数组[列表] ,链表 单链表的增删改查**, 线性结构的应用 队列 栈[函数的调用**]),非线性结构 树
    算法 时间复杂度, 空间复杂度, 冒泡排序**, 选择排序, 插入算法, 快速排序**, 希尔算法,计数排序, 二分法查找**
    量化分析 在线量化分析网站
    数据分析3 matplotlib绘图, 折线图(刻度与范围,标题,注释), 曲线图例, 过滤报警信息, 柱状图, 曲线图, 饼图
    [编织消息框架][netty源码分析]6 ChannelPipeline 实现类DefaultChannelPipeline职责与实现
    [编织消息框架][netty源码分析]5 EventLoopGroup 实现类NioEventLoopGroup职责与实现
    [编织消息框架][netty源码分析]4 EventLoop 实现类NioEventLoop职责与实现
    编程之路
    [编织消息框架][netty源码分析]3 EventLoop 实现类SingleThreadEventLoop职责与实现
  • 原文地址:https://www.cnblogs.com/520520520zl/p/12984230.html
Copyright © 2011-2022 走看看