• Stars
    star
    164
  • Rank 230,032 (Top 5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

KtKit 小巧而实用,用 Kotlin 语言编写的工具库(长期更新中)

KtKit

KtKit 小巧而实用,用 Kotlin 语言编写的工具库(长期更新中)
KtKit 在线阅读:https://ktkit.hi-dhl.com

       

如果图片无法查看,请点击这里查看 图例

关于 KtKit

KtKit 是用 Kotlin 语言编写的工具库,包含了项目中常用的一系列工具,是 Jetpack ktx 系列的补充,涉及到了很多从 Kotlin 源码、Jetpack ktx、anko 等等知名的开源项目中学习的技巧,包含了 Kotlin 委托属性、高阶函数、扩展函数、内联、注解的使用等等,再次感谢以下项目提供的思路。

但是目前还不是很完善,正在陆续将一些常用的功能,结合着 Kotlin 的高级函数的特性,不仅让代码可读性更强,使用更加简单,而且还可以帮助我们解决项目中常见的问题。

Download

正式版本: 此版本包含稳定版本的 API

Maven Central

// Project 级别的 `build.gradle`
allprojects {
    repositories {
        mavenCentral()
    }
}

// 模块级 `build.gradle`
dependencies {
    implementation "com.hi-dhl:ktkit:${ktkitVersion}"
}

快照版本: 此版本包含最新的 API,版本号点击 snapshots 前往查看

// Project 级别的 `build.gradle`
allprojects {
    repositories {
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
    }
}

// 模块级 `build.gradle`
dependencies {
    implementation "com.hi-dhl:ktkit:${ktkitVersion}"
}

如果这个仓库对你有帮助,请在仓库右上角帮我 star 一下,非常感谢你的支持,同时也欢迎你提交 PR ❤️❤️❤️

项目中引用了 spotless 插件,执行 ./gradlew spotlessApply 会将 Java 、Kotlin 、xml 、gradle 、md 、gitignore 等等文件按照官方标准去格式化。这也是 Google 提交代码的时候,推荐的方式。

如何使用

在 Activity 或者 Fragment 中获取传递过来的参数

以下两种方式根据实际情况使用即可

// 方式一: 不带默认值
private val userPassword by intent<String>(KEY_USER_PASSWORD)

// 方式二:带默认值:如果获取失败,返回一个默认值
private val userName by intent<String>(KEY_USER_NAME) {
    "公众号:ByteCode"
}

Activity 之间跳转 及传递参数

以下两种方式根据实际情况使用即可

// 方式一
context.startActivity<ProfileActivity> {
    arrayOf(
            KEY_USER_NAME to "ByteCode",
            KEY_USER_PASSWORD to "1024",
            KEY_PEOPLE_PARCELIZE to PeopleModel("hi-dhl")
    )
}

// 方式二
context.startActivity<ProfileActivity>(
        KEY_USER_NAME to "ByteCode",
        KEY_USER_PASSWORD to "1024"
)

Activity 之间跳转 及传递参数 和 回传结果 以下两种方式根据实际情况使用即可

// 方式一
context.startActivityForResult<ProfileActivity>(KEY_REQUEST_CODE,
        KEY_USER_NAME to "ByteCode",
        KEY_USER_PASSWORD to "1024",
        KEY_PEOPLE_PARCELIZE to PeopleModel("hi-dhl")
)

// 方式二
context.startActivityForResult<ProfileActivity>(KEY_REQUEST_CODE) {
    arrayOf(
            KEY_USER_NAME to "ByteCode",
            KEY_USER_PASSWORD to "1024",
            KEY_PEOPLE_PARCELIZE to PeopleModel("hi-dhl")
    )
}

回传结果

// 方式一
setActivityResult(Activity.RESULT_OK) {
   arrayOf(
            KEY_RESULT to "success"
    )
}
                    
// 方式二
setActivityResult(
        Activity.RESULT_OK,
        KEY_RESULT to "success",
        KEY_USER_NAME to "ByteCode"
)

Fragment 跳转 及 传递参数

// 方式一
fun newInstance1(): Fragment {
    return LoginFragment().makeBundle(
            ProfileActivity.KEY_USER_NAME to "ByteCode",
            ProfileActivity.KEY_USER_PASSWORD to "1024",
            ProfileActivity.KEY_PEOPLE_PARCELIZE to PeopleModel("hi-dhl")
    )
}

// 方式二
fun newInstance2(): Fragment {
    return LoginFragment().makeBundle {
        arrayOf(
                KEY_USER_NAME to "ByteCode",
                KEY_USER_PASSWORD to "1024",
                KEY_PEOPLE_PARCELIZE to PeopleModel("hi-dhl")
        )
    }
}

一行代码实现点击事件,避免内存泄露

KtKit 提供了常用的三个 API:单击事件、延迟第一次点击事件、防止多次点击

单击事件

view.click(lifecycleScope) { showShortToast("公众号:ByteCode" }

延迟第一次点击事件

// 默认延迟时间是 500ms
view.clickDelayed(lifecycleScope){ showShortToast("公众号:ByteCode" }

// or
view.clickDelayed(lifecycleScope, 1000){ showShortToast("公众号:ByteCode") }

防止多次点击

// 默认间隔时间是 500ms
view.clickTrigger(lifecycleScope){ showShortToast("公众号:ByteCode") }

// or
view.clickTrigger(lifecycleScope, 1000){ showShortToast("公众号:ByteCode") }

更多 API 使用方式点击这里前往查看 在线文档

联系我

  • 个人微信:hi-dhl
  • 公众号:ByteCode,包含 Jetpack ,Kotlin ,Android 10 系列源码,译文,LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等一系列文章


最后推荐我一直在更新维护的项目和网站:

  • 计划建立一个最全、最新的 AndroidX Jetpack 相关组件的实战项目 以及 相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看:AndroidX-Jetpack-Practice

  • LeetCode / 剑指 offer / 国内外大厂面试题 / 多线程 题解,语言 Java 和 kotlin,包含多种解法、解题思路、时间复杂度、空间复杂度分析

  • 最新 Android 10 源码分析系列文章,了解系统源码,不仅有助于分析问题,在面试过程中,对我们也是非常有帮助的,仓库持续更新,欢迎前去查看 Android10-Source-Analysis

  • 整理和翻译一系列精选国外的技术文章,每篇文章都会有译者思考部分,对原文的更加深入的解读,仓库持续更新,欢迎前去查看 Technical-Article-Translation

  • 「为互联网人而设计,国内国外名站导航」涵括新闻、体育、生活、娱乐、设计、产品、运营、前端开发、Android 开发等等网址,欢迎前去查看 为互联网人而设计导航网站

License

More Repositories

1

PokemonGo

神奇宝贝 (PokemonGo) 基于 Jetpack + MVVM + Repository 设计模式 + Data Mapper + Kotlin Flow 的实战项目,如果这个仓库对你有帮助,请仓库右上角帮我 star 一下,非常感谢。
Kotlin
1,595
star
2

AndroidX-Jetpack-Practice

本仓库致力于建立最全、最新的的 AndroidX Jetpack 相关组件的实践项目 以及组件对应的分析文章(持续更新中)如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
1,499
star
3

Binding

Simple API implement DataBinding and ViewBinding. 简单的 API 实现 DataBinding 和 ViewBinding,欢迎 star
Kotlin
426
star
4

Leetcode-Solutions-with-Java-And-Kotlin

LeetCode 系列题解, 在线阅读 https://offer.hi-dhl.com
Kotlin
423
star
5

ComposingBuilds-vs-buildSrc

Composing builds 和 buildSrc 优势劣势对比,仓库提供了 buildSrc 和 Composing builds 两个构建脚本,下文有使用方法,如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
406
star
6

Android10-Source-Analysis

致力于分享一系列 Android 10 系统源码,持续更新中...... 如果对你有帮助,请在右上角 star 一下,感谢
355
star
7

SyncKit

将本地的项目同步到远程设备,本地写代码,远程编译,将编译的结果同步到本地
Kotlin
201
star
8

Technical-Article-Translation

本仓库致力于致力于分享一系列精选国外的技术文章(持续更新)
181
star
9

JProgressView

一个灵活的进度条,支持图形:圆形、圆角矩形、矩形等等,陆续会添加更多的图形,如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
76
star
10

JDataBinding

JDataBinding 是基于 DataBinding 封装的基础库,持续更新中 ...... 如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
75
star
11

fast_guides

10分钟入门Shell脚本编程
Shell
50
star
12

MAD-Skills

Google 近期发布了 MAD Skills 新系列教程,旨在帮助开发者使用最新的技术,开发更好的应用程序,将会包含(双语视频、文章、案例、源码)
50
star
13

DeviceMonitorPlugin

解决在Android Studio 3.2找不到Android Device Monitor工具
Java
42
star
14

HarmonyPractice

这个仓库主要用于演示 ArkTS 语法和 鸿蒙组件的使用,以及鸿蒙的实战项目
Objective-C
36
star
15

DebugApkSmali

基于Smali文件 Android Studio 动态调试 APP
Smali
35
star
16

screenVideo

screenVideo是一个通用的视频截图工具,目前已经适配大部分机型,对于个别机型不能使用的欢迎issuses
Java
13
star
17

KtPractice

这个仓库用于实践和测试 Kotlin 、 Java 性能 和 新语法相关的代码案例,正在陆续添加新的案例。欢迎 star
Kotlin
13
star
18

AOSP-PackageInstaller

系统安装器PackageInstaller(7.1.2、8.1.0、9.0.0、10.0.0)相关的源码
12
star
19

hi-dhl

11
star
20

Leetcode-Solution-CPP-C

LeetCode / 剑指 offer 系列题解, 在线阅读 https://offer.hi-dhl.com
C++
5
star
21

PersonalBlog

personal blog
HTML
1
star