Harmony Next -- 通用标题栏:高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。

news2024/11/15 20:35:51

hm_common_title_bar

OpenHarmony三方库中心仓:https://ohpm.openharmony.cn/#/cn/detail/common_title_bar

介绍

一款通用标题栏,支持高度自定义,可设置沉浸式状态,正常状态下为:左侧返回、居中标题,左中右均可自定义视图。

软件架构

Harmony next版本,兼容API12

效果图

在这里插入图片描述

安装教程
  1. ohpm install common_title_bar
使用说明
  1. 引入仓库
  2. 设置全局属性:状态栏高度、是否全面屏、标题栏高度、标题栏颜色等(可忽略,使用默认配置)

基础使用:

import { CommonTitleBar, TitleType } from '@ohos/commonTitleBar'
import { promptAction } from '@kit.ArkUI';

@Component
export struct TitlePage {
  /**
   * rightType: TitleType.IMAGE时,设置了rightMorePopupData: this.rightMorePopup
   * 则会显示气泡菜单弹窗:如微信扫一扫弹窗
   */
  @State rightMorePopup: MenuItemOptions[] = [
    {
      startIcon: $r('app.media.ic_edit'),
      content: "编辑资料",
    }, {
    startIcon: $r('app.media.ic_download'),
    content: "上传信息",
  }, {
    startIcon: $r('app.media.ic_upload'),
    content: "下载信息",
  }, {
    startIcon: $r('app.media.ic_scan'),
    content: "扫一扫",
  }
  ]

  /**
   * 左侧自定义视图
   */
  @Builder
  leftBuilder() {
    Row() {
      Image($r('app.media.ic_arrow_left'))
        .height(20)
      Text('返回')
        .onClick(() => {
          promptAction.showToast({
            message: "点击了左侧自定义视图",
            duration: 1500,
          })
        })
    }
  }

  /**
   * 右侧自定义视图
   */
  @Builder
  rightBuilder() {
    Row() {
      Text('更多')
        .onClick(() => {
          promptAction.showToast({
            message: "点击了右侧自定义视图",
            duration: 1500,
          })
        })
      Image($r('app.media.ic_more'))
        .height(20)
    }
  }

  /**
   * 居中自定义视图
   */
  @Builder
  centerBuilder() {
    Row() {
      Image($r('app.media.ic_arrow_left'))
        .height(20)
      Text('居中')
        .onClick(() => {
          promptAction.showToast({
            message: "点击了居中自定义视图",
            duration: 1500,
          })
        })
      Image($r('app.media.ic_more'))
        .height(20)
    }
  }

  build() {
    NavDestination() {
      Scroll() {
        Column() {
          CommonTitleBar({
            leftType: TitleType.NONE,
            centerType: TitleType.TEXT,
            centerText: "通用标题栏",
          })

          CommonTitleBar({
            isFullScreen: false,
            leftType: TitleType.TEXT,
            leftText: "返回",
            centerType: TitleType.TEXT,
            centerText: "非全面屏+左右文字",
            rightType: TitleType.TEXT,
            rightText: "更多",
          })

          /**
           * 左侧返回,右侧更多+气泡菜单
           */
          CommonTitleBar({
            isFullScreen: false,
            centerType: TitleType.TEXT,
            centerText: "左侧返回+右侧更多",
            rightType: TitleType.IMAGE,
            rightMorePopupData: this.rightMorePopup,
            rightOnClick: (menu, index) => {
              promptAction.showToast({
                message: menu?.content + '---' + index,
                duration: 1500,
              })
            }
          })

          CommonTitleBar({
            isFullScreen: false,
            centerType: TitleType.TEXT,
            centerText: "自定义点击事件",
            centerOnClick: (): void => {
              promptAction.showToast({
                message: "居中自定义事件",
                duration: 1500,
              })
            },
            leftOnClick: () => {
              promptAction.showToast({
                message: "左侧自定义事件",
                duration: 1500,
              })
            },
            rightType: TitleType.TEXT,
            rightText: "更多",
            rightOnClick: () => {
              promptAction.showToast({
                message: "右侧自定义事件",
                duration: 1500,
              })
            }
          })
          /**
           * 自定义视图
           */
          CommonTitleBar({
            isFullScreen: false,
            leftType: TitleType.CUSTOM,
            leftCustomView: this.leftBuilder,
            centerType: TitleType.CUSTOM,
            centerCustomView: this.centerBuilder,
            rightType: TitleType.CUSTOM,
            rightCustomView: this.rightBuilder
          })

          /**
           * 跑马灯效果
           */
          CommonTitleBar({
            isFullScreen: false,
            leftWidth: 80,
            leftType: TitleType.TEXT,
            leftText: "超长文本时开启跑马灯效果",
            centerWidth: 150,
            centerText: "超长文本时开启跑马灯效果,超长文本时开启跑马灯效果,超长文本时开启跑马灯效果",
            rightWidth: 80,
            rightType: TitleType.TEXT,
            rightText: "超长文本时开启跑马灯效果",
            rightTextOverflow: TextOverflow.Ellipsis
          })

          /**
           * 中间搜索框
           */
          CommonTitleBar({
            isFullScreen: false,
            leftType: TitleType.NONE,
            centerType: TitleType.SEARCH,
            searchValue: "关键字",
            searchPlaceholder: "请输入产品名称",
            searchButtonText: "搜索",
            searchButtonOptions: {
              fontSize: 14,
              fontColor: Color.Red
            },
            onChangeSearch: (value) => {
              console.log("Search:" + value)
            },
            onSubmitSearch: (value) => {
              promptAction.showToast({
                message: value,
                duration: 1500,
              })
            }
          })

          /**
           * 中间搜索框 + 左侧返回 + 右侧更多
           */
          CommonTitleBar({
            isFullScreen: false,
            rightType: TitleType.IMAGE,
            rightMorePopupData: this.rightMorePopup,
            rightOnClick: (menu, index) => {
              promptAction.showToast({
                message: menu?.content + '---' + index,
                duration: 1500,
              })
            },
            centerLeftPadding: 50,
            centerRightPadding: 50,
            centerType: TitleType.SEARCH,
            searchPlaceholder: "请输入产品名称",
            searchButtonText: "搜索",
            searchButtonOptions: {
              fontSize: 14,
              fontColor: Color.Red
            },
            onChangeSearch: (value) => {
              console.log("Search:" + value)
            },
            onSubmitSearch: (value) => {
              promptAction.showToast({
                message: value,
                duration: 1500,
              })
            }
          })

          /**
           * 基础属性设置
           */
          CommonTitleBar({
            centerText: "基础属性设置",
            isFullScreen: true,
            statusBarHeight: 50,
            statusBarColor: Color.Blue,
            titleBarHeight: 56,
            titleBarColor: Color.Green,
            showBottomLine: true,
            bottomLineColor: Color.Red,
            bottomLineSize: 5,
          })

        }
      }
    }
    .hideTitleBar(true)
  }
}

视图类型:

export enum TitleType {
  NONE = 'none', // 空白
  TEXT = 'text', // 文字
  IMAGE = 'image', // 图标
  CUSTOM = 'custom', // 自定义
  SEARCH = 'search', // 居中搜索框
}

左侧返回方式:

/**
 * 返回方式
 * 使用POP、POP_TO_NAME、POP_TO_INDEX、CLEAR,需要在MainPage主页面设置:@Provide('appPathStack') appPathStack: NavPathStack = new NavPathStack();
 * MainPage为其他使用CommonTitleBar子组件的主组件
 * 如果使用以下方式,自定义左侧图图标点击事件(onClickLeftImage)即可
 */
export enum BackType {
  NONE = 'none', // 无点击事件
  ROUTER = 'router', // router.back() 返回到上一页
  POP = 'pop', // NavPathStack.pop() 返回到上一页;默认方式
  POP_TO_NAME = 'popToName', // NavPathStack.popToName("name") 返回到上一个name页面
  POP_TO_INDEX = 'popToIndex', // NavPathStack.popToIndex(1) 返回到索引为1的页面
  CLEAR = 'clear', // NavPathStack.clear() 返回到根首页(清除栈中所有页面)
}

CommonTitleBar属性介绍:

属性默认值说明
主体设置
isFullScreenboolean:true是否是全面沉浸是屏
statusBarHeightLength:36状态栏高度(全面沉浸式屏生效)
titleBarHeightLength:56标题栏高度
titleBarColorResourceColor:‘#f5f5f5’标题栏颜色
statusBarColorResourceColor:‘#f5f5f5’状态栏颜色 默认 等于标题栏颜色
showBottomLineboolean:true是否显示标题栏底部的分割线
bottomLineSizeLength:1标题栏底部的分割线的宽度
bottomLineColorResourceColor:“#DDDDDD”标题栏分割线颜色
左侧设置
leftTypestring:TitleType.IMAGE左侧视图类型,默认显示返回按钮
leftWidthLength:-1左侧视图宽度,不设置则自适应内容
leftLeftPaddingLength:15左侧视图左内间距
leftRightPaddingLength:5左侧视图右内间距
leftTextResourceStr:‘Left’左侧文字leftType = text 有效
leftTextColorResourceColor:“#000000”左侧文字颜色
leftTextSizeLength:16左侧文字大小
leftTextOverflowTextOverflow:TextOverflow.MARQUEE左侧文本,超长时的显示方式,默认跑马灯效果;
leftImageResourceResourceStrPixelMap:返回图标
leftImageWidthLength:26左侧图标宽度
leftImageHeightLength:26左侧图标高度
leftImagePaddingLength:5左侧图标padding值:图标尺寸16,内间距各5,保证点击范围
onClickTypeLeftImagestring:BackType.POP返回方法,不设置leftOnClick的情况下生效
leftPopToNamestring:‘’BackType.POP_TO_NAME下生效:NavPathStack.popToName(“name”) 方式的页面名称
leftPopToIndexnumber:0BackType.POP_TO_INDEX下生效:NavPathStack.popToIndex(1) 返回到索引为1的页面
leftCustomView@Builder:左侧自定义视图
leftOnClick() => void左侧点击事件
右侧设置
rightTypestring:TitleType.NONE右侧视图类型,默认无视图
rightWidthLength:-1右侧宽度,不设置则自适应内容
rightLeftPaddingLength:5右侧视图左内间距
rightRightPaddingLength:15右侧视图右内间距
rightTextResourceStr:‘Right’右侧文字leftType = text 有效
rightTextColorResourceColor:“#000000”右侧文字颜色
rightTextSizeLength:16右侧文字大小
rightTextOverflowTextOverflow:TextOverflow.MARQUEE右侧文本,超长时的显示方式,默认跑马灯效果
rightImageResourceResourceStrPixelMap:更多图标
rightMorePopupView@Builder:更多-气泡菜单如果默认使用更多图标,可默认展示气泡菜单
rightMorePopupDataMenuItemOptions[]:[]气泡菜单数据列表
rightImageWidthLength:26右侧图标宽度
rightImageHeightLength:26右侧图标高度
rightImagePaddingLength:5右侧图标padding值:图标尺寸16,内间距各5,保证点击范围
rightCustomView@Builder:右侧自定义视图
rightOnClick(item?: MenuItemOptions, index?: number) => void右侧点击事件
居中设置
centerTypestring:TitleType.TEXT居中视图类型,默认文字视图
centerWidthLength:-1居中宽度,不设置则自适应内容
centerTextResourceStr:‘Center’居中文字leftType= text 有效
centerTextColorResourceColor:“#000000”居中文字颜色
centerTextSizeLength:16居中文字大小
centerTextOverflowTextOverflow: TextOverflow.MARQUEE居中文本,超长时的显示方式,默认跑马灯效果
centerOnClick() => void居中文字点击事件
centerImageResourceResourceStrPixelMap:无
centerImageWidthLength:26居中图标宽度
centerImageHeightLength:26居中图标高度
centerImagePaddingLength:5居中图标padding值:图标尺寸16,内间距各5,保证点击范围
centerCustomView@Builder:无居中自定义视图
searchValuestring:‘’centerType = TitleType.SEARCH生效:居中搜索框文本
searchPlaceholderResourceStr:‘请输入关键字’居中搜索框提示文本
searchButtonTextstring:‘搜索’设置搜索框末尾搜索按钮文本
searchButtonOptionsSearchButtonOptions:无设置搜索框末尾搜索按钮文本样式
onSubmitSearch(value: string) => void点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调
onChangeSearch(value: string) => void输入内容发生变化时,触发该回调
centerLeftPaddingLength:30居中视图左内间距
centerRightPaddingLenght:30居中视图右间距

CommonTitleBar全局属性设置:统一设置,整个项目均可生效,一般位于EntryAbility.ets中设置:

/**
       * 设置通用标题栏的全局属性
       * 主体设置
       */
      AppStorage.setOrCreate<boolean>(TitleGlobalAttribute.IS_FULL_SCREEN, true); // 全局设置是否是全面屏
      AppStorage.setOrCreate<number>(TitleGlobalAttribute.STATUS_BAR_HEIGHT, px2vp(area.topRect.height)); // 全局设置状态栏高度
      AppStorage.setOrCreate<number>(TitleGlobalAttribute.TITLE_BAR_HEIGHT, 56); // 全局设置标题栏高度
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.TITLE_BAR_COLOR, "#f5f5f5"); // 全局设置标题栏颜色
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.STATUS_BAR_COLOR, "#f5f5f5"); // 全局设置状态栏颜色
      AppStorage.setOrCreate<boolean>(TitleGlobalAttribute.SHOW_BOTTOM_LINE, true); // 全局设置是否显示标题栏底部的分割线
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.BOTTOM_LINE_SIZE, 1); // 全局设置标题栏底部的分割线的宽度
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.BOTTOM_LINE_COLOR, "#DDDDDD"); // 全局设置标题栏分割线颜色

      /**
       * 左侧设置
       */
      AppStorage.setOrCreate<string>(TitleGlobalAttribute.LEFT_TYPE, TitleType.IMAGE); // 全局设置左侧视图类型
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_LEFT_PADDING, 15); // 全局设置左侧视图左内间距
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_RIGHT_PADDING, 5); // 全局设置左侧视图右内间距
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.LEFT_TEXT_COLOR, "#000000"); // 全局设置左侧文字颜色
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_TEXT_SIZE, 16); // 全局设置左侧文字大小
      AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.LEFT_IMAGE_RESOURCE,
        $r('app.media.ic_arrow_left')); // 全局设置左侧图标
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_WIDTH, 26); // 全局设置左侧图标宽度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_HEIGHT, 26); // 全局设置左侧图标高度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.LEFT_IMAGE_PADDING, 5); // 全局设置左侧图标padding

      /**
       * 右侧设置
       */
      AppStorage.setOrCreate<string>(TitleGlobalAttribute.RIGHT_TYPE, TitleType.NONE); // 全局设置右侧视图类型
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_LEFT_PADDING, 5); // 全局设置右侧视图左内间距
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_RIGHT_PADDING, 15); // 全局设置右侧视图右内间距
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.RIGHT_TEXT_COLOR, "#000000"); // 全局设置右侧文字颜色
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_TEXT_SIZE, 16); // 全局设置右侧文字大小
      AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.RIGHT_IMAGE_RESOURCE,
        $r('app.media.ic_more')); // 全局设置左侧图标
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_WIDTH, 26); //  全局设置右侧图标宽度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_HEIGHT, 26); // 全局设置右侧图标高度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.RIGHT_IMAGE_PADDING, 5); // 全局设置右侧图标padding

      /**
       * 居中设置
       */
      AppStorage.setOrCreate<string>(TitleGlobalAttribute.CENTER_TYPE, TitleType.TEXT); // 全局设置居中视图类型
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_LEFT_PADDING, 30); // 全局设置居中视图左内间距
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_RIGHT_PADDING, 30); // 全局设置居中视图右内间距
      AppStorage.setOrCreate<ResourceColor>(TitleGlobalAttribute.CENTER_TEXT_COLOR, "#000000"); // 全局设置居中文字颜色
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_TEXT_SIZE, 16); // 全局设置居中文字大小
      AppStorage.setOrCreate<ResourceStr | PixelMap>(TitleGlobalAttribute.CENTER_IMAGE_RESOURCE,''); // 全局设置居中图标
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_WIDTH, 26); //  全局设置居中图标宽度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_HEIGHT, 26); // 全局设置居中图标高度
      AppStorage.setOrCreate<Length>(TitleGlobalAttribute.CENTER_IMAGE_PADDING, 5); // 全局设置居中图标padding

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1946861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse&#xff0c;下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…

初学C++30道选择题带答案(1)

题目 (31) 下面程序的输出是 A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2 #include <iostream> using namespace std; main() { int a-1,b4,k;k(a<0)&&(!(b--<0)); cout<<k<<a<<b;} (32)以下…

Nginx 怎样处理请求的并发控制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的并发控制&#xff1f;一、并发控制的重要性二、Nginx 中的并发连接限制三、Nginx 的请求队列四、Nginx 的限流机制五、Nginx 的负载均衡策略…

TypeScript中Interface接口的深度探索与实践

定义接口 在TypeScript中&#xff0c;interface是一个强有力的概念&#xff0c;它用于定义类型签名&#xff0c;特别是对象的结构。接口可以用来描述对象应该有哪些属性、方法&#xff0c;以及这些成员的类型。它们是实现类型系统中“鸭子类型”&#xff08;duck typing&#…

小试牛刀-区块链WalletConnect协议数据解密

目录 1.编写目的 2.工作原理 3.分析过程 3.1 websokcet连接 3.2 连接后的消息 3.3 获取sym_key 3.4 解密数据 Welcome to Code Blocks blog 本篇文章主要介绍了 [WalletConnect协议数据解密] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 1.编写目的 最近在…

<HMI><汇川>在汇川IT7000系列的HMI(触摸屏)中,如何为你的画面设置全局样式?

前言 汇川的HMI软件是使用了Qt来编写的,因此在汇川的HMI程序编写过程,是支持使用qt的样式来自定义部件样式的,即qss格式。 概述 汇川的软件本身提供三个系统的style样式,我们可以直接使用,但是,如果系统提供的样式不符合你的需求,那么你可以对其进行修改,或者自己新建…

计算机网络-配置路由器ACL(访问控制列表)

配置访问控制列表ACL 拓扑结构 拓扑结构如下&#xff1a; 要配置一个ACL&#xff0c;禁止PC0访问PC3&#xff0c;禁止PC4访问PC0&#xff0c;其它正常。 配置Router0 配置接口IP地址&#xff1a; interface fastethernet 0/0 ip address 192.168.1.1 255.255.255.0 no shu…

MongoDB教程(二十二):MongoDB固定集合

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、固定集…

基于JSP的课程思政元素收集遴选系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JSPJavaBeansServlet 工具&#xff1a; IDE&#xff08;如Eclipse或IntelliJ IDEA&#xff…

vue上传Excel文件并直接点击文件列表进行预览

本文主要内容&#xff1a;用elementui的Upload 组件上传Excel文件&#xff0c;上传后的列表采用xlsx插件实现点击预览表格内容效果。 在项目中可能会有这样的需求&#xff0c;有很多种方法实现。但是不想要跳转外部地址&#xff0c;所以用了xlsx插件来解析表格&#xff0c;并展…

基于FPGA + Qt + OpenCv的人脸考勤系统

一:界面设计 客户端界面设计: 服务端界面设计: 简介:首先服务端在注册界面先注册人脸,然后客户端界面进行人脸识别,将人脸识别的图像发送给服务端以后,服务端在图像数据库里寻找人脸比对,若有数据就将查询到的个人信息发送给客户端,并在客户端显示,查询界面是用来查…

Hadoop、Hive、HBase、数据集成、Scala阶段测试

姓名&#xff1a; 总分&#xff1a;Hadoop、Hive、HBase、数据集成、Scala阶段测试 一、选择题&#xff08;共20道&#xff0c;每道0.5分&#xff09; 1、下面哪个程序负责HDFS数据存储&#xff08; C &#xff09; A. NameNode B. Jobtracher C. DataNode D. Sec…

机器学习数学基础(2)--最大似然函数

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 在机器学习和统计学领域中&#xff0c;似然函数&#xff08;Likelihood Function&#xff09;是一个至关重要的概念。…

苍穹外卖跟练项目前端localhost打不开页面启动nginx报错[alert] could not open error log file问题解决

一、安装路径为纯英文 查看自己的安装路径是否为纯英文环境&#xff0c;刚开始下载的资料包是有中文路径的&#xff0c;要将资料包中的nginx-1.20.2文件夹复制一份然后粘贴到一个新建的纯英文的目录&#xff0c;我这里装到的是 D:\Program Files\nginx-1.20.2 二、删掉logs文件…

解决Pycharm找不到conda可执行文件

解决&#xff1a; 在 ‘Conda 可执行文件’ 的输入框里面&#xff0c;找到并选中 anaconda\library\bin 路径下的“ conda.bat ” ,再点击‘ 加载环境 ’&#xff0c;即可出现 ‘ 使用现有环境 ’ 的输入框&#xff0c;如图所示。

java8函数式编程学习(二):optional,函数式接口和并行流的学习

简介 java8函数式编程中optional的简单使用&#xff0c;函数式接口的了解&#xff0c;并行流的使用。 optional 可以更优雅的来避免空指针异常。类似于包装类&#xff0c;把具体的数据封装到optional对象内部&#xff0c;然后使用optional的方法去操作封装好的数据。 创建o…

Linux shell编程学习笔记67: tracepath命令 追踪数据包的路由信息

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容&#xff0c;Linux和基于Linux的操作系统&#xff0c;提供了很多的网络命令&#xff0c;今天我们研究tracepath命令。 Tracepath 在大多数 Linux 发行版中都是可用的。如果在你的系统中没有预装&#xff0c;请根据你的…

四、GD32 MCU 常见外设介绍 (7) 7.I2C 模块介绍

7.1.I2C 基础知识 I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的两线式串行总线&#xff0c;用于内部IC控制的具有多端控制能力的双线双向串行数据总线系统&#xff0c;能够用于替代标准的并行总线&#xff0c;连接各种集成 电路和功能模块。I2C器件能够减少电…

Optima: 一个用于 Tapestri 平台的单细胞多组学数据分析的开源 R 包

分子条形码技术的最新进展使得在单细胞水平进行下一代转录组测序成为可能&#xff0c;例如10 Genomics Chromium和DropSeq。此外&#xff0c;CITE-seq 的出现使得可以在对单个细胞进行转录组分析的基础上同时对表面蛋白进行分析。同时&#xff0c;为了表征 DNA 和蛋白质谱&…

Harmony Next -- 图片选择库:宫格展示、全屏预览

hm_image_select_view OpenHarmony三方库中心仓&#xff1a;https://ohpm.openharmony.cn/#/cn/detail/image_select_view 介绍 Harmony Next 图片选择库&#xff0c;可设置最大选择数量、单行显示数量、横向竖向间隔&#xff1b;点击图片后全屏预览 软件架构 Harmony nex…