优先使用 KTX 库 | MAD Skills

本文介绍了如何在 Android 开发中利用 KTX 库提升代码的可读性和简洁性,涵盖核心库、Jetpack API、LiveData、Activity/Fragment、ViewModel 等方面的扩展函数和实用功能。KTX 提供了众多 Kotlin 扩展,简化了 Android 平台 API 的使用,如使用 core-ktx 实现异步编辑操作,以及在 LiveData 上的 map、switchMap 等操作。
摘要由CSDN通过智能技术生成


在 Kotlin 中使用 Android 的 Java API 时,您会迅速意识到这样的做法失去了 Kotlin 语言简单有趣的特点。与其您亲自去编写这些 API 的 wrapper 和扩展函数,不如了解一下 Jetpack KTX 库。目前为止,已有超过 20 个库拥有对应的 KTX 版本,这些 KTX 库实现了常用的 Java 版本 API 的功能,包括 Android 平台 API、ViewModels、SQLite,甚至还有 Play Core。本文会介绍目前可用的 KTX API 并深入其中去分析它们是如何实现的。

可发现性

为了提高 ktx 功能的可发现性,作为最佳实践,当某个 ktx 库可用时,总是导入并使用它。由于 -ktx 传递依赖非 ktx 软件包,您不需要添加其他软件包。举个例子,使用 viewmodel 时,您可以看到两个软件包: viewmodel 和 viewmodel-ktx。-ktx 软件包会包含 Kotlin 的扩展:

// 获取最新 Lifecycle 库的版本信息 
// https://developer.android.google.cn/jetpack/androidx/releases/lifecycle
def lifecycle_version = "2.3.1"

// Java 实现
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"

// Kotlin 实现
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

始终导入 -ktx 软件包

要使用 Android 平台 API 的 Kotlin 扩展,导入 core-ktx 软件包即可。

// 获取最新 Core 库的版本信息
// https://developer.android.google.cn/jetpack/androidx/releases/core3def corektx_version = "1.3.2"

implementation "androidx.core:core-ktx:$corektx_version"

大部分 ktx 功能使用 扩展函数 实现的,您可以通过 Android Studio 中的自动完成功能找到它们。

其他功能,像 Color 类上可以使用的 解构操作符重载 功能,可以访问 KTX 扩展程序列表 查看目前是否可以使用。

平台 API — core-ktx

core-ktx 为来自 Android 平台的 API 提供了常用的 Kotlin 功能。

例如,您正在使用 SharedPreferences,当您想去更新一个值,不需要像使用 Java 一样执行 3 个调用,您只需要执行一个调用即可:

/* Copyright 2020 Google LLC.  
   SPDX-License-Identifier: Apache-2.0 */

- val editor = sharedPreferences.edit()
- editor.putBoolean(SHOW_DELETED_WORDS_KEY, enable)
- editor.apply()
+ sharedPreferences.edit {
   
+ putBoolean(SHOW_DELETED_WORDS_KEY, enable)
+ }
</
PixiJS 6.5 支持使用 KTX 格式的压缩纹理,使用方法如下: 1. 首先,需要在 HTML 文件中引入 KTXLoader.js,这是一个 PixiJS 的插件,用于加载 KTX 格式的压缩纹理文件。 ```html <script src="https://cdn.jsdelivr.net/npm/pixi.js@6.5.0/dist/pixi.js"></script> <script src="https://cdn.jsdelivr.net/npm/pixi.js-legacy@5.3.4/dist/pixi.js"></script> <script src="https://cdn.jsdelivr.net/npm/@pixi/ktx@2.2.0/dist/pixi-ktx.js"></script> ``` 2. 在代码中使用 KTXLoader 加载 KTX 格式的压缩纹理文件。 ```javascript const app = new PIXI.Application(); document.body.appendChild(app.view); const loader = new PIXI.Loader(); loader.add('texture', 'texture.ktx') .load((loader, resources) => { const texture = resources.texture.texture; const sprite = new PIXI.Sprite(texture); app.stage.addChild(sprite); }); ``` 3. 创建纹理时,需要指定压缩纹理的格式,例如: ```javascript const texture = PIXI.Texture.from('texture.ktx', { format: PIXI.FORMATS.COMPRESSED_RGBA_S3TC_DXT3_EXT }); ``` 其中,`PIXI.FORMATS` 中定义了各种压缩纹理格式。需要根据实际情况选择正确的格式。 4. 使用 KTX 格式的压缩纹理时,需要注意以下几点: - KTX 格式只支持 WebGL 1,不支持 WebGL 2。 - KTX 格式只支持部分浏览器,具体支持情况可以查看 [Can I Use](https://caniuse.com/ktx_texture)。 - KTX 格式相对于非压缩纹理文件,可以减小文件大小,减小 GPU 的负担,提升渲染性能。但是压缩纹理的解压缩过程会消耗一定的 CPU 资源,因此需要根据实际情况进行权衡。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值