![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kotlin 笔记
文章平均质量分 82
Junerver
一位Android开发者,很菜!
展开
-
如何在 Android 中录制屏幕内容,并以H.264数据流形式发送(屏幕广播)
不同于普通的动态权限申请,屏幕录制的权限在每次使用 App 时都需要重新申请一次。在 回调中保存 与 ,这两个参数将会在后续用于实例化 对象2. 创建 MediaCodec 编码器3. 创建虚拟显示器 VirtualDisplay其中参数有如下几种:一般来说用 VIRTUAL_DISPLAY_FLAG_PUBLIC 即可。大致流程如下:Demo代码仓库地址: junerver/TestCaptureAndRecord...原创 2022-07-01 11:19:13 · 1532 阅读 · 0 评论 -
在 Kotlin 中巧妙的使用 DSL 封装 SpannableStringBuilder
上一篇文章我们介绍了如何在 kotlin 优雅的封装匿名内部类(DSL、高阶函数),其中我还算详细的介绍了在 Kotlin 中如何使用 DSL,本文可以看作是对上一篇文章中 DSL 的一个实战。源从何来在 Android 开发中 Spannable 实现富文本显示,也算是一个比较常见的使用场景,例如在登录页显示《隐私政策》、《服务协议》,通常这是一个有自定义颜色与点击事件的 Span,使用起来大致需要写如下代码:private fun agreePrivate() { val tv .原创 2022-02-21 18:07:05 · 2191 阅读 · 0 评论 -
如何在 kotlin 优雅的封装匿名内部类(DSL、高阶函数)
匿名内部类在 Java 中是经常用到的一个特性,例如在 Android 开发中的各种 Listener,使用时也很简单,比如://lambdabutton.setOnClickListener(v -> { //do some thing});//匿名内部类button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //do原创 2022-02-18 15:57:42 · 1466 阅读 · 0 评论 -
Compose学习笔记2 - LaunchedEffect、状态与 状态管理
在 Compose 中使用协程Kotlin 中协程有多好用,想必不用我多说了。方便的构建、简洁的切换协程语法、await函数与join函数,尤其是在 lifecycle 扩展出现之后,在 Activity 与 Fragment 中可以通过类似 lifecycleScope.launch { } 这样的语法更方便的使用协程。之前我们介绍过,Compose 是 FP 风格的,UI是通过一个个Composable函数组合在一起形成的,自然不能用lifecycleScope.launch { },那么在 Com原创 2022-02-15 13:43:38 · 3532 阅读 · 0 评论 -
Compose学习笔记1-compose、state、flow、remember
新建一个 compose 项目开始前,请下载最新版本的 Android Studio Arctic Fox,然后使用 Empty Compose Activity 模板创建应用。我们先看看在 app/build.gradle 中是如何配置使用 compose 的。android{ buildFeatures { // viewbinding 之类的功能也需要在此开启 compose true } composeOptions {原创 2022-02-12 10:48:31 · 3920 阅读 · 0 评论 -
Kotlin Koans 学习笔记 —— Unit 5
Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 2Kotlin Koans 学习笔记 —— Unit 3Kotlin Koans 学习笔记 —— Unit 436 扩展函数fun task36(): List<Boolean> { fun Int.isEven():Boolean {return this%2 ==0 } //偶数 val isOdd: Int.() -> Boolean = { this%原创 2021-09-23 09:56:09 · 266 阅读 · 1 评论 -
更优雅的使用回调函数 —— Kotlin 协程
简断截说,上代码!举例:fun login(name:String,pass:String){ HttpMethods.webService.login(name,pass){ override fun onSuccess(bean: LoginBean) { connect(bean.token) } override fun onError(e: Exception) { } }fun connect(token:String){ ......//调用方法,从原创 2021-01-06 14:23:13 · 1711 阅读 · 0 评论 -
Kolin协程与Retrofit 2.6.1完美合璧
协程有多么好用相比我们不需要再多赘述了,协程如何搭配旧版本的 Retrofit 使用相比大家也在网上看到过很多文章,大致如下://扩展 await() 函数 private suspend fun <T> Call<T>.await(): T { return suspendCancellableCoroutine { continuation -...原创 2019-08-12 15:07:49 · 3126 阅读 · 2 评论 -
Kotlin协程 ——从 runBlocking 与 coroutineScope 说起
关于协程我们不多阐述,详细内容请查看官方文档,本文只谈谈 runBlocking与 coroutineScope。runBlocking我们先来看看 runBlocking 文档是如何描述该函数的:Runs a new coroutine and blocks the current thread interruptibly until its completion. This funct...原创 2019-08-07 15:10:14 · 23047 阅读 · 5 评论 -
Kotlin协程 —— 今天说说 launch 与 async
上文我们已经知道了,在没有CoroutineScope时,我们可以通过实现该接口,或者使用 runBlocking 方法,来使我们的程序可以调用 suspend 挂起函数。今天我们来看看 Builders.common 下的几个构建协程函数:launch 与 async 函数launch 函数在上一篇文章中我们已经接触过数次 launch 函数了,他的主要作用就是在当前协程作用域中创建一个新...原创 2019-08-09 10:38:01 · 15778 阅读 · 2 评论 -
JetPack 初见 - 使用 LiveData 实现组件之间数据共享
18年谷歌退出了新的开发套件 JetPack (喷气背包),本文将浅显的讨论一下其中 LiveData 的一些使用方法与注意事项。1. LiveData 是什么?LiveData 是一个可观察的数据持有者类。与常规observable不同,LiveData是生命周期感知的,这意味着它关注其他应用程序组件的生命周期,例如 Activity,Fragment 或 Service。这确保了 Liv...原创 2019-07-25 11:11:59 · 3134 阅读 · 0 评论 -
Kotlin Koans 学习笔记 —— Unit 4
Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 2Kotlin Koans 学习笔记 —— Unit 3原创 2019-01-17 09:30:19 · 260 阅读 · 0 评论 -
都是常规操作
经过上文的介绍,想必你对 Kotlin 有了一定的兴趣了吧,Kotlin 简化了很多在 Java 里需要写大量代码的操作,稍安勿躁,我们来看看都有哪些 “常规操作”。集合对于集合,想必你已经熟悉得不能再熟了,我就不废话了,我们来看看在 Kotlin 里怎么使用集合吧。上文中我们曾经提到过,在 Kotlin 中 使用 var val 来声明 可变变量 只读变量。类似的,在集合中也存在...原创 2018-06-29 15:56:39 · 388 阅读 · 0 评论 -
每次都有点新收获
转载请标明作者与出处:https://www.jianshu.com/p/91c6f28adb31遍历集合、控制流、伴生对象遍历集合在 Java 中我们经常需要遍历一些数组或者集合时我们常用的操作是这样的:List<String> list = new ArrayList();list.add("1");list.add("2");list.a...原创 2018-06-29 15:57:12 · 198 阅读 · 0 评论 -
简单即是美
有的时候我们经常会希望一个函数能返给我们多个结果,例如曾经我做过一个小功能传入PM2.5的值,返回当前PM2.5严重程度的介绍以及需要显示的颜色代码。使用data关键字来告知系统这是一个数据类,其主构造函数需要至少有一个参数,如果生成的类需要含有一个无参的构造函数,则所有的属性必须指定默认值。是的,虽然我们有大量的插件来帮助我们简化这些创建过程,但是满天的。需要注意的是,数据类默认为我们实现了主构造函数的参数解构声明,所以我们的解构声明只能接着主构造函数的序号往后使用。...原创 2018-06-29 15:58:22 · 546 阅读 · 0 评论 -
委托模式 - 一个管理人员的一天
委托模式:委托模式是软件设计模式中的一项基本技巧。 在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。举个例子,一个公司有普通员工、财务人员、管理者三个角色,管理者可以调用普通员工进行某项工作,可以派财务人员给某个员工开支。可以看出其中管理者并不会进行某项具体的工作,而是由各个人员来完成各自的工作。我们可以指派管理者去做某项工作,或是...原创 2018-07-02 08:36:02 · 262 阅读 · 0 评论 -
Android 仿微信录制短视频(不使用 FFmpeg)
转载请标明出处与作者:https://www.jianshu.com/p/2cb7b0110fde项目中原本就有录制短视频的功能,使用的是 # qdrzwd/VideoRecorder 这个项目,但是该项目不支持 targetSdkVersion 22以上的版本,而现在各大市场都要求 targetSdkVersion 必须要26以上了,所以急需找到替代的方案。分析解决方法大致上有如下三种......原创 2018-11-02 14:30:04 · 12006 阅读 · 21 评论 -
回调函数在-Kotlin-里的奇妙玩法
本文涉及到的知识点有扩展函数、Lambda表达式的高级应用在Android6.0之后系统加强了对敏感权限的管理,一些敏感权限必须要通过动态权限申请来获得,本文的内容就从这里展开;我使用的是网上比较流行的一个权限申请框架#/,当然本文的重点并不是如何使用这个库。如上所述,我们在一个应用中可能会有很多需要申请不同权限的位置,我们应该为每处需要敏感权限的位置做类似的处理。虽然我们使用了RxPermissions,但是还是需要在用户拒绝的位置写大量重复的弹窗提示代码,这一点也不优雅。...原创 2018-11-12 20:24:13 · 1762 阅读 · 1 评论 -
Kotlin Koans 学习笔记 —— Unit 1
最近在学习 Kotlin 将官方出的练习题做了一遍,将答案以及做题的时候的一些思考记录于此:开始执行:git clone git@github.com:Kotlin/kotlin-koans.git,使用 Idea 打开项目。1 转换Java代码fun task1(collection: Collection<Int>): String { val sb = Strin...原创 2019-01-02 09:01:51 · 332 阅读 · 0 评论 -
Kotlin Koans 学习笔记 —— Unit 2
Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans第二单元讲的主要是集合在Kotlin中的各种高级操作。13 介绍fun Shop.getSetOfCustomers(): Set&lt;Customer&gt; { // Return a set containing all the customers of this shop return t...原创 2019-01-02 11:40:35 · 285 阅读 · 0 评论 -
Kotlin Koans 学习笔记 —— Unit 3
Kotlin Koans 学习笔记 —— Unit 1Kotlin Koans 学习笔记 —— Unit 225 Comparison修改 MyDate.kt 实现 Comparable 接口data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) :Comparable&amp;lt;MyDate&amp;gt;{ ...原创 2019-01-07 09:10:38 · 246 阅读 · 0 评论 -
初识Kotlin
这是一个新文集,专门用于记录学习 Kotlin 时遇到的一些问题或者心得体会。由于个人水平有限,文章难免会有错误之处,望大佬不吝指教。Kotlin 由来已久,在17年被谷歌纳为了 Android 开发的一级语言,相必大家也多少有些许了解。在开发工作中,还没能正式的将项目来使用 Kotlin 开发,但是了解 Kotlin 显然已是迫在眉睫了。旧项目引入 Kotlin 开发如果...原创 2018-06-08 09:09:37 · 518 阅读 · 0 评论