当前位置: 首页 > article >正文

最新 Android 热门开源项目公布

image

这个库借鉴了 iOS 的 JTAppleCalendar,提供了比较齐全的日历视图所需特性,支持定制样式。

GitHub 仓库:kizitonwose/CalendarView

Kyrie

VectorDrawable 和 AnimatedVectorDrawable 的超集。

image

VectorDrawable 提供了像素密度无关性——在任意设备上随意缩放而不损失画质。AnimatedVectorDrawable 在其基础上添加了动画特性。然而,它们有三大缺陷:

  • 无法暂停和继续。

  • 无法在运行时动态创建。

  • 相比 web 上的 SVG,它们仅仅支持少量特性。

Kyrie 提供了 KyrieDrawable 类,支持 VectorDrawable 和 AnimatedVectorDrawable 的所有特性,同时改进了上述缺陷。

GitHub 仓库:alexjlockwood/kyrie

Assent

面向 Kotlin 和 AndroidX,让 Android 的运行时权限控制易于开发。

fun saveImage(bitmap: Bitmap) = runWithPermissions(WRITE_EXTERNAL_STORAGE) {

上面的例子展示了 Assent 提供的简洁紧凑的基于回调的 API。(当然,你还是需要在 AndroidManifest.xml 里声明权限的,否则 Android 总会拒绝相应权限。)

GitHub 仓库:afollestad/assent

ktlint

开箱即用的 Kotlin linter:

  • 零配置。采用官方风格(kotlinlang.org 和 Android Kotlin 风格指南)。

  • 内置格式化功能,类似 Go 语言的 gofmt。

  • 单一可执行 jar 文件,内置所有依赖(当然,你还是需要自备 jvm 的)。

  • 可搭配 maven、gradle、GNU Emacs、Vim 使用。

注意「零配置」的意思是并不提供多种风格选项让你选择,但是你仍然可以通过自行编写规则来自定义 linter 的行为。另外,ktlint 也会遵循 .editorconfig 中的设置。

ktlint 也可搭配 IntelliJ IDEA 使用。不过通常没有这个必要,可以直接使用 IDEA 内置的代码格式化功能(效果和 ktlint 一致)。暂时也没有 vscode 插件,不过可以通过 sonarlint 曲线使用。

官网:ktlint.github.io

mockk

Kotlin 的 mock 测试库,不仅支持常规的单元测试,还支持在真机或模拟器上运行的 instrumented 测试。

mockk 提供了全面、强大的特性,可以 mock 类、对象、私有函数、协程等多种结构(Android P 之前的版本 instrumented 测试有少数特性不支持)。

官网:mockk.io

KOIN

面向 Kotlin 开发者的轻量依赖注入框架。

KOIN 提供了轻量的函数式依赖注入 DSL,无需代码生成和反射。

class Controller(val service : BusinessService)

class BusinessService()val myModule = module {

single { Controller(get()) }

single { BusinessService() }

}class MyApplication : Application() { override fun onCreate(){

super.onCreate()

startKoin {

androidContext(this@MyApplication)

modules(myModule)

}

}

}

官网:https://insert-koin.io/

Firefox Fenix

Firefox Fenix 是 Firefox 的下一代 Android 浏览器,未来将取代 Firefox for Android (其实 Firefox for Android 的开发早已放缓,因为 Mozilla 将更多的精力投入到 Fenix 的开发中)。上个月,Mozilla 在 Google Player 上发布了公测版(仅向报名测试的人员开放下载)。

Firefox Fenix 基于 GeckoView 和 Android components 开发。GeckoView 是 Mozilla 开源的 Android 库,封装了自家的 Gecko 浏览器引擎。


http://www.kler.cn/a/527109.html

相关文章:

  • AI大模型开发原理篇-1:语言模型雏形之N-Gram模型
  • JVM_程序计数器的作用、特点、线程私有、本地方法的概述
  • 详解u3d之AssetBundle
  • DeepSeek-R1 模型及GRPO算法学习
  • 【letta】The Letta Platform LETTA平台
  • 工作总结:压测篇
  • 稀疏混合专家架构语言模型(MoE)
  • 【4Day创客实践入门教程】Day4 迈向高手之路——进一步学习!
  • .cc扩展名是什么语言?C语言必须用.c为扩展名吗?主流编程语言扩展名?Java为什么不能用全数字的文件名?
  • 七、深入了解SpringBoot的配置文件
  • 代随(138):单调栈:一维接雨水
  • 如何将IP切换到海外:详细指南
  • WebSocket使用及优化(心跳机制与断线重连)_websocket timeout
  • IT运维的365天--025 H3C交换机用NTP同步正确的时间
  • PyDeequ库在AWS EMR启动集群中数据质量检查功能的配置方法和实现代码
  • FreeRTOS学习 --- 列表和列表项
  • 数据结构初探:链表之双向链表篇
  • C#面试常考随笔7:什么是匿名⽅法?还有Lambda表达式?
  • Python之如何在Visual Studio Code 中写的python程序打包成可以在Windows系统下运行的.exe程序
  • Vue 3.0打造响应式用户界面的新方式
  • 智慧园区平台系统在数字化转型中的作用与应用前景探究
  • T-SQL语言的区块链
  • 仿真设计|基于51单片机的贪吃蛇游戏
  • 【医学影像 AI】生成式 AI 基础模型 MINIM(2)研究方法
  • 【C++】类和对象(5)
  • 前端学习:Axios Http请求库入门与实战应用