- 博客(14)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 换肤之旅——主题切换
    随着手机应用的成熟发展,市面上的应用已不在以简单的“实现功能”为目标了,它们反而会更加注重用户体验。我们常说的换
2018-08-27 16:46:14
15122
3
原创 如何理解Kotlin泛型中的in和out?
1.引言Kotlin中的泛型使用和java一样,但如果你使用的是kotlin语言开发,你会发现kotlin的泛型会多出两个关键字,分别是in和out。这两个关键字经常让人疑惑,它的字面意思是输入和输出,很难让人联想到java泛型的某个特性。实际上它们在java中是有对应关系的。2.java中的泛型通配符为了更好的理解in、out关键字的作用,我们需要对比java的泛型通配符来看。先定义一个类: public class Stack<E>{ void push(E e){..
2021-01-14 21:08:25
2376
1
原创 Kotlin委托模式入门
1.委托模式委托模式是软件设计模式中的一项基本技巧。简单来说,委托就是接收请求的一方将实现委托给了另一方,在Kotlin的语法结构中,使用by关键字可以直接支持委托模式,不需要编写样板代码。by关键字可以用在类和属性当中,分别表示类委托和属性委托。2.类委托先看一个java中使用委托模式的例子: interface Printer { void printSomething(String something); } static class PrinterD
2020-12-21 22:00:46
217
原创 Kotlin操作符重载入门
引言我们在对自定义类型编写添加、删除、比较等逻辑时,通常需要写很多冗余的代码,有时还需要构建新的对象来完成。在Kotlin中,我们可以借助“操作符重载”来改善程序逻辑,编写更加简洁和优雅的代码。以下是Kotlin中可以重载的操作符:使用操作符重载每个可重载的操作符都对应一个固定名字的函数,例如:“+”对应的函数是plus(),"-"对应的函数是minus(),要重载一个操作符,你需要在fun前面加上operator关键字,操作符重载有以下两种方式:1.使用成员函数重载:fun main() {
2020-12-21 21:56:28
274
原创 一文带你了解Room数据库
1.引言Sqlite的代码写起来繁琐且容易出错,数据和对象之间的映射过程写起来实在无趣,还是不如使用ORM框架来的得心应手。2.Room是什么Room是Goole推出的数据库框架,属于ORM库。Room提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。Room与其他ORM框架对比有以下优点:编译期检查,Room会在编译的时候验证每个@Query和@Entity等,它不仅检查语法问题,还会检查是否有该表,这就意味着几乎没有任何运行时错误的风险较少的模板代码与
2020-12-21 21:41:05
10575
3
原创 一文带你了解ViewModel
Lifecycle库可以有效避免内存泄漏和解决常见的Android生命周期难题。1.引言ViewModel属于lifecycle(生命周期感知型组件)中的一员,通常与LiveData、DataBinding一起使用,它们是MVVM架构的重要成员。ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据。2.ViewModel是什么ViewModel是一个用来管理UI数据的组件。管理UI数据?UI数据不是写在Activity和Fragment中吗?是的。啊不是。。。自ViewMod.
2020-12-21 21:24:34
7068
原创 Kotlin高阶函数入门
1.什么是高阶函数Kotlin中的高阶函数与数学中的高阶函数定义类似,在Kotlin中,高阶函数是将函数用作参数或返回值的函数。通常情况下,函数类型的实例化都用通过lambda表达式来展现。函数以类似 (A,B)->C 的结构声明,例如(Int) -> String表示接受一个类型为Int的参数,并返回一个String的函数。类似的有:(Int,Int)->Long , ()->Unit ,((Int, Int) -> Int)?2.高阶函数的使用2.1 函
2020-11-01 12:13:55
189
原创 Kotlin内联函数入门
1.什么是内联函数使用高阶函数虽然不需要显示的声明对象,但在编译的时候每个入参的函数都会被编译成一个Function对象,这个过程(内存申请,函数出入栈等)会带来一定的性能开销。使用内联函数可以有效的消除这类的开销。内联函数是使用inline关键字声明的函数,在编译时,内联函数不会为参数创建一个函数对象,而是会将实现拷贝到调用的地方。考虑如下代码: fun main(vararg args:String) { for (i in 0 until 10){ sum(i,i+1)
2020-11-01 12:11:37
558
原创 EventBus3.0源码简析
本文主要通过源码讲解EventBus的内部实现,如果还没有使用过该框架的朋友,可以先参考这篇文章Android事件总线(一)EventBus3.0用法全解析
2019-08-28 16:43:12
290
原创 Android框架大全(持续更新)
框架地址备注AutoSize屏幕适配https://github.com/jackmoore/autosize屏幕适配RecycleView通用适配器https://github.com/CymChad/BaseRecyclerViewAdapterHelper日历https://github.com/huanghaibin-dev/CalendarVi...
2019-08-20 09:05:44
633
原创 在Kotlin中使用lambda
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2018-11-07 23:20:41
560
原创 Android 工具类ToastUtil
Toast工具类。方便、快速地弹出Toast具有以下优点: 1. 全局只有一个Toast实例,避免频繁弹框 2. 可通过Aadpter管理Toast开关 3. 子线程可直接调用 public final class ToastUtil { private static ToastAdapter mAdapter; private static T...
2018-07-13 10:18:28
1240
原创 Android 深入理解Handler
&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;Handler对于大家来说并不陌生,它对于android的消息机制来说至关重要。我们经常会通过Handler在子线程中更新UI,当然Handler不仅仅可以更新UI,还
2018-06-27 22:38:19
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人