您的位置:首页 > 科技 > 能源 > 一对一专属定制方案_商城建设方案_seo最新技巧_口碑营销的概念

一对一专属定制方案_商城建设方案_seo最新技巧_口碑营销的概念

2024/12/23 5:06:08 来源:https://blog.csdn.net/jky_yihuangxing/article/details/142911602  浏览:    关键词:一对一专属定制方案_商城建设方案_seo最新技巧_口碑营销的概念
一对一专属定制方案_商城建设方案_seo最新技巧_口碑营销的概念

文章目录

    • 1. 涉及到技术点
    • 2. 服务端编写登录接口
    • 3. 编写登录UI界面
    • 4. 记住密码实现

1. 涉及到技术点

  1. 使用MySQL实现数据储存
  2. SharedPreferences首选项的使用
  3. LinearLayoutCompat线性布局的使用
  4. ImageView,TextView,EditText,Button,CheckBox基础控件的使用

2. 服务端编写登录接口

这里忽略如何在服务端编写登录接口,本项目是前后端分离实现,app端的数据交互都是调用服务端接口来实现数据交互

3. 编写登录UI界面

  1. activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><androidx.appcompat.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/my_light_primary"app:title="登录"app:titleTextColor="@color/white"><ImageViewandroid:id="@+id/btn_login_close"android:layout_width="50dp"android:layout_height="50dp"android:layout_gravity="right"android:padding="10dp"android:src="@drawable/baseline_close_24" /></androidx.appcompat.widget.Toolbar><androidx.cardview.widget.CardViewandroid:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center_horizontal"android:layout_marginTop="50dp"app:cardCornerRadius="50dp"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:src="@mipmap/img_logo" /></androidx.cardview.widget.CardView><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="20dp"android:gravity="center"android:text="登录"android:textColor="#333"android:textSize="20sp"android:textStyle="bold" /><androidx.appcompat.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="26dp"android:orientation="vertical"><androidx.appcompat.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="50dp"android:background="@drawable/login_et_bg"android:paddingLeft="10dp"android:paddingRight="10dp"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:src="@drawable/baseline_account_box_24" /><EditTextandroid:id="@+id/et_username"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:background="@null"android:hint="请输入用户名"android:textSize="14sp" /></androidx.appcompat.widget.LinearLayoutCompat><androidx.appcompat.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="10dp"android:background="@drawable/login_et_bg"android:paddingLeft="10dp"android:paddingRight="10dp"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:src="@drawable/baseline_https_24" /><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:background="@null"android:hint="请输入密码"android:inputType="textPassword"android:textSize="14sp" /></androidx.appcompat.widget.LinearLayoutCompat><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><CheckBoxandroid:id="@+id/checkbox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:text="记住密码" /><TextViewandroid:id="@+id/register"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_gravity="right"android:layout_marginTop="10dp"android:text="还未注册?"android:textColor="@color/my_light_primary" /></RelativeLayout><Buttonandroid:id="@+id/login"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="20dp"android:text="登录" /></androidx.appcompat.widget.LinearLayoutCompat></androidx.appcompat.widget.LinearLayoutCompat></RelativeLayout>

运行效果图

在这里插入图片描述

  1. LoginActivity.java 具体逻辑实现

a. 初始化控件

        //初始化控件et_username = findViewById(R.id.et_username);et_password = findViewById(R.id.et_password);checkbox = findViewById(R.id.checkbox);btn_login_close = findViewById(R.id.btn_login_close);

b. 设置登录按钮的点击事件

 //登录点击事件findViewById(R.id.login).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String username = et_username.getText().toString();String password = et_password.getText().toString();if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {showToast("请输入用户名和密码");} else {login(username, password);}}});

c. 调用接口获取登录信息

    /*** 登录*/private void login(String username, String password) {OkGo.<String>get(ApiConstants.LOGIN_URL).params("username", username).params("password", password).execute(new HttpStringCallback(mBaseActivity) {@Overrideprotected void onSuccess(String msg, String response) {showToast(msg);UserInfo userInfo = GsonUtils.parseJson(response, UserInfo.class);//保存用户名和密码SharedPreferences.Editor edit = mSharedPreferences.edit();edit.putBoolean("is_login", is_login);edit.putString("username", username);edit.putString("password", password);//这句话不能少edit.commit();UserInfo.setUserInfo(userInfo);finish();}@Overrideprotected void onError(String response) {showToast(response);}});}

温馨提示:调用接口API,可以使用开源网络库OkHttp来实现,本项目中使用OkGo开源库来实现,因为OkGo封装了OkHttp,简化了OkHttp的使用。OkGo可通过链式调用的形式,可以很简单的实现接口API数据的获取。

4. 记住密码实现

记住密码使用SharedPreferences来实现,实现思路: 用到SharedPreferences就需要先实例化,然后在调用登录接口成功后,保存用户名,密码和 是否记住密码状态,最后根据否记住密码状态来判断显示在控件上面

  1. 初始化SharedPreferences
        //获取mSharedPreferences实例mSharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
  1. 在登录成功后,保存用户名和密码
       //保存用户名和密码SharedPreferences.Editor edit = mSharedPreferences.edit();edit.putBoolean("is_login", is_login);edit.putString("username", username);edit.putString("password", password);//这句话不能少edit.commit();
  1. 根据否记住密码状态来判断显示在控件上面
        //是否勾选了记住密码is_login = mSharedPreferences.getBoolean("is_login", false);if (is_login) {String username = mSharedPreferences.getString("username", null);String password = mSharedPreferences.getString("password", null);et_username.setText(username);et_password.setText(password);checkbox.setChecked(true);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com