登陆界面、登陆跳转和进度条功能实现

  首先打开Android studio新建一个空项目,打开layout文件夹下的activity_main.xml文件,来设置登陆界面的布局。登陆界面需要两个输入框,一个用来输入账号,一个用来输入密码,一个登录按钮和一个进度条。具体布局代码实现如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 tools:context=".MainActivity2"
8 android:orientation="vertical">
9
10 <!--头部内容-->
11 <RelativeLayout
12 android:layout_width="match_parent"
13 android:layout_height="160dp"
14 android:padding="16dp"
15 android:layout_margin="0dp">
16 </RelativeLayout>
17
18 <!--输入框-->
19 <RelativeLayout
20 android:layout_width="match_parent"
21 android:layout_height="wrap_content"
22 android:padding="16dp"
23 android:layout_margin="0dp">
24
25 <!--账号输入框-->
26 <EditText
27 android:id="@+id/account"
28 android:layout_width="match_parent"
29 android:layout_height="wrap_content"
30 android:layout_marginBottom="16dp"
31 android:hint="账号"/>
32
33 <!--密码输入框-->
34 <EditText
35 android:layout_width="match_parent"
36 android:layout_height="wrap_content"
37 android:id="@+id/password"
38 android:layout_below="@+id/account"
39 android:hint="密码"/>
40 </RelativeLayout>
41
42 <RelativeLayout
43 android:layout_width="match_parent"
44 android:layout_height="wrap_content"
45 android:layout_margin="16dp">
46
47 <!--登录按钮-->
48 <Button
49 android:id="@+id/login"
50 android:layout_width="match_parent"
51 android:layout_height="wrap_content"
52 android:text="登录"
53 android:textColor="#fff"
54 android:background="#008cc9"/>
55
56 </RelativeLayout>
57
58 <!--进度条-->
59 <ProgressBar
60 style="?android:attr/progressBarStyle"
61 android:layout_width="match_parent"
62 android:layout_height="124dp"
63 android:id="@+id/progressBar"/>
64
65 </LinearLayout>

  然后进入我们的MainActivity的Java代码中,在onCreate()方法中实例化我们的几个布局组件:

1         //在布局文件里找到输入框控件
2 EditText editText1 = findViewById(R.id.account);
3 EditText editText2 = findViewById(R.id.password);
4 //找到登录按钮控件
5 Button button = findViewById(R.id.login);
6 //找到进度条控件
7 ProgressBar progressBar = findViewById(R.id.progressBar);
8 progressBar.setProgress(0);//设置进度条进度
9 progressBar.setVisibility(View.GONE);//设置不可见

  使用字符串数组设置一个固定的账号和密码:

1 //设置固定的学生账号和密码
2 String[] account = {"000000"};
3 String[] password = {"123456"};

  这样我们的布局和在Java代码中实例化组件就完成了,下一步需要设置在单击登录按钮后,实现进度条活动和检测账号密码是否正确,并且进行页面跳转。

  接着我们来实现点击按钮后的操作,先给我们实例化的登录按钮设置监视器setOnClickListener();

1 button.setOnClickListener(view -> {
2
3 });
4//我用的是最新版idea,并且是android10.0的模拟器,可能监视器的代码风格会和大家的不一样,正常使用button注册点击监视器即可。

  然后是在按钮监视里写代码(以下代码都是在button的监视器里的代码):

  创建两个字符串来接受我们输入的账号和密码:

1 String getAccount = editText1.getText().toString();
2 String getPassword = editText2.getText().toString();

  用一个if语句来判断我们输入的账号密码:

1 if(account[0].equals(getAccount) && password[0].equals(getPassword)) {
2
3 }
4 else{
5
6 }

  在if里写账号密码正确后的的操作,首先设置我们的进度条为可见模式,然后设置final的int 类型的整型变量来表示完成进度,最后再创建一个线程来实现固定时间进度条运行(以下代码在if中):

  

 1 progressBar.setVisibility(View.VISIBLE);//设置进度条可见
2 final int[] progress = {0};//完成进度
3 new Thread(){//创建一个新线程
4 @Override
5 public void run(){
6   super.run();
7 while(progress[0] < 100){  //progress[0]变量初始化为0,进程每运行一次+1,并且进程会延时30秒,直到变量加到100,也就是说这个进程可以实现让进度条活动3秒之后再进行跳转;
8   progress[0]++;
9   runOnUiThread(() -> progressBar.setProgress(progress[0]));//重新设置新进度
10 try {
11 Thread.sleep(30);//进程延时30秒
12 }catch (InterruptedException e){
13 e.printStackTrace();
14 }
15 }
16 Intent intent = new Intent(MainActivity.this, MainActivity2.class);//使用Intent进行活动跳转,跳转语句需要写在新创建的线程中,不能写在主线程中,不然两个线程并发进行就不能够实现进度条过多少秒后再跳转的功能了
17 startActivity(intent);
18 }
19 }.start();

  if里的语句写好了,在else里加入一个Toast来提示账号密码错误就可以了:

1  Toast.makeText(MainActivity.this, "账号或密码不正确", Toast.LENGTH_SHORT).show();

【注】:我本人使用的使最新版idea和Android10.0 虚拟机,代码框架和风格可能会和大家不一样,如果遇到不支持的写法大家可以去百度一下旧方法进行替换。第一次发博客,还希望大家多提意见。

Android开发之账号密码登录跳转、固定时间显示进度条实现的更多相关文章

  1. Android开发 ---基本UI组件4:拖动事件、评分进度条、圆圈式进度条、进度条控制

    Android开发 ---基本UI组件4 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding=" ...

  2. shiro整合shiro多验证登录(账号密码登录和使用手机验证码登录)

    1. 首先新建一个shiroConfig  shiro的配置类,代码如下: @Configuration是标识这个类是一个配置文件,在启动时会加载这个类里面的内容,这个配置文件的位置的一定一定一定不能 ...

  3. mongodb副本集加分片集群安全认证使用账号密码登录

    mongodb副本集加分片集群搭建网上资料有很多.粘贴一个写的比较好的.副本集加分片搭建 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录. 默认的mongodb是 ...

  4. Mongodb设置账号密码登录

    Mongodb设置.首先设置Data目类和Log目录,然后新建mongodb.conf,设置内容大体如下 port = 27017 #数据目录 dbpath = /usr/softs/data/db ...

  5. Android零基础入门第52节:自定义酷炫进度条

    原文:Android零基础入门第52节:自定义酷炫进度条 Android系统默认的ProgressBar往往都不能满足实际开发需要,一般都会开发者自定义ProgressBar. 在Android开发中 ...

  6. Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效

    Android特效专辑(十一)--仿水波纹流球进度条控制器,实现高端大气的主流特效 今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图 ...

  7. Android第三方开源SeekBarCompat:音乐类播放器等APP进度条常用

     Android第三方开源SeekBarCompat:音乐类播放器等APP进度条常用 Android平台原生的SeekBar设计简单,然而,比如现在流行的一些音乐播放器的播放进度控制条,如果直接使 ...

  8. Android开发实例之miniTwitter登录界面的实现

    原文: http://www.jizhuomi.com/android/example/134.html 本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界 ...

  9. openvpn部署账号密码登录

    1.开启服务器端路由转发功能: 修改配置文件/etc/sysctl.conf中 net.ipv4.ip_forward = 0 改为 net.ipv4.ip_forward = 1 [root@nod ...

  10. 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录

    openstack使用的镜像多为qcow2格式,各个发行商也开源了针对openstack制作的镜像.但是这些镜像的登录方式都是注入用户名和密码的方式,就是说不能够直接通过账号和密码登录.那么如何将一个 ...

随机推荐

  1. Springboot实现注解判断权限

    Springboot实现注解判断权限 今天记录一下使用springboot的注解来给方法加权限 避免了每个方法都需要大量的权限判断 超级好用√ @ 目录 Springboot实现注解判断权限 1.创建 ...

  2. stm32开发笔记

    STM32F103C8T6单片机简介 标准库与HAL库区别 寄存器 寄存器众多,需要经常翻阅芯片手册,费时费力: 更大灵活性,可以随心所欲达到自己的目的: 深入理解单片机的运行原理,知其然更知其所以然 ...

  3. 【RocketMQ】Dledger模式下的日志复制

    RocketMQ在开启Dledger时,使用DLedgerCommitLog,其他情况使用的是CommitLog来管理消息的存储.在Dledger模式下,消息写入时Leader节点还需要将消息转发给F ...

  4. MySQL innoDB 间隙锁产生的死锁问题

    背景 线上经常偶发死锁问题,当时处理一张表,也没有联表处理,但是有两个mq入口,并且消息体存在一样的情况,频率还不是很低,这么一个背景,我非常容易怀疑到,两个消息同时近到这一个事务里面导致的,但是是偶 ...

  5. CIC滤波器仿真与实验过程及结果记录

    整理于2023-10-08 0.0 前言: 前面介绍了使用matlab中的Filter Designer工具箱进行CIC抽取滤波器设计的仿真过程与结果.下面在前面的基础上针对现有的[正点原子ZYNQ] ...

  6. 流水线中便捷迭代,鲲鹏DevKit 23.0新能力抢先看

    本文分享自华为云社区<鲲鹏DevKit 23.0:流水线中便捷迭代鲲鹏版本,迁移.开发.调优无缝衔接>,作者:华为云社区精选 . 数字时代,海量的行业应用驱动着多样性算力的飞速发展,以鲲鹏 ...

  7. struct 结构体【GO 基础】

    〇.前言 虽然 Go 语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念,但是可以通过结构体的内嵌,再配合接口,来实现面向对象,甚至具有更高的扩展性和 ...

  8. 实验1 C语言输入输出和简单程序编写

    1.试验任务1 task1.c //打印一个字符小人 #include <stdio.h> int main() { printf(" o \n"); printf(& ...

  9. 网络基础-OSI七层vsTCP/UDP四层 五层 数据封装

    1.0 网络基础 1.1 网络是什么? 网络是信息传输.接收.共享的虚拟平台,通过它把各个点.面.体的信息联系到一起,从而实现这些资源的共享 网络分类:局域网 ,城域网,广域网 1.2 数据通信方式 ...

  10. Jenkins-插件安装-多实例

    1,Jenkins插件安装: Jenkins最大的功能莫过于插件丰富,基于各种插件可以满足各项需求,Jenkins本身是一个框架,真正发挥作用的各种插件.Jenkins默认自带很多插件,如果没有添加新 ...