鸿蒙开发超好用的 UI 组件和工具类库 BasicLibrary

大家好,我是 V 哥。你在学习HarmonyOS NEXT 开发吗,今天 V 哥给你推荐一款超好用的三方库BasicLibrary,BasicLibrary 是一个基于 API 11 封装的基本库,旨在提升鸿蒙开发效率。它包含了一些常用的 UI 组件和实用工具类,未来计划将其打造成一个通用的 UI 组件和基本工具组件库。

安装

要安装 BasicLibrary,可以使用以下命令:

bash 复制代码
ohpm install @peakmain/library

BasicLibrary 功能有哪些

先来看一下BasicLibrary都提供了哪些功能,一目了然。

案例演示

List 列表

先来看一个 List 列表,支持下拉刷新和加载更多。

1. 导入依赖
javascript 复制代码
import { PkList } from '@peakmain/library/Index'
2. 参数
3. 看一个例子
typescript 复制代码
import { NavBar, PkList } from '@peakmain/library/Index'

@Entry
@Component
struct ListPage{
  @State
  arr: String[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
  @State
  page: number = 1 // 第几页
  pageSize: number = 2 //共几页

  async getNewData(isRefresh:boolean){
    console.log("执行了getNewData..." + isRefresh)
    const tmp = await this.getData(isRefresh)
    if (isRefresh) {
      this.arr = tmp
    } else {
      this.arr.push(...tmp)
    }
  }

  getData(isRefresh:boolean){
    console.log("执行了getData..." + isRefresh)
    return new Promise<String[]>((resolve) => {
      let tmp: String[]
      setTimeout(() => {
        if (!isRefresh) {
          this.page++
          tmp = ['new_0', 'new_1', 'new_2', 'new_3', 'new_4', 'new_5']
        } else {
          this.page = 1
          tmp = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
        }
        console.log("当前页数:" + this.page)
        resolve(tmp); // 执行完成后调用 resolve
      }, 2000);
    });
  }

  @Builder
  renderItem(item: object){
    Column(){
      Text('' + item)
        .width('100%')
        .height(100)
        .fontSize(16)
        .textAlign(TextAlign.Center)
        .borderRadius(10)
        .backgroundColor(Color.White)
    }
    .
    margin({
      bottom: 10,
      left: 10, right: 10
    })
      .border({
        width: 0.5,
        color: Color.Red
      })
      .borderRadius(20)
  }

  build(){
    Column()
    {
      NavBar({
        title: "下拉刷新与加载更多"
      })
      PkList({
        dataSource: this.arr,
        finished: this.page >= this.pageSize,
        onRefresh: async () => {
          await this.getNewData(true)
        },
        renderItem: (item) => {
          this.renderItem(item)
        },
        onLoad: async () => {
          await this.getNewData(false)
        }
      }).margin({
        bottom: 20
      })
    }
  }
}

Skeleton骨架屏

用于在内容加载过程中展示一组占位图形。

导入依赖
typescript 复制代码
import {  PkSkeleton } from '@peakmain/library';
参数
示例代码
typescript 复制代码
PkSkeleton({
  count: 3,
  showAvatar: this.showAvatar
})

权限工具类

导入依赖

typescript 复制代码
import PermissionUtils from '@peakmain/library/src/main/ets/utils/PermissionUtils';

创建request对象

typescript 复制代码
request: PermissionUtils = new PermissionUtils()

检查是否有权限

方法如下:

typescript 复制代码
this.request.hasPermissions(权限数组)

示例如下

typescript 复制代码
async checkPermission(){
  let result =
    await this.request.checkPermissions(['ohos.permission.LOCATION', "ohos.permission.APPROXIMATELY_LOCATION"])
  if (result) {
    promptAction.showToast({ message: "已授予位置权限" })
  }
  return result
}

请求权限

typescript 复制代码
this.request.requestPermission(权限数组)

示例如下

typescript 复制代码
 result = await this.request.requestPermission(['ohos.permission.LOCATION', "ohos.permission.APPROXIMATELY_LOCATION"])
if (result) {
  this.sLocation = true
  promptAction.showToast({ message: "已授予位置权限" })
} else {
  this.sLocation = false
  promptAction.showToast({ message: "已拒绝位置权限" })
}

打开应用权限设置页面

typescript 复制代码
this.request.openPermissionsInSystemSettings()

以上简单给大家做了个演示,BasicLibrary 的更多功能,可以详细参考文档哦。

gitee 上获取 BasicLibrary

在gitee 上搜索 peakmain/BasicLibrary,即可获取该组件的的全部内容。关注威哥爱编程,一起学鸿蒙开发呀。

相关推荐
梦想不只是梦与想4 小时前
鸿蒙 云测试:上架测试流程
harmonyos·鸿蒙·云测试
传奇开心果编程7 小时前
【ArkUI 练中学】第15课:UI 界面设计与实战
学习·ui·华为·harmonyos
HwJack207 小时前
【HarmonyOS开发小实践】ArkUI 动画系统属性动画、显式动画与路径动画
ui·性能优化·harmonyos
传奇开心果编程9 小时前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
李游Leo9 小时前
HarmonyOS 7 实战开发 05:把页面做到可上线状态
ios·harmonyos
传奇开心果编程10 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
xy345312 小时前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
zhangfeng113312 小时前
ATK(华为算子测试平台)详细介绍 CANN(Compute Architecture for Neural Networks,神经网络计算架构
人工智能·华为·ai编程·npu·cann
贾伟康12 小时前
【HarmonyOS 7新能力|043】可变字体工程封装:把接入逻辑放进可维护的分层结构
harmonyos·arkts·arkui·ui设计·可变字体
HarmonyOS_SDK12 小时前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos