首页 > 其他分享 >HarmonyOS NEXT应用开发案例——全屏登录页面

HarmonyOS NEXT应用开发案例——全屏登录页面

时间:2024-04-13 20:45:10浏览次数:14  
标签:模态 登录 app NEXT HarmonyOS 点击 全屏 页面

全屏登录页面

介绍

本例介绍各种应用登录页面。

  1. 全屏登录页面:在主页面点击跳转到全屏登录页后,显示全屏模态页面,全屏模态页面从下方滑出并覆盖整个屏幕,模态页面内容自定义,此处分为默认一键登录方式和其他登录方式。

效果图预览

image

使用说明
  1. 点击主页面按钮"点击跳转到全屏登录页",显示全屏模态页面。
  2. 不选中"阅读并同意服务协议及个人信息处理规则",点击一键登录,提示"请先阅读并同意协议";选中则提示"登录成功"。
  3. 点击左下方"其他登录方式",页面中显示其他登录方式页面。
  4. 在手机号输入框输入11位数字后,"发送短信验证码"按钮由灰变蓝,选中"阅读并同意服务协议及个人信息处理规则",点击"发送短信验证码"按钮,提示"验证码已发送"。
  5. 点击左上角返回图标回到一键登录页面,再次点击返回图标收起模态页面。

实现思路

本例涉及的关键特性和实现方案如下:

  1. 通过bindContentCover组件绑定全屏模态页面,模态页面内容通过@Builder装饰器自定义。源码参考ModalWindow
Button($r('app.string.full_screen_modal_login_description'))
  .fontColor(Color.White)
  .borderRadius($r('app.integer.border_radius'))
  .type(ButtonType.Normal)
  .backgroundColor($r('app.color.grey_2'))
  .width($r('app.string.size_full'))
  .bindContentCover(this.isPresent, this.loginBuilder)
  .onClick(() => {
    this.isPresent = true;
  })
  1. 模态页面显示后,默认展示一键登录页面。页面需要在一个模态页面中切换,此处使用if进行条件渲染。源码参考DefaultLogin
if (this.isDefaultLogin) {
  // 默认一键登录方式
  ...
} else {
  // 其他登录方式
  OtherWaysToLogin()
    .transition(this.effect)
}
  1. 点击其他登录方式,切换过程涉及到组件的显示和消失,使用transition属性设置出现或消失转场。源码参考DefaultLogin
  OtherWaysToLogin()
    .transition(this.effect)
  1. 通过Stack组件,两个页面共用一个返回图标。源码参考DefaultLogin
Stack() {
  Image($r('app.media.arrow_back')) // 通过Stack组件,两个页面只实现一个back
    .width($r('app.integer.height_twenty_five')).height($r('app.integer.height_twenty_five'))
    .margin({ top: $r('app.integer.margin_mid') })
    .onClick(() => {
      if (this.isDefaultLogin) {
        this.isPresentInLoginView = false;
      } else {
        this.isDefaultLogin = true
      }
    })
}

高性能知识点

不涉及。

工程结构&模块类型

 modalwindow                                      // har包
 |---model
 |   |---DefaultLogin.ets                         // 默认一键登录页面
 |   |---OtherWaysToLogin.ets                     // 其他登录方式页面 
 |---ModalWindow.ets                              // 主页面,提供登录类型选项

模块依赖

不涉及。

参考资料

全屏模态转场(bindContentCover)

组件内转场(transition)

@Builder装饰器

标签:模态,登录,app,NEXT,HarmonyOS,点击,全屏,页面
From: https://www.cnblogs.com/HarmonyOSNext/p/18133334

相关文章

  • 鸿蒙HarmonyOS实战-ArkUI组件(Navigation)
    ......
  • HarmonyOS NEXT应用开发——Navigation开发 页面切换场景范例
    简介在应用开发时,我们常常遇到,需要在应用内多页面跳转场景时中使用Navigation导航组件做统一的页面跳转管理,它提供了一系列属性方法来设置页面的标题栏、工具栏以及菜单栏的各种展示样式。除此之外还拥有动态加载,navPathStack路由跳转。本文就以Navigation页面切换范例为例,来展......
  • HarmonyOS-基础之页面跳转
    1、配置页面路由信息resources-->base-->profile-->main_pages.json{"src":["pages/demo03/Index","pages/demo03/Detail"]}2、编写页面组件Index.ets/***路由跳转*-使用鸿蒙内置的router*/importrouterfrom'......
  • 通俗易懂的KMP理论讲解(含手求Next数组)
    通俗易懂的KMP理论讲解(含手求Next数组)1.KMP算法介绍KMP算法的核心是利用匹配失败后的信息,通过一个next数组,保存模式串中前后最长公共子序列的长度,尽量减少模式串与主串的匹配次数降低时间复杂度以达到快速匹配的目的。2.字符串的前后缀与公共前后缀2.1字符串的前缀字符串的......
  • HarmonyOS-基础之联系人案例
    使用前面学习的相关组件和api实现联系人的CRUD;效果如下父组件import{Contacts}from'../domain/Model'importContactsItemfrom'../components/ContactsItem'@Entry@ComponentstructContactsExample{//联系人数组@StatecontactsArr:Contacts[]=[......
  • 鸿蒙HarmonyOS实战-ArkUI组件(页面路由)
    ......
  • js设置浏览器全屏,无地址栏
    html:<p><buttonid="view-fullscreen">全屏</button><buttonid="cancel-fullscreen">退出</button></p>js://JavaScriptDocument(function(){varviewFullScreen=document.getEleme......
  • 火狐浏览器看视频全屏时会黑一下屏幕
    火狐浏览器看视频全屏时会黑一下屏幕在浏览器地址栏输入:“about:config”(不包含引号,下同)并回车,然后点击“我知道了”,可以进入高级设置界面。在地址栏下方的搜索栏中输入:“full-screen-api.transition-duration”,首选项中出现两项设置,分别双击并把数值修改为“00”(注意中......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Menu)
    ......
  • 鸿蒙开发人才紧缺!这些项目帮你快速上手HarmonyOS!
    去年9月,华为宣布鸿蒙原生应用全面启动,基于开源鸿蒙开发的HarmonyOSNEXT鸿蒙星河版将在今年秋天正式和消费者见面。该版本系统底座将由华为全线自研,去掉传统安卓AOSP代码。这意味着,鸿蒙星河版将不再兼容安卓应用,京东、淘宝、得物、美团、微博、小红书等上百款应用也相......