GithubHelp home page GithubHelp logo

dylancaicoding / longan Goto Github PK

View Code? Open in Web Editor NEW
559.0 6.0 67.0 740 KB

Probably the best Kotlin utils library for Android. (可能是最好用的 Kotlin 工具库)

License: Apache License 2.0

Kotlin 100.00%
utils kotlin

longan's Introduction

License License

Anurag's github stats

一个兴趣使然的程序“工匠”。有代码洁癖,喜欢封装,对封装有一定的个人见解,有不少个人原创的封装思路。以下是个人封装的开源库,用于搭建开发框架。

UI 相关:

  • ViewBindingKTX,最全面的 ViewBinding 工具,支持各种姿势使用 ViewBinding,替代 ButterKnife 或 KAE,可适配 BRVAH。
  • LoadingStateView,深度解耦标题栏,解耦加载中、加载失败、空布局等缺省页,支持两行代码集成到基类。

工具类相关:

  • Longan,可能是最好用的 Kotlin 工具库,目前有超过 500 个好用的方法和属性。

KV 存储相关:

  • MMKV-KTX,最好用的 MMKV 工具,可以确保类型安全,无需声明 key 常量。
  • DataStoreKTX,最好用的 DataStore 工具,可以确保类型安全,无需声明 key 常量。

埋点相关:

  • Tracker,基于西瓜视频的责任链埋点思路实现的轻量级埋点框架。

掘金有对应讲解封装思路的文章:

longan's People

Contributors

dylancaicoding avatar ilpanda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

longan's Issues

Failed to resolve: com.github.DylanCaiCoding.Longan:longan:1.1.1

Android Studio Dolphin 版本

pluginManagement {
repositories {

    maven { url 'https://maven.aliyun.com/repository/google' }
    maven { url 'https://maven.aliyun.com/repository/public' }
    maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }

    maven { url 'https://www.jitpack.io' }

    gradlePluginPortal()
    google()
    mavenCentral()
}

plugins {
    id 'com.android.application' version '7.3.0'
    id 'com.android.library' version '7.3.0'
    id 'org.jetbrains.kotlin.android' version '1.7.10'
}

}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "FreeSearch"
include ':app'

doOnLifecycle 不执行回调

//AppCompatActivity
//调用
lifecycleOwner.lifecycle.addObserver(object :DefaultLifecycleObserver{
    override fun onResume(owner: LifecycleOwner) {
        logError("11111:onResume")
    }
})

//不调用
doOnLifecycle(onResume = {
    logError("11111:onResume")
}, onPause = {
    logError("11111:onPause")
})

求解???

调用ActivityResult 的拍照API报错

kotlin.UninitializedPropertyAccessException: lateinit property fileProviderAuthority has not been initialized
at com.dylanc.longan.UriKt.getFileProviderAuthority(Uri.kt:42)
at com.dylanc.longan.UriKt.toUri$default(Uri.kt:57)
at com.dylanc.longan.activityresult.SaveToUriLauncher.launchAndSaveToCache(ActivityResultLauncher.kt:68)

已经配置FILE_PROVIDER

checkPermission返回值意义有争议

ActivityCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED
代表没有权限为为true,但仅看checkPermission,惯性思维应该是true为有权限吧

能否进行修改呢?thk

mmkv bug

调用了 removeValueForKey 之后再获取对于的属性,还是之前存的值,因为属性代理做了缓存处理

finishActivity

fun finishActivity(clazz: KClass): Boolean =
activityCache.removeAll {
if (it.javaClass == clazz) it.finish()
it.javaClass == clazz
}
这个函数不执行,Kclass和javaClass并不相等

startIntentSenderLauncher.launch(intentSender) 使用方法

文档中使用方法如下:

val startIntentSenderLauncher = startIntentSenderLauncher {
  if (it.resultCode == Result_OK) {
    // 处理结果
  }
}

startIntentSenderLauncher.launch(intentSender) 

但实际写startIntentSenderLauncher.launch(intentSender) 报错,
Not enough information to infer type variable T
因为这个launch方法是这样的:launch<T:Activity>(intentSender)
很让人疑惑,请指教

Activity跳转问题

看的有点懵,不知道怎么用。
现在我想从A带参数跳到B然后在从B带参数返回A并且finish调B,是怎么使用呢?这样写么?大佬求助
A里:

private val id: String by safeIntentExtras(name")
startActivity<A>("id" to `5)

B里:

private val id: String by safeIntentExtras("id")
finishWithResult("name"` to name)

希望加入一些功能

比如判断图片类型、保存图片到图库等功能
我这边有个颜色的ext, 希望可以加进去
val String.color: Int
get() = try {
Color.parseColor(this)
} catch (e: Exception) {
Color.WHITE
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.