从零开始玩Android 实战项目 4(登录注册页跳转)

274 阅读2分钟

Hello 小伙伴们大家好,我是Krain

先简单介绍一下自己的情况:毕业没多久的社畜小牛犊,目前已工作一年的初级Java(可能还算不上),凭借自己对编程开发的热爱踏上这个卷不死就往死里卷的行业,接下来我将以自己CV战士(新手小白)的身份记录成长历程、督促自己学习、遇见错误记录、加深编码记忆、技术相互交流。

特此声明:本人萌新,文章如提及技术分析均为自己理解,有错还请大佬纠正

经过上一篇对layout页面布局的基本了解,相信做一个简单的登录页面那是信手拈来,下面是我的登陆页样式与代码,设计只是让自己知道个大概,并非一定要一模一样,前期怎么简单怎么来,觉得单调后期再改

ddc7307ccd2879b98b18823ce75a6f6.png

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context=".LoginActivity">


    <EditText
        android:id="@+id/username" //定义控件id必须要加上@id/再加自定义名字
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="208dp"
        android:hint="请输入手机号"
        android:inputType="text"   //可以输入的文本类型为“text” 也就是包括字母数字符号都可以
        android:selectAllOnFocus="true"   //这个属性代表点击编辑文本框会自动选中文本框中所有内容
        app:layout_constraintEnd_toEndOf="parent"  //以下位置属性经过鼠标拖拉后它会自己生成
        app:layout_constraintHorizontal_bias="0.545"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/password"
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="12dp"
        android:hint="请输入密码"
        android:imeActionLabel="@string/action_sign_in_short"
        android:imeOptions="actionDone"
        android:inputType="textPassword"
        android:selectAllOnFocus="true"  //这个属性代表点击编辑文本框会自动选中文本框中所有内容
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/username" />

    <TextView
        android:layout_width="85dp"
        android:layout_height="22dp"
        android:layout_marginStart="308dp"
        android:layout_marginTop="8dp"
        android:text="@string/action_forget"  //忘记密码,提前在string类中定义的字符串,也可以直接将字符串写在这里
        android:textColor="#333333"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/password" />

    <Button
        android:id="@+id/login"
        android:layout_width="107dp"
        android:layout_height="57dp"
        android:layout_gravity="start"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="64dp"
        android:backgroundTint="@color/blue"
        android:text="@string/action_sign_in"
        android:textColor="@color/fontblue"
        android:textSize="17sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.276"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/password"
        app:layout_constraintVertical_bias="0.092" />

    <Button
        android:id="@+id/registration"
        android:layout_width="107dp"
        android:layout_height="57dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="64dp"
        android:backgroundTint="@color/white1"
        android:text="@string/action_resigate"
        android:textColor="@color/black"
        android:textSize="17sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.733"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/password"
        app:layout_constraintVertical_bias="0.088" />

</androidx.constraintlayout.widget.ConstraintLayout>

可以看到我们这边“忘记密码”部分是TextView,单纯放在上面做个摆设,并非具有实际功能。

我们以差不多的形式,新建注册页的布局xml文件,做出注册页样式,我用了LinearLayout 垂直布局 嵌套一个个LinearLayout 水平布局的形式达到类似一个表格的效果,调整好两个布局的内外边距即可,怎样更改布局的水平方向上一篇中有提到

image.png

好的,既然有了登录页有了注册页,那么接下来就是绑定这两个页面,从登录页点击注册按钮能够跳转到注册页,这个时候就要用到之前系统给我们生成的登录页Activity来写逻辑代码了,操作哪个页面的控件就在对应的Activity中写代码。

  • 首先就是在类中拿到我们的控件也就是初始化我们页面中的某个需要用到的控件 格式为
  想得到的类型 自定义名称=(控件类型)findViewById(R.id.自定义的控件id名);//R必须大写
  例如:
  Button abc=(Button)findViewById(R.id.registration); //我们这边为注册按钮定义的id名为registration  

初始化控件是为了让他运行时显示在屏幕上让你能够看到,接着为初始化后的控件绑定点击事件 格式为

    自定义名称.setOnClickListener(new View.OnClickLinstener(){
       省略,new View.找到对应api后回车自动生成
    })

在重写的OnClick方法中加上切换页面的两行代码

    Intent intent=new Intent(当前Activity的文件名.this,想要跳转的页面Activity.class);
    startActivity(intent)  //首字母小写的intent为自定义名称

这就可以点击按钮切换页面啦,同理,注册页面的返回按钮也可以这么操作