- 博客(104)
- 资源 (19)
- 问答 (10)
- 收藏
- 关注

原创 我的新书《Android Jetpack开发:原理解析与应用实战》已出版
我为什么要写这本书虽然我长期在CSDN上输出技术文章,也获得了不错的反响,但之前从来没想过要去写一本书,因为我知道写书是一件比写博客要困难许多的事情。技术交流群中许多读者问过我,有没有比较系统的Jetpack相关的学习资料可以推荐,我的回答一直都是官方文档。当我通过官方文档学习Jetpack的时候,发现官方文档上往往是比较简单的小例子,许多读者看完之后依旧不清楚Jetpack组件该如何使用。目前国内外市场上关于讲解Jetpack的书籍寥寥无几,博客中讲解的知识点比较零散导致读者无法将Jetpack与
2022-06-25 10:06:52
5059
47
原创 设计图转Compose代码,Relay帮你轻松搞定
总的来看,Relay是一个好工具,但不是一个那么好的工具。Relay 可以根据UI图生成Compose 代码,包括添加参数、点击事件等Relay 当前不支持支持阴影、文字属性、图层旋转等,并且仅支持Google fonts字体,要求较高时无法满足生成的Compose代码边距比Figma要略大纵使Relay当前存在一些问题,但是在某些情况下确实可以简化Compose应用的开发。总之,AI会写Compose,Relay也会写Compose。所以,你还不学习Compose吗?
2024-01-10 14:49:24
1263
1
原创 谷歌社区说|聊聊Compose跨平台与KMM
上个月JetBrains 发布了 Compose Multiplatform for iOS Alpha 版本,这让许多热爱跨平台的开发者喜出望外。但是也有许多开发者可能还没有了解过Compose Multiplatform和KMM,那么本次分享将通过以下几点来介绍Compose Multiplatform 与KMM,让我们一起体验Kotlin跨平台的魅力。Compose Multiplatform 与 KMM的关系Compose Multiplatform 与 KMM的实践开发者该如何选择。
2023-12-27 10:12:30
844
1
原创 Compose也能开发iOS了,快来体验~
从自身体验来讲,我觉得KMM+Compose-jb 对Android开发者来说是非常友好的,不需要像Flutter那样还需要额外学习Dart语言。所以,你觉得距离Kotlin一统“江山”的日子还会远吗?
2023-05-30 16:37:06
1202
1
原创 Compose跨平台第一弹:体验Compose for Desktop
当然,在Compose For Desktop中还有许多的组件,比如Tooltips、Context Menu等等,这里无法一一介绍,需要我们在使用的时候去实践,我们将在后面的N弹中持续探索...
2023-01-06 15:54:30
1840
3
原创 再探Kotlin 跨平台——迁移Paging分页库至KMM
multiplatform-paging-samples 项目(Demo)的功能是使用github的接口:api.github.com/search/repositories 查询项目,输出项目路径和start数量。也就是github主页上的搜索功能。App运行截图如下所示。这里我们搜索关键词为“MVI”,左侧输出为作者/项目名 右侧为start数量,且实现了分页功能。接着我们来看这个项目结构是怎么样的。
2022-11-17 17:58:18
1554
1
原创 深入理解通知服务NotificationListenerService原理
NotificationListenerService实现对系统通知的监听可以概括为三步:NotificationListenerService将 NotificationListenerWrapper注册到NotificationManagerService中。当有通知被发送时 ,NotificationManagerService跨进程通知到每个NotificationListenerWrapper。
2022-11-16 18:23:44
2735
原创 Android通知监听服务之NotificationListenerService使用篇
利用通知监听服务这一功能,我们可以实现许多诸如 智能手表的消息同步、微信抢红包等功能,如果你有需要,也可以让你女朋友的消息立即弹出,这样就再也不用跪搓衣板啦~下一篇我们将着重深挖监测通知服务的原理,下一篇见~
2022-11-02 12:44:26
6261
3
原创 Kotlin 跨平台开发入门,看这一篇就够了~
KMM 即 Kotlin Multiplatform Mobile 是一个 SDK,旨在简化跨平台移动应用程序的开发。通过KMM开发者可以在 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。上面官方的描述说了这么多,简单的来说就是KMM注重业务逻辑跨平台,和Flutter、Compose完全相反。即使如此,在这个都想着跨别人的年代,KMM也称自己并没有说过不会做UI的跨平台...
2022-10-22 11:19:19
1387
2
原创 Jetpack Compose开发中的一些实用小技巧~
在Compose开发的过程中,我们会经常遇到一些看起来很简单却不知道如何处理的小问题,比如去除点击阴影、Dial
2022-10-12 16:56:49
1264
原创 我的Compose开源项目《出行防疫App》已发布
在我的新书《Android Jetpack开发:原理解析与应用实战》项目实战中,我们实现了一个MVVM版本的出行防疫App。之前说过,会开发对应的Compose版本,如今,他来了~如果你还没看过非Compose版本可以点击链接查看。这是一款MVVM模式的Compose App,采用了组件化、Aroute、协程、flow等技术,适合初学者学习使用。此项目将长期维护,后续所有的新技术、平台适配等都将基于此项目实践。
2022-09-17 13:15:44
1783
3
原创 Jetpack Compose 以生命周期感知方式收集流
以生命周期感知方式收集流是在 Android 上收集流的推荐方式。如果您使用 Jetpack Compose 构建 Android 应用程序,请使用 collectAsStateWithLifecycle API 从您的UI以生命周期感知的方式收集流。collectAsStateWithLifecycle 允许您的应用在不需要时保存应用资源,例如当应用在后台时。不必要地保持资源活动可能会影响用户的设备运行状况。此类资源可能包括 Firebase 查询、位置或网络更新以及数据库连接。.........
2022-08-11 18:05:11
1677
原创 Jetpack WorkManager 看这一篇就够了~
按照官方描述,WorkManager是适合用于持久性工作的推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工作。由于大多数后台处理操作都是通过持久性工作完成的,因此WorkManager是适用于后台处理操作的主要推荐API。Result{Log.d("打印线程",Thread.currentThread().name)}}继承自Worker的类需要重写doWork方法,我们可以在这个方法中执行具体的任务,这里为了有演示结果打印出线程的名称。.........
2022-07-31 20:34:47
1873
2
原创 我的MVVM开源项目《出行防疫App》已发布
前言大约在两年前,我发布了一个MVVM的开源小项目,我的MVVM 开源小项目已发布~从现在角度来看这只是一个小Demo,所以后来写了这个开源项目——出行防疫App项目简介出行防疫App是一款MVVM模式的App,采用了组件化、Aroute、协程、flow等技术,适合初学者学习使用。此项目将长期维护,后续所有的新技术、平台适配等都将基于此项目实践,且会开发Jetpack Compose版本。项目数据基于 "聚合数据"在线API,需申请对应的API,申请成功后将key值替换到appbas
2022-06-22 10:59:05
2339
14
原创 不念过往,不畏将来:2022年6月我辞职了...
四年前的自己,也许从未想到,从我踏进这家公司大门起,我竟然可以待四年;四年前的自己,也许从未想到,我会选择在这个时机辞职。我是黄林晴,定居在合肥。2018年我还是一个刚毕业进入职场的小年轻。2018年8月2日,有幸进入了一家福利待遇超级好的企业 —— 来邦科技。在这里的四年确实让我成长了许多,不管是技术能力上或者是身材上。在这里有幸认识了一群志同道合的朋友,在他们的身上我学习到了许多。经过四年时间的历练,我也早已不是那个帅气的少年,甚至变成了一个油腻腻的大叔。经过四年时间的历练,我学会了基础的技术管理能力,
2022-06-17 17:49:51
3259
18
原创 看不懂Kotlin源码?从Contracts 函数说起~
最近有朋友反馈说因为源码是Kotlin,所以看不懂。其实,很多时候看不懂Kotlin的源码很有可能是因为你不知道某些特定语法。正如你看不懂源码其实是因为不了解设计模式一样~以Kotlin中常用的isNullOrEmpty方法为例,源码如下所示:咦?代码很简单,不过怎么看不懂呢?contract是什么鬼,implies 又是什么鬼? 其实当你了解contract函数的使用方法之后,类似的源码你就都能看懂了。Contracts是合同、契约的意思。从Kotlin1.3版本的时候就被引入了,简单的来说Cont
2022-06-10 17:18:43
1638
3
原创 在Compose中使用Paging分页库
前言大约在两年前,写了一篇Jetpack 系列之Paging3,看这一篇就够了~,本篇文章主要来看,在Compose中如何使用Paging3,这里不得不说一句,在xml中使用Paging3和在Compose中使用仅有UI层代码不同,所以之前定义的接口层、仓库层直接复用直接的代码即可。Paging3的使用项目搭建首先,我们新建项目,在build.gradle中引入compose的paging库,这里将网络请求等依赖库一并引入。代码如下所示:implementation("androi..
2022-05-10 21:01:17
2957
19
原创 重学设计模式——你听说过门面模式吗?
前言在一文了解MVI架构,学起来吧~这篇文章的最后,我们提到了对网域层的理解类似于门面模式,所以这里单独写一篇文章介绍一下门面模式。再前言面试的时候,面试官都会问用过什么设计模式,99%程序员的回答都是 单例模式,在多一点就是工厂模式。如果你能说到门面模式相信已经在面试官心中战胜了80%的人。那么什么是门面模式呢?什么是门面模式门面模式又叫做外观模式(Facade Design Pattern),是结构型设计模式的一种。我觉得也是设计模式中不管是应用场景还是实现方法最为简单的一种。门
2022-04-29 17:27:15
1063
23
原创 一文了解如何使用Compose动画~
前言断断续续学习Compose已经快有一个月了,在编写“正在加载框”这个效果时,遇到了动画相关的问题。当然Lottie框架也已经支持Compose了,但学习和了解Compose动画的基础知识还是很有必要的,本篇文章就来一起了解Compose动画的实现~动画的种类动画的种类就很多,根据使用场景有AnimationVisibility、rememberInfiniteTransition、Animation等。如果你想知道在你的需求场景中需要使用什么动画,可以参照官方的这张流程指示图。Ani
2022-04-27 17:40:49
2804
6
原创 一文了解MVI架构,学起来吧~
前言大约在去年11月份,Google将官方网站上推荐的MVVM架构悄悄替换成了MVI架构。参考了官方与许多前辈的分享,便有了此文。不过下面的再前言应当是每个读者心中所需要认定的。再前言总览我所有的博客,我很少写关于架构模式相关的文章。因为我觉得:不管是从刚开始所使用的MVP、MVVM再到现在Google官方所推荐的MVI架构,我希望各位读者千万不要将教条主义当真理。官方推荐了MVVM就马上去踩MVP,官方推荐了MVI就马上去踩MVVM,甚至使用MVVM的开发者会鄙视使用MVP的,使用MV
2022-04-19 20:04:47
6160
18
原创 Jetpack Compose之 在Compose中使用Navigation导航
前言大约在一年半前,我发布了Compose的第一篇文章Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间我竟再也没有看过Compose..., 如今Compose已经发布了稳定版本,还没学会Compose让我的头发又白了许多。//这里放歌表情包使用Navigation在Compose中导航如果你之前不喜欢Android提倡的”单Activity“应用,那么在Compose中详细你会慢慢习惯的。在此示例中有两个页面PageOne和PageTwo.
2022-03-18 19:42:14
6292
19
原创 写好文章不得不认真对待的几个问题
前言本系列文章收录于专栏《写作技巧》,专栏服务于第三届新星计划参赛Android通道的学员,作者结合自身写作经验,总结出来的写作技巧。目前CSDN第三届新星计划正在火热进行中,欢迎参与Android赛道活动详情可见活动官网~写作的目的是什么?需遵从自己的内心,建议以沉淀积累知识为主,如果刚开始就异想天开想着写作就是为了”赚钱“,建议慎重选择这条道路。写好文章的几个关键一个好的标题很重要,但技术人员千万不要做标题党 学会分享很重要,避免 文章最后...
2022-03-15 20:20:10
2759
2
原创 如何写出更”优质“的文章-排版篇
前言本系列文章收录于专栏《写作技巧》,专栏服务于第三届新星计划参赛Android通道的学员,作者结合自身写作经验,总结出来的写作技巧。目前CSDN第三届新星计划正在火热进行中,欢迎参与Android赛道活动详情可见活动官网~五年写作经验与你分享如何写出更”优质“的文章为什么需要主治弄文章A版...
2022-03-15 20:04:07
3750
原创 五年写作经验与你分享如何写出更”优质“的文章
前言本系列文章收录于专栏《写作技巧》,专栏服务于第三届新星计划参赛Android通道的学员,作者结合自身写作经验,总结出来的写作技巧。目前CSDN第三届新星计划正在火热进行中,欢迎参与Android赛道活动详情可见活动官网~我的写作经历我的第一篇博客写于2017年2月份,那时候写作的目的很简单,就是记录自己在学习过程中所遇到的问题。随着文章写的越来越多,慢慢的有了1个粉丝关注,有了两个... ,直到现在的全网粉丝5万+,阅读量百万+。就我自身而言,近些年在博客的产出并不.
2022-03-04 18:02:49
1649
2
原创 重学设计模式——你真的面向对象了吗?
前言在最初学习Java的时候,我们都听到过一句话,Java是面向对象语言。每当提到面向对象的时候,许多开发者也嗤之以鼻:都什么年代了,谁还不知道面向对象。重学设计模式后,请回答,你真的面向对象了吗?...
2022-01-12 20:49:55
7333
19
原创 2021年总结:前路有光,初心莫忘
前言但行好事,莫问前程;前路有光,初心莫忘。今年是第三年写总结了,每一年写总结时的心情都是不同的。2019年总结,平凡的我仍在平凡的生活2020年总结,所有努力只为一份期待2021年元旦前,给自己制定了2021年的相关计划。 关于学习其实我每年制定的学习计划都是相似的,主要分为基础知识和新知识。像开发者艺术探索、极客时间上的数据结构和设计模式基本上是每年都要看一遍的,...
2021-12-14 14:05:19
7399
29
原创 一文看懂JVM运行时内存分布
前言繁忙的一年即将过去,由于若干种原因,下定决心开始写一些基础系列,主要包含Java基础、Android基础、设计模式与算法等,目前还没给这个系列想到一个好听的名字。虚拟机的实现有很多,比如HotSpot、Android Dalvik 、ART等,不同虚拟机具体实现方式不同但都符合Java虚拟机规范中的规则。从1+2等3来看JVM运行时内存分布新建一个Test类,定义一个静态方法sum,代码如下所示:public class Test { public static voi.
2021-12-05 22:07:05
8834
8
原创 Jetpack 系列之AppSearch
前言在今年的Google I/O 大会上,Jetpack库新增了三个组件(刚发布Alpha版本),分别是MarcrobenChmark、AppSearch和Google Shortc
2021-06-19 17:46:07
6963
9
原创 快让你的App分20亿吧!
前言嗯?分20亿 什么鬼,见下图:过年的时候很多App的图标都变成了分20亿 分10亿,幸好自己的App 没有更新图标的功能,这样岂不是省了20亿~这个分钱呢,哦,不对,这个功能呢,咱们都应该知道首先肯定不是通过App更新来更新的,过节日为了更新一个图标让用户升级App,估计会被打死吧。这种功能的俗称叫做:动态替换App的图标。activity-alias其实 实现替换图标的方案有很多,比如修改 或 拦截 系统Launcher ,但是这种方式需要系统权限,不适合普通开发者,act
2021-02-26 17:44:57
9877
18
原创 2020年总结,所有努力只为一份期待
推荐阅读:2019年总结,平凡的我仍在平凡的生活前言从18年开始,我便养成了一个习惯,每年年底之前会写一篇总结和制定下一年中的计划,如果说2019的总结 是平凡的我仍在平凡的生活,那2020年便是 所有努力只为一份期待!2020年元旦前我制定了2020年一年当中最主要的计划,如下图所示。关于学习我始终认为并坚信程序猿应该任何时刻保持学习 ,Android中的新技术层出不穷,最近两年比较火热的就是Jetpack 和 MVVM 以及下年将推出正式版本的Compose,所以在19年的时候便计划
2020-12-13 15:38:07
10743
28
原创 Jetpack Compose开篇 之 HelloWorld
前言此前我更新了Jetpack Architecture系列的文章,如果你还不了解Jetpack,可以移步至 Android JetPack系列文章 ,持续更新中从即日起,我将开始持续更新Jetpack Compose系列的文章,Compose将会是原生开发的下一个改变风口,原创不易,感谢支持!Jetpack Compose是什么Jetpack Compose 是用于构建原生 Android 界面的新工具包。它基于声明性编程模型,因此您只需描述界面的外观,Compose 会负责完成其余工作,
2020-11-29 15:51:34
8827
26
原创 Jetpack 系列之Paging3,看这一篇就够了~
前言许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接:Android JetPack系列文章 ,持续更新中为了能让自己更加快速的学习,英语菜鸡的我最近一直在恶补英语,直接看原版官方文档学习的会更快,皇天不负有心人,经过两个星期的坚持,现在官方文档上的10个单词我已经认识两个了~Paging是什么想想我们之前的业务中,实现分页加载需要怎么处理?一般我们都是自己封装RecycleView或者使
2020-11-14 21:04:55
13328
34
原创 Kotlin Flow 看这一篇 带你入门~
前言在最近的三篇中,标题都是 ***** 看这一篇就够了,而这篇关于Flow的,我认怂了,只能说 看这一篇 带你入门~,因为我发现Flow牵扯的东西实在是太多了,就像RxJava别说两篇 可能五篇也是说不完的。为什么需要Flow首先我们来回顾下Kotlin中我们如何使用挂起函数,我们在main方法中,调用挂起函数返回一组数据,代码如下所示suspendfunloadData():List<Int>{delay(1000)returnlistOf(1...
2020-11-03 20:57:27
9591
25
原创 Kotlin 使用DSL构建语法结构 看这一篇就够了~
前言DSL并不是单独为Kotlin语言提供的,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么时DSL?使用DSL又可以实现怎么样的功能呢?DSL是什么DSL的全程是Domain Specific Language 即 领域特定语言,我们可以通过DSL语言 构建出属于我们自己的语法结构,而在Kotlin中并不只有一种方式实现DSL,而主要的实现方式就是高阶函数(如果你不了解高阶函数,也不用怕,后面我会单独一篇文章来介绍高阶函
2020-09-11 11:52:16
7532
6
原创 代理模式看这一篇就够了~
前言不知各位是否还记得这两篇文章APP启动流程解析和Android Hook告诉你 如何启动未注册的Activity,这两篇文章中使用的技术基础都包含了 代理模式,其中在文章中也说道 “说到代理其实就是代理模式,关于什么是代理模式以及动态代理和静态代理的使用可以持续关注我,后面会单独写篇文章进行介绍。”如今整整一年过去了,我还是曾经那个少年,没有一丝丝改变。 这篇文章来了~什么是代理模式说到设计模式,离我们特别远,又特别近。问许多工程师,设计模式用过哪些,相信很多人都...
2020-08-08 16:35:12
5383
3
- <
- 1
- 2
- 3
- >
Android 刮刮乐效果
2018-06-18
Androd MVP demo
2018-06-05
maven构建Spring Mybaties,实现增删改查
2018-05-01
基于javaweb的商品发布系统
2017-06-10
基于javaweb的简单新闻管理系统
2017-06-10
c++ fopen 文件夹路径不存在异常问题
2019-04-25
ListView点击事件错乱
2019-03-05
支付宝sdk,app获取异步回调
2018-10-12
反射创建接口报错,希望大神指导
2018-07-24
Android在activity中获取另一个布局中的button按钮
2017-09-10
android studio 导入ndk项目错误
2017-08-26
android studio导入第三方库报错
2017-07-24
根据图片url转化为bitmap 赋值给image可以显示,但是打印toast为空
2017-07-20
Android通过post提交到服务端相同字符串加密不一致的问题
2017-07-19
as使用AsyncHttpClient总是请求失败
2017-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人