本节任务
完成用户登陆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