用户登陆UI

本节任务

完成用户登陆UI,点击登陆按钮跳转到应用主页

界面原型:

登陆页面:

登陆成功页面:

涉及知识点:

  • 线性布局
  • Image组件
  • 输入框
  • 复选框
  • 分割线
  • 按钮
  • 路由跳转
  • 背景色、内容对齐

1 新建项目

录入项目信息:

2 logo部分

在index.ets下面编码,完成登陆页面,首先删除原有样例代码,然后,使用column布局,添加logo:

复制代码
@Entry
@Component
struct Index {


  build() {

    Column(){

      Image($r('app.media.gwglogo'))
        .width(180)
        .height(180)
        .margin(10)      

    }
    .width('100%')
    .height('100%')

  }
}

预览效果:

!IMPORTANT

图片需要放到media目录下:

\src\main\resources\base\media\gwglogo.png

3 登陆部分

仍然在column中使用上下布局,添加用户名输入框、密码框、忘记密码、登陆按钮:

复制代码
TextInput({placeholder:'用户名/手机/邮箱'})
  .backgroundColor(Color.White)
  .showUnderline(true)
  .width('95%')

TextInput({placeholder:'密码'})//密码框输入模式不支持下划线
  .type(InputType.Password)
  .backgroundColor(Color.White)
  .width('95%')
Text('忘记密码').width('95%')
  .fontSize(12)
  .fontColor(Color.Gray)
  .margin(10)
  .textAlign(TextAlign.End)
Button('登陆')
  .width('80%')
  .backgroundColor('#ccc')

4 注册及用户协议

使用Row布局:

复制代码
      Row(){
        Text('立即注册')
          .fontSize(14)
        Text('短信登陆')
          .fontSize(14)
      }
      .width('90%')
      .justifyContent(FlexAlign.SpaceBetween)
      .margin(10)

      Row(){
        Checkbox()
        Text('我已阅读并同意《用户协议》')
          .fontSize(12)
          .fontColor(Color.Red)

      }

预览效果:

5 其他方式登陆

添加分割线、其他方式登陆、登陆入口logo:

复制代码
      Divider().margin(10)
      Text('其他方式登陆')
        .fontSize(12)
      Row({space:8}){
        Image($r('app.media.letterA'))
          .width(32)
          .height(32)
          .borderRadius(16)
        Image($r('app.media.letterB1'))
          .width(32)
          .height(32)
          .borderRadius(16)
        Image($r('app.media.letterC1'))
          .width(32)
          .height(32)
          .borderRadius(16)
      }
      .width('95%')
      .margin(10)
      .justifyContent(FlexAlign.Center)

预览效果:

6 登陆跳转

1)新建主页

命名为MainPage:

页面预览:

2)路由跳转

在登陆按钮上绑定事件,点击后通过路由进行跳转:

复制代码
      Button('登陆')
        .width('80%')
        .backgroundColor('#ccc')
        .onClick(()=>{
          router.pushUrl({
            url:'pages/MainPage'
          })
        })

!NOTE

路由组件可以自动在代码头部导入:

复制代码
import { router } from '@kit.ArkUI'

页面路由链接从以下文件中获取:

src/main/resources/base/profile/main_pages.json

复制代码
{
  "src": [
    "pages/Index",
    "pages/MainPage"
  ]
}

预览效果,首先点击登陆按钮:

跳转后页面,点击预览器工具栏中的返回键可以返回登陆页面:

代码参考:

https://gitee.com/snowyvalley/harmony-app-dev-basic-course.git

相关推荐
野生技术架构师4 小时前
1000道互联网大厂Java岗面试原题解析(八股原理+场景题)
java·开发语言·面试
今天也要学习吖4 小时前
开源AI智能客服系统AI-CS
人工智能·ui·chatgpt·golang·开源·gemini·智能客服系统
qqty12175 小时前
Java进阶学习之路
java·开发语言·学习
EstherNi5 小时前
vue3仿照elementui样式的写法,并进行校验,并且有默认值的设置
javascript·elementui
HwJack205 小时前
HarmonyOS APP开发中Feature模块小案例:动态化开发的“瑞士军刀“
华为·harmonyos
gCode Teacher 格码致知5 小时前
Javascript提高:get和post等请求,对于汉字和空格信息进行编码的原则-由Deepseek产生
开发语言·前端·javascript·node.js·jquery
竹林8185 小时前
从ethers.js迁移到Viem:我在一个DeFi项目前端重构中踩过的坑
前端·javascript
黑眼圈子5 小时前
总结一下用Java做算法的常用类和方法
java·开发语言·算法
码界筑梦坊5 小时前
353-基于Python的大湾区气候数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
鸿蒙程序媛6 小时前
【知识汇总】PixelMap 和 ArrayBuffer 详解
harmonyos