实验项目:

QQ登录界面

实验地点:

躬行楼718

实验时间:

2018.10.13

一、实验目的:

1.掌握Android中布局的概念和用法

2.熟练掌握Android中Button、ImageView、EditText以及Toast的基本使用。

3. 熟练掌握偏好设置的用法

二、实验内容与要求

1.完成如下所示的QQ登录界面

2.功能需求:

2.1 界面需要做简单屏幕适配(weight属性)

2.2 用户名明文显示且只能是数字

2.3 密码必须是密文显示,字符数字都可以。

2.4 用户名或密码空,点击登录提示"用户名密码不能为空"

2.5 用户名和密码为指定时,点击按钮提示登录成功。

2.6 登录成功后,将用户名和密码保存在偏好设置中,

2.7 退出QQ再次打开,记住用户名密码并显示出来

三、实验步骤和结果:

用户名是123,密码是password

输入验证成功后即可显示登陆成功提示,然后保存到偏好设置中,以后开启用户名和密码就会显示在文本框内

main_activity.xml:

<android.support.constraint.ConstraintLayout 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"

tools:context=".MainActivity">

<LinearLayout xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/background_gradient"

android:orientation="vertical">

<ImageView

android:id="@+id/imageView1"

android:layout_width="160dp"

android:layout_height="0dp"

android:layout_gravity="center_horizontal"

android:layout_marginTop="10dp"

android:layout_marginBottom="5dp"

android:layout_weight="1"

android:src="@drawable/logo" />

<LinearLayout

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:orientation="vertical">

<EditText

android:id="@+id/username"

android:layout_width="match_parent"

android:layout_height="40dp"

android:layout_below="@id/imageView1"

android:layout_marginTop="5dp"

android:background="#ffffff"

android:hint="QQ/手机号"

android:inputType="number"

android:paddingLeft="12dp"

android:textColor="#000000" />

<EditText

android:id="@+id/pwd"

android:layout_width="match_parent"

android:layout_height="40dp"

android:layout_below="@id/username"

android:layout_marginTop="5dp"

android:background="#ffffff"

android:hint="密码"

android:inputType="textPassword"

android:paddingLeft="12dp"

android:textColor="#000000" />

<Button

android:id="@+id/login"

android:layout_width="match_parent"

android:layout_height="40dp"

android:layout_below="@id/pwd"

android:layout_marginLeft="20dp"

android:layout_marginTop="20dp"

android:layout_marginRight="20dp"

android:background="@drawable/shape"

android:gravity="center"

android:text="登录"

android:textColor="#F9FAFB" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:padding="10dp"

android:gravity="bottom">

<TextView

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center"

android:text="无法登录"

android:textColor="#0EB1EF" />

<TextView

android:id="@+id/textView3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="right"

android:text="新用户"

android:textColor="#0EB1EF" />

</LinearLayout>

</LinearLayout>

</android.support.constraint.ConstraintLayout>

MainActivity.java主要代码:

package com.lgqchinese.homework;

import …

public class MainActivity extends AppCompatActivity {

private SharedPreferences sp;

private SharedPreferences.Editor editor;

private EditText userEdit;

private EditText passEdit;

private Button login;

String userNameValue;

String passwordValue;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

viewInfo();

/*//隐藏title

if (getSupportActionBar() != null){

getSupportActionBar().hide();

}*/

sp = getSharedPreferences("userInfo", 0);

String name = sp.getString("USER_NAME", "");

String pass = sp.getString("PASSWORD", "");

userEdit.setText(name);

passEdit.setText(pass);

login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

userNameValue = userEdit.getText().toString();

passwordValue = passEdit.getText().toString();

//用户名或密码空,点击登录提示"用户名密码不能为空"

if(userNameValue.equals("")||passwordValue.equals("")){

Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();

}else {

if (userNameValue.equals("123")&&passwordValue.equals("password")){

//用户名和密码为指定时,点击按钮提示登录成功。

Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();

// 登录成功后,将用户名和密码保存在偏好设置中

SharedPreferences.Editor editor = sp.edit();

//保存用户名和密码

editor.putString("USER_NAME", userNameValue);

editor.putString("PASSWORD", passwordValue);

editor.commit();

}

}

}

});

}

private void viewInfo() {

userEdit = (EditText) findViewById(R.id.username);

passEdit = (EditText) findViewById(R.id.pwd);

login = (Button) findViewById(R.id.login);

}

}

四、实验总结:

通过实验主要学习sharedpreferences类,逐渐理解其理,掌握使用方法。理解源码,以便更好地掌握。

android实现QQ登录界面(大学作业一)的更多相关文章

  1. Android之QQ登录界面

    首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得 ...

  2. Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy

    原文:Android菜鸟的成长笔记(3)--给QQ登录界面说So Easy 上一篇:Android菜鸟的成长笔记(2)--第一个Android应用 我们前面已经做了第一个Android应用程序,虽然有 ...

  3. [转]Android:布局实例之模仿QQ登录界面

    Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...

  4. QQ登录界面布局

    简单的qq登录界面布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln ...

  5. 界面编程模仿篇(QQ登录界面逼真篇)

    写了好多天的爬虫,偷空前前后后用了两天的时间(排除吃饭睡觉)写完了这个QQ登录界面,看起来还凑和着吧,如果是的大神的,莫见笑,纯属业余作品,废话先不多说,截图如下,其中第二幅图片中的红色方框部份有待完 ...

  6. 零基础~仿qq登录界面

    html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  7. WPF开发实例——仿QQ登录界面

    原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...

  8. JavaSwing仿QQ登录界面,注释完善,适合新手学习

    使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...

  9. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  10. 编写Java程序,使用Swing布局管理器和常用控件,实现仿QQ登录界面

    返回本章节 返回作业目录 需求说明: 使用Swing布局管理器和常用控件,实现仿QQ登录界面 实现思路: 创建登录界面的类QQLogin,该类继承父类JFrame,在该类中创建无参数的构造方法,在构造 ...

随机推荐

  1. Java 与 LLM 大模型融合的技术革命:JBoltAI 如何重构企业级 AI 开发范式

    Java 与 LLM 大模型融合的技术革命:JBoltAI 如何重构企业级 AI 开发范式 一.Java 技术栈的智能化转型挑战 随着 LLM(大语言模型)技术的突破,全球超过 900 万家 Java ...

  2. 根据二叉树的前序和中序构建树,并按层次输出(C++)vector存树

    L2-006 树的遍历 #include <bits/stdc++.h> #define int long long using namespace std; #define endl ' ...

  3. mybatis的模糊查询的实现方式

    一.比较灵活 1:xml的配置 <select id="selectUserByUsername1" parameterType="string" res ...

  4. 在AI大爆发的背景下,企业管理软件有什么冲击

    今天与同行开会提到在AI大爆发的背景下,未来企业管理软件究竟有什么冲击? 我和同事对此问题进行了探讨,一些拙见,与大家分享.先直接说观点:在未来的5到10年,制造业的管理软件市场将几乎消失.下面我来聊 ...

  5. chatGPT:清理 master 分支的文件,并让这个分支只有一个提交

    Q 我的开发工作都在 master 分支上做的,master 分支有很多的开发的时候产生的临时文件.我想清空 master 分支的历史记录.并且只保留 README.md 和 main.py A 你可 ...

  6. 时间工具类之“LocalDateTime方案转换地域性时差问题->UTC时间转纽约时间”

    一.使用方法 1.获取纽约ZoneId[纽约时区的ZoneId标识为"America/New_York"] -> ZoneId.of("America/New_Yo ...

  7. MCP 实践系列:股票分析

    今天,我们介绍了一个通过 Financial Datasets 获取股票市场数据的接口.这个接口不仅支持其他 AI 助手通过 MCP 接口 直接检索关键的财务数据(如损益表.资产负债表.现金流量表), ...

  8. Longest Substring Without Repeating Characters---LeetCode进阶路③

    题目描述 Given a string, find the length of the longest substring without repeating characters. Example ...

  9. My Calendar III——LeetCode⑪

    //原题链接https://leetcode.com/problems/my-calendar-iii/submissions/ 题目描述 Implement a MyCalendarThree cl ...

  10. SgLang代码细读-2.forward过程

    SgLang代码细读-2.forward过程 总览 Forward的主要过程围绕着 run_batch->TPModelWorker->ModelRunner->Model-> ...