zoukankan      html  css  js  c++  java
  • Android 实验一 Android 活动与活动间数据传递

    一、 实验目的

    1. 掌握在Android Studio开发环境中建立Android项目的步骤和方法,理解Android应用程序的目录结构、各文件的功能;理解Android应用改程序的基本运行过程;了解Android的组件及组件的功能。
    2. 掌握使用Intent实现Android组件之间通信的机制和方法。
    3. 了解在Android 界面开发中常见的布局和控件的使用方法。

    二、 实验环境

    系统开发平台:Android Studio 4.0.1
    系统开发版本:Android 10.0
    系统开发环境:Windows 10 x64
    JDK版本:jdk1.8
    运行环境:HUAWEI nova7 SE (Android 10)

    三、 实验内容

    综合运用基本组件完成一个注册与登录的应用程序设计。要求基于基础控件,综合使用Intent实现Android的Activity之间信息交换。系统包含启动页、注册页、登录页3个页面,具体要求如下:
    1.注册页面和功能的实现。
    –界面要求包含用户名、密码、重复密码信息。
    –要求在用户输入信息后,单击注册按钮,将用户的注册信息用Toast显示。
    2.登陆页面和功能的实现。
    –要求包含用户名、密码,要求包含登陆和注册功能。
    –要求用户输入信息后,对用命名和密码进行检查:默认用户名为“Admin”,密码为“I love Android”,Toast提示“欢迎进入DIY”,否则提示“用户名或密码不正确,请重试”。
    3.上述两个页面进行信息传递。
    –注册的信息能用于登陆页面。第一次打开应用时可以通过注册按钮进行注册;在注册界面完成注册后返回至登陆页面,可使用注册信息进行登陆,并利用Toast显示登录成功与否的提示信息。
    4.为该项目制作一个启动页。
    –项目运行后首先进入启动页,若干秒后进入登录页面。
    –增加适当的动画效果;
    –去掉启动页面的标题效果。

    四、方案设计

    设计思路:
    一.登录页面的设计:类似于网上各种App的登录界面,需要输入注册过的用户名和相匹配的密码才可以登录。如果当前用户名不存在,而需要先注册才可以登录。
    二.注册页面的设计:注册界面有三个可输入的文本框:用户名,密码,确认密码。用户名必须是之前未注册过的才可以注册,注册一个用户时两次输入的密码应该要一样。
    三.启动页的设计:启动页默认三秒后跳转到登录页面,隐藏标题。加入一个跳过动画功能,可以在计时未结束之前直接跳转到登录页面。

    一:登录页面的设计

    1.首先是登录页面的UI布局文件xml设计:一个TextView显示欢迎信息,两个EditText分别用来输入用户名以及密码。还有两个Button设置为登录和注册按钮。
    最外层布局采用垂直方式(vertical)的线性布局。

    使用一个自己找到的图片代替整体的背景

    使用可以换字体

    两个EditText分别是用户名和密码

    设置
    Layout_gravity=”center_horizontal”可以使控件在垂直的先行布局中处于水平中央的位置
    因为ET_2是一个密码文本可编辑框,设置其inputType为textPassword表示输入方式为密码方式,即不可见其真实内容。

    之后在垂直的线性布局中嵌套一个水平的线性布局,这样可以让水平的(horizontal)线性布局中的空间水平放置。
    设置两个Button按钮,分别为登录和注册按钮,之后点击按钮后可以分别跳转到登录成功界面和注册界面。

    2.登录界面的java逻辑设计:
    我们在xml文件中给每一个空间取名后,通过java中的findViewById方法可以获取相应的组件实例,然后对其进行相应的逻辑实现。具体实现:

    之后我们给button1(登录按钮)和button2(注册按钮)分别创建监听
    (1).button1

    下面是这个登录按钮的逻辑实现:

    其中s1和s2表示获取到点击登录之后,用户名框中的信息和密码框中的信息。
    我这里实现了一个可以存储多个账户信息的登录界面,具体用java中的HashMap(以下简称Map)实现

    每次从注册界面获得一个账户名和密码,我都会将这一个键值对存放在Map中,然后当我登录的时候我就可以去Map中查找是否有我之前注册过的账号。
    使用Map的函数containsKey(s1)可以查找当前我输入的用户名是否已经被注册过,如果没有被注册过,则会用Toast提示一个”用户名不存在,请先注册”的信息。
    如果当前用户名存在于Map中,则检查我输入的s2密码是否与注册用户名时输入的密码一致,使用Map中的get(s1)获得相应的value值,再用compare与s2进行比较:
    如果密码一致,我们登陆成功。清空用户名和密码输入框后跳转到登陆成功界面。
    在此我使用Handler结构延迟一秒跳转

    页面跳转的方式我选择书写比较简单的显式Intent方法。

    只跳转,不传递任何数据。

    (2).button2

    设置监听。点击注册按钮后使用显式Intent,和startActivityForResult(intent,1);
    这样我们可以从注册界面中获取数据(注册好的用户名和密码)
    使用startActivityForResult(intent,1);
    我们还需要重写方法onActivityResult

    Username和password分别是从注册页面中得到的用户名和密码,我们将其put放入Map保存,登录的使用就可以使用了!

    二.注册页面的设计:

    类似于登录页面,但我们在其基础之上加入了一个EditText,用于重复输入密码。

    同样我们使用一个HashMap存储我们之前注册好了的用户信息。

    点击注册按钮时的逻辑:

    Username表示输入的用户名,password表示第一次输入的密码,Tpassword表示第二次输入的密码。
    1.首先判断是否有一个为空,若有一个为空,则需要完善注册信息。
    2.判断两次输入的密码是否一致。若不一致则用Toast提醒用户输入的密码需要一致
    3.密码一致的时候我们先判断用户名是否之前已经注册过,用Map判断,如果当前注册没有注册过,则我们注册成功。Toast显示成功注册的信息,注册的用户名和密码。将用户名和密码存放于Map中。

    为了符合逻辑,我们设计一个延时跳转

    使得
    都显示2秒后才跳转回到登录页面。


    这个结构我们先将用户名和密码都用putExtra放入Intent中,之后将数据返回给登录页面。然后登录界面用前面介绍的onActivityResult方法就可以获得username和password这两个注册好的数据了

    三.启动页的设计:

    在xml文件中加入一个TextView文件,用来作为跳转的触发入口。主要还是java的逻辑设计
    Xml布局文件:

    倒计时页面制作:
    1.先使用setFullScreen方法隐藏标题+全屏显示,下面是代码,有注释:

    放于setContentView之前起作用

    2.倒计时逻辑,有一定的注释。


    这样我们可以实现有跳过动画功能的倒计时启动页面了。

    你将不再是道具,而是成为人如其名的人
  • 相关阅读:
    . net core的发布
    Using Redis Cache for session data storage in ASP.NET Core
    WCF之双工服务
    值得参考的.net core 的博客
    一、获取EF
    limit 基本实现方式
    Session机制详解及分布式中Session共享解决方案
    ASP.NET Core 中的基于角色的授权ASP.NET Core 中的基于角色的授权
    WCF之双工服务
    苹果公司的粉丝转抄
  • 原文地址:https://www.cnblogs.com/wsl-lld/p/13698046.html
Copyright © 2011-2022 走看看