guolin
码龄17年
求更新 关注
提问 私信
  • 博客:14,528,545
    社区:14,278
    问答:3,432
    14,546,255
    总访问量
  • 192
    原创
  • 83,471
    粉丝
  • 83
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
加入CSDN时间: 2009-05-06

个人简介:每当你在感叹 如果有这样一个东西就好了的时候 请注意 其实这是你的机会

博客简介:

郭霖的专栏

博客描述:
每当你在感叹,如果有这样一个东西就好了的时候,请注意,其实这是你的机会
查看详细资料
个人成就
  • 领域专家: 操作系统技术领域
  • 获得27,787次点赞
  • 内容获得15,543次评论
  • 获得18,832次收藏
  • 代码片获得19,282次分享
  • 博客总排名14,949名
  • 原力等级
    原力等级
    8
    原力分
    6,088
    本月获得
    3
创作历程
  • 9篇
    2025年
  • 9篇
    2024年
  • 9篇
    2023年
  • 11篇
    2022年
  • 17篇
    2021年
  • 20篇
    2020年
  • 9篇
    2019年
  • 7篇
    2018年
  • 10篇
    2017年
  • 14篇
    2016年
  • 13篇
    2015年
  • 26篇
    2014年
  • 45篇
    2013年
成就勋章
TA的专栏
  • Android精华教程
    52篇
  • Jetpack Compose
    13篇
  • Glide最全解析
    8篇
  • Android数据库高手秘籍
    13篇
  • PermissionX
    8篇
  • Glance
    2篇
  • Android疑难解析
    66篇
  • Android第一行代码
    5篇
  • Android数据库高手秘籍
    13篇
  • Java设计模式透析
    5篇
  • Ruby设计模式透析
    5篇
  • 随笔
    27篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 3

TA参与的活动 1

我的新书

《第一行代码 第3版》已出版
涵盖Kotlin语言全面讲解
更加入了Jetpack、MVVM等全新技术

查看详情


纸质书购买:

京东    天猫   当当

创作活动更多

芯创视界・嵌入式视频创作征集大赛

嵌入式工程的价值,藏在每一次硬件调试、代码迭代与项目落地之中。 让我们因热爱相聚,用镜头与一众开发者互通心得、彼此启发,记录下探索的每一步,分享思路与经验。 让更多人看见嵌入式开发的魅力,也让每一次创作成为推动技术传播与社区成长的力量。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0d445ffce72b42f997aaf1b030a652aa.png#pic_center)

28人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

2025年终总结,这就是AI的时代

你如果有能力参与到这次AI革命的核心开发圈层当中,那自然是最好的情况,而如果不能的话,我认为也并没有完全被踢出牌桌,多花点时间思考,如何让自己的身家和AI绑定起来,最终也可能会收获超出预期的回报。我一直是有一套自己的投资理论的,我喜欢把自己的身家和全世界最聪明的人绑定在一起。因此,今年的Android 16系统在年中的时候就已经推出了,如果等到年底Devfest的时候再去介绍Android 16的新特性可能就有些晚了,所以6月份的时候就去上海的Google总部演讲了一回。但是这反倒成为了我极大的一个压力。
原创
博文更新于 2025.12.31 ·
6306 阅读 ·
52 点赞 ·
6 评论 ·
27 收藏

聊一聊我对 AI 的看法

AI技术正以惊人速度重塑世界规则。从2016年AlphaGo击败人类棋手引发AI热潮,到2022年ChatGPT两个月内收获1亿用户,AI发展经历了从专业领域到通用工具的转变。作者作为Android开发者,最初仅将AI视为编程辅助工具,但2025年出现的Cursor、WindSurf等新一代IDE和Claude Code命令行工具彻底颠覆认知。这些工具采用Agent模式,能自主完成复杂编程任务并自我纠错,甚至可操作系统级任务。作者亲身体验后,深刻认识到AI已从简单助手进化为能独立工作的智能体,预示着程序员角
原创
博文更新于 2025.11.26 ·
5575 阅读 ·
28 点赞 ·
2 评论 ·
14 收藏

写给初学者的Jetpack Compose教程,Navigation 3

Jetpack Compose导航库Navigation 3教程更新,对比Navigation 2有重大变化。文章介绍了Navigation 3的两大核心改进:1) 导航返回栈完全由开发者控制,提供更高自由度;2) 支持多设备适配,可同时适配手机和平板。教程包含准备工作指南,详细展示了如何配置依赖库,并通过商品列表/详情页示例演示基础用法。Navigation 3完全重写了API,建议先了解Navigation 2再学习新版。文章还预告后续将深入讲解多屏适配等高级功能。
原创
博文更新于 2025.10.27 ·
8304 阅读 ·
53 点赞 ·
1 评论 ·
32 收藏

写给初学者的Jetpack Compose教程,Navigation

本文介绍了Jetpack Compose中实现页面跳转的两种方法:使用State技术和Navigation组件。首先通过定义三个简单页面ScreenA、B、C,演示了如何利用State控制当前显示的页面。随后重点讲解了Navigation 2的基本用法,包括创建NavController、定义路由和使用NavHost构建导航图。文章强调Navigation能提供完整的页面导航能力,而不仅是简单的跳转功能,并指出后续将介绍更先进的Navigation 3版本。适合已经掌握Compose基础并希望实现多页面导航
原创
博文更新于 2025.09.10 ·
14941 阅读 ·
26 点赞 ·
4 评论 ·
31 收藏

Android 16 新特性和行为变更一览

Android 16引入多项新特性:采用双版本发布机制(Major和Minor Release),新增进度中心通知功能支持自定义样式,优化JobScheduler任务调试能力,并增强动态刷新率支持。这些改进提升系统灵活性、开发效率和用户体验,同时保持版本兼容性。(149字)
原创
博文更新于 2025.06.20 ·
20108 阅读 ·
48 点赞 ·
4 评论 ·
29 收藏

写给初学者的Jetpack Compose教程,大屏设备适配

本文介绍了如何在Jetpack Compose中适配不同尺寸的Android设备,特别是大屏设备。随着Android 16系统将不再支持限制应用的横竖屏旋转,开发者需要更好地适配大屏设备。文章首先建议使用Android Studio中的可调整尺寸模拟器来测试不同设备类型的界面效果。接着,介绍了如何使用WindowSizeClass来获取设备的屏幕尺寸类型,并根据不同尺寸调整界面布局。最后,通过一个简单的Feed流界面示例,展示了如何利用LazyVerticalGrid在大屏设备上实现一行显示多条内容,从而提
原创
博文更新于 2025.05.14 ·
9921 阅读 ·
38 点赞 ·
1 评论 ·
29 收藏

Android 16不再支持横竖屏设置?官方文档详尽解读

即使你想说你们的App并不打算支持在除手机以外的Android设备上运行,但是别忘了,现在的折叠屏设备是可以瞬间从手机模式切换成平板模式的。首先,只有targetSdk指定到了36及以上的App,运行在Android 16的大屏设备上时,才会出现限制屏幕方向和比例的API失效的情况。只是Android大屏设备的保有量并不高,许多中小型App开发者的适配积极性不足,这也导致直到今天仍然还有许多App在大屏设备上的运行体验是比较差的。再具体一点,就是在最小宽度大于等于600dp的设备上,上述API才会失效。
原创
博文更新于 2025.04.18 ·
11481 阅读 ·
38 点赞 ·
0 评论 ·
43 收藏

写给初学者的Jetpack Compose教程,Side Effect

官方文档对于Side Effect的定义描述还是比较抽象的,根据官方文档的说法,Side Effect指的就是,在一个Composable函数的内部发生了超出其作用域的状态变更。要怎么理解这句话呢?处理MainScreen逻辑...这段代码的核心诉求还是比较好理解的,就是在MyApp()这个Composable函数的内部,我们先调用Initialize()函数对mInit变量进行初始化,完成了初始化之后再在MainScreen()函数中开始处理主页面的逻辑。
原创
博文更新于 2025.03.26 ·
11547 阅读 ·
31 点赞 ·
6 评论 ·
31 收藏

写给初学者的Jetpack Compose教程,基础控件和布局

大家好,写给初学者的Jetpack Compose教程又更新了。准确来说,这才是本系列的第一篇文章。因为上篇文章只是个序篇,和大家聊一聊为什么我们要学习Compose。Compose的知识体系很庞大,因此这个系列教程可能我会写很多篇。当然我并不是什么Compose高手,目前我也是个初学者。本教程实质上就是我在自我学习Compose的同时,将这些学习记录分享给大家,希望大家可以零基础跟着我一起学习。Compose是一个用于替代Android View的全新声明式UI框架。既然是UI框架,因此我们第一篇文章就来
原创
博文更新于 2025.02.15 ·
51332 阅读 ·
96 点赞 ·
27 评论 ·
108 收藏

Android 15新特性,预测性返回手势

首先要解决的第一个问题就是,什么是预测性返回手势?简单来说,就是在你想要触发返回操作时,让你能够提前预知即将返回到哪个界面。在Android系统中,用户是可以通过点击返回键,或使用返回手势来回到上一个界面的。但上一个界面具体是什么?我们可能并不知道,通常得等点完了返回键之后才能知道具体会返回到哪个界面。那么预测性返回手势是怎么优化这部分体验的呢?貌似我们也基本没怎么见过这种能提前预知即将返回到哪个界面的效果吧。
原创
博文更新于 2025.01.17 ·
18876 阅读 ·
60 点赞 ·
7 评论 ·
42 收藏

2024年终总结,花开终有时

今年我分别参加了苏州、北京、海口地区的DevFest,演讲的主题也都是edge-to-edge相关的,希望今年我对edge-to-edge的技术宣讲能够帮助大家更好地为自己的App做全面屏适配。这个号我不会停更,原创文章我还会继续写,毕竟Google对于GDE们每年是有技术分享指标要求的,只是文章的发布频率肯定无法和之前相比了。直到今年Android 15强制启用了edge-to-edge功能,所有的App都不得不去做全面屏适配,我又重新拾起了当初没做完的部分,这次是做到了真全面屏适配的效果,如下图所示。
原创
博文更新于 2024.12.31 ·
14066 阅读 ·
45 点赞 ·
8 评论 ·
25 收藏

写给初学者的Jetpack Compose教程,动画

大家好,写给初学者的Jetpack Compose教程又更新了。今天来讲一讲Compose动画方面的知识。其实我并不是很擅长写动画相关的内容,《第一行代码》整本书里面我都没有写过任何讲解动画的知识。当然书本静态纸张不容易表达动画的效果可能也是我没有写动画的原因之一。上面这3篇文章讲的都是基于Android View系统的属性动画。虽说属性动画最初的设计理念就是要脱离View的限定,围绕属性的概念重新打造。
原创
博文更新于 2024.12.30 ·
16544 阅读 ·
30 点赞 ·
6 评论 ·
30 收藏

写给初学者的Jetpack Compose教程,edge-to-edge全面屏体验

发现了这个现象之后,可能细心的朋友立马就察觉到了,那如果我手机底部的导航栏模式不是这种手势导航栏,而是传统的Back、Home、Task 3按键导航栏,edge-to-edge全面屏体验会变成什么样呢?绝大部分的App其实都只使用了绿色这部分的空间,屏幕上方的状态栏以及屏幕下方的导航栏这两个白色部分的空间都是没有利用起来的,想想你写的App是不是也是这样?适配的代码其实还是比较简单的,主要就是借助Compose提供的一些内置函数,来对某些指定的控件进行偏移,保证其不会被系统的状态栏或导航栏遮挡住就可以了。
原创
博文更新于 2024.10.22 ·
18650 阅读 ·
30 点赞 ·
11 评论 ·
36 收藏

Android 15新特性,强制edge-to-edge全面屏体验

那么由于我们不希望聊天内容进入状态栏区域,因此这里调用了WindowInsetsCompat.Type.statusBars()来获取状态栏的Insets,比如说这里获取到状态栏的高度是50,那么我们通过对chatRecyclerView设置一个50的padding就可以保证聊天内容不进入状态栏区域了。发现了这个现象之后,可能细心的朋友立马就察觉到了,那如果我手机底部的导航栏模式不是这种手势导航栏,而是传统的Back、Home、Task 3按键导航栏,edge-to-edge全面屏体验会变成什么样呢?
原创
博文更新于 2024.08.27 ·
42511 阅读 ·
80 点赞 ·
10 评论 ·
69 收藏

写给初学者的Jetpack Compose教程,高级Layout

在得到所有子布局测量好的尺寸之后,我们选择其中最宽的子布局的宽度来作为我们自定义布局MyColumn的宽度,选择所有子布局高度的总和来作为MyColumn的高度。有了这两个参数之后,我们就可以遍历measurables中的所有可测量子布局,每别调用它们的measure函数来测量它们的尺寸,并将测量的结果赋值给placeables这个集合变量。编写自定义布局需要用到的最重要的一个函数就是Compose提供的Layout函数,事实上,几乎所有的Compose控件都是基于Layout函数打造出来的。
原创
博文更新于 2024.07.16 ·
21828 阅读 ·
73 点赞 ·
12 评论 ·
53 收藏

写给初学者的Jetpack Compose教程,用derivedStateOf提升性能

这里将shouldShowAddButton变量用derivedStateOf包裹了进来,那么根据derivedStateOf的特性,只有当这个表达式中的条件发生变化了,才算是State的值发生了变化,这时才会触发重组。不同的是,derivedStateOf接收的一个表达式,只有当这个表达式中的条件发生变化了,那么才算是State的值发生了变化,这时才会触发重组。在这篇文章中,我很细致地讲解了Lazy Layout的用法,但同时也埋下了一个坑,这个坑会严重影响Lazy Layout的性能。
原创
博文更新于 2024.05.21 ·
24442 阅读 ·
61 点赞 ·
13 评论 ·
32 收藏

Android 14新特性,选择性照片和视频访问授权

今天这篇文章给大家介绍一下Android 14系统中的一个新特性,对部分照片和视频进行访问授权,也可以称之为选择性照片和视频访问授权。这是Android系统在隐私和安全性方面的又一次调整升级,目的是为了能够更好地保护用户隐私。但是这个新特性对于开发者而言,真的是让我们苦上加苦,因此我会边吐槽边来讲解这个最新的特性。
原创
博文更新于 2024.04.08 ·
47792 阅读 ·
54 点赞 ·
13 评论 ·
64 收藏

是的,Android版Edge浏览器支持Extension(插件/扩展)了

没想到一些海外的极客博主,在我们发布带Extension功能版本的当天,就把隐藏的这个开关给找到了,并立刻引起了很多的新闻报道,这个功能也就藏不住了。当然,即使所有的代码都编译通过了,也仅仅意味着Extension相关的代码被带到了Android平台上,这和在Edge Android上可以正常使用Extension了仍然是两回事。因为从能力的角度上来说,我们是把桌面端Extension的能力近乎全部都搬到了Android平台上,也就是说桌面端能安装的扩展程序,讲道理在Android上都能安装。
原创
博文更新于 2024.03.15 ·
36044 阅读 ·
53 点赞 ·
10 评论 ·
27 收藏

我以为发现了Android 14系统中的一个bug,然而...

想想这是不是我们所熟知的三大组件原有的默认行为,长期以来一直都是如此,只是这个问题套了个Android 14的壳子,让我一度迷失在了Android各系统版本行为变更的细节里面,以至于没能快速找出问题的本质。魏老师跟我开玩笑说,自己做Android的时候觉得Android实在是太难了,各个系统版本的变化新特性什么的绕来绕去,根本记不住,所以才去做了AI,说AI比较简单。唯一的问题就是,我所使用的上述示例,在没有明确指定当前App包名的情况会崩溃,而我的同事guting却反馈说是没有任何错误日志可以观察到。
原创
博文更新于 2024.01.09 ·
43494 阅读 ·
64 点赞 ·
7 评论 ·
32 收藏

2023年终总结,这个冬天你过得还好吗?

本来我想着要不要把这两场演讲的内容整理成一篇文章发布出来,后来发现上海GDG已经在其B站账号上发布了演讲的完整回放,那我也就不用整理了,直接上链接就好了。今年9月,Google在上海举办了I/O Connect大会,这应该是Google近几年在国内举办的最盛大的一次技术会议活动了,那么我作为GDE理所应当也被邀请了。最让我感到可惜的应该就是去年11月份的时候,Android Summit大会在伦敦举办,我收到了邀请邮件,但是却因为那个时候国门还没有放开,最终没能去成。是的,一个功能开发了一年。
原创
博文更新于 2023.12.29 ·
29301 阅读 ·
43 点赞 ·
7 评论 ·
17 收藏
加载更多