- 博客(438)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android群英传:神兵利器——出版祭
Android群英传:神兵利器《Android群英传:神兵利器》——看上去好像是第一本书的续集,但实际上,这本书的内容,在我写《Android群英传》的时候就已经写了不少了,碍于出版社的篇幅限制与主题的统一,很多内容并没有放到《Android群英传》中。由于第一本书上市后,受到各位开发者的抬爱,销售情况还算理想,所以出版社一直希望我能出一本续集,因此,我便萌生了想要把这本书补全的想法。
2016-08-18 10:10:56
22699
74
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 对不起!我来晚了!——《Android群英传》出版祭
对不起!我来晚了!——《Android群英传》出版祭历时将近一年,我的第一本书终于就要出版了,虽然经历种种曲折,历经磨难,最终还是赶在八月份的尾巴上,修成正果。 首先,要向大家道歉,本来预计是在6月份上市的书,一拖再拖,直到现在才得以出版,让不少朋友一等再等,这里,向这些朋友的耐心,狠狠的点个赞。写书之前其实,当官杨主编第一次找我写书的时候,其实我是,是想拒绝的,我跟女朋友讲,我拒绝,因为,
2015-09-08 22:02:59
37310
163
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 向产品宣战——开发者眼中的Android UI Design
向产品宣战——开发者眼中的Android UI Design 准备了半个月,思考产品设计、交互设计,见证了公司的产品、UE和开发的撕逼,将自己的思考、感悟,整理成下文,谨代表广大程序猿,向设计狮、产品X开战。希望广大程序猿能够坚持贯彻Google的Material Design,切实认真负责的执行Android的设计思想,将MD设计带到产品中去,不做中国特色的App。
2015-06-09 14:18:21
32403
169
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 解放双手——Android自动化测试
人们懒的走路,才创造了汽车;人们懒的爬楼,才创造了电梯;人们懒的扫地,才创造了自动扫地机器人。人类的进步,离不开这些喜欢偷懒的人,现在,程序猿将偷懒上升到了一个新的高度——利用程序来进行自动化软件测试,将测试工程师从繁琐的测试用例中解脱出来,从此可以一边喝着咖啡,一边看着程序自动测试,不必看着测试用例重复无数次的测试步骤,也不必担心操作失误而导致不必要的错误,更不用担心压力测试而导致的身心俱疲。想了解程序猿是如
2015-05-11 16:42:06
66016
72
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Eclipse,到了说再见的时候了——Android Studio最全解析
去年的Google大会上,Google带给我们一个小玩具——Android Studio,说它是玩具,是因为它确实比较菜,界面过时,操作不流畅,效率也不高,但是现在,虽然版本还是0.6,甚至都没到1.0,但是我们可以发现亲儿子到底是亲儿子,现在的Android Studio已经今非昔比,用了一段时间,简直爱不释手,我觉得,It's time to say goodbye eclipse!本文将带领
2014-06-14 17:24:26
42468
99
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 我也来开发2048之终极奥义
本次教程跟之前隔了不少时间哈,有点忘记了的建议先看看前面的熟悉下,今天我准备把这个2048给结束了,拖了这么久。按照惯例,我们已经把准备工作都做好了,今天这一部分信息量比较大,也是整个游戏的核心所在,所以我准备分功能来讲,最后大家结合源码来看就不会感觉太吃力了。1、初始化游戏 初始化的时候,我们要干嘛呢,首先要看配置,配置了几行,然后先画好面板,然后要给在面板上随机生成2个数字Item,这涉及到2
2014-04-27 13:39:39
30773
367
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android拼图游戏开发全纪录1
今天我们继续来讲解Android拼图游戏全纪录的第二篇,今天要完成的任务比较简单:界面布局和资源文件1资源文件:我们在开发一个项目的时候,首先要定下这个App的基调,是小清新呢还是重口味,所以我们需要定义一些颜色、style等首先是颜色等: #000000 #FFFFFF #F56A47 #FFFFFF #727
2014-01-31 11:39:51
26265
61
原创 使用Flutter Riverpod Generator来自动创建Providers
点击上方蓝字关注我,知识会给你力量Riverpod 是 Flutter 功能强大的反应式缓存和数据绑定框架。它为我们提供了许多不同类型的provider,我们可以用它们来:访问代码中的依赖关系(使用 Provider)缓存来自网络的异步数据(使用 FutureProvider 和 StreamProvider)管理本地应用程序状态(使用 StateProvider、StateNotifierPro...
2024-08-22 08:30:24
541
原创 从源码看Flutter状态栏高度之谜
点击上方蓝字关注我,知识会给你力量写过Android的开发者都知道,关于状态栏高度的计算,Google改了一版又一版,依然还有很多兼容性问题,那么来到Flutter这边,问题突然变得简单了,通过下面的方法就可以很方便的获取。MediaQuery.of(context).padding.top本来很开心的完成任务了,直到有同事反馈这个方法有时获取的状态栏高度为0,但有时候又是对的,很奇怪,那么到底是...
2024-08-12 08:39:48
891
原创 纯血鸿蒙 璀璨星河
点击上方蓝字关注我,知识会给你力量华为最近可谓是加班加点,前段时间华为给出了鸿蒙系统的计划表,让大家都摩拳擦掌,想看看华为到底有几把刷子,这次的621HDC大会,就是华为给全世界的第一个交待。最近在网上经常流传着这样一张图:大体意思就是:根据Counterpoint Research报告显示,今年一季度,鸿蒙在中国市场份额为17%,而苹果的iOS为16%。这意味着,鸿蒙在中国市场首次超越iOS,成...
2024-06-21 18:01:59
947
原创 Flutter局部刷新三剑客
点击上方蓝字关注我,知识会给你力量局部刷新作为提高Flutter页面性能的重要手段,是每一个Flutter老手都必须掌握的技巧。当然,我们不用非得使用Riverpod、Provider、Bloc这些状态管理工具来实现局部刷新,Flutter框架本身也给我们提供了很多方便快捷的刷新方案,今天要提的就是Notifier三剑客,用它来处理局部刷新,代码优雅又方便,可谓是居家必备之良器。ChangeNo...
2024-06-19 08:30:20
940
原创 从Flutter范儿的单例来看Dart的构造函数
点击上方蓝字关注我,知识会给你力量单例模式单例模式应该是设计模式中使用的最广泛的一种设计模式了,在Kotlin中,甚至为它单独创建了一个语法糖——object类,来快速实现单例模式,而在Dart中,并没有像Kotlin这样的语法糖,所以,参考单例的一般实现,我们可以很容易的实现下面这样一个单例。classSingleton{staticSingleton?_instance;...
2024-05-07 08:30:15
877
1
原创 从源码看Flutter Android端的启动流程
点击上方蓝字关注我,知识会给你力量Flutter容器Flutter在Android中的渲染载体就是Flutter容器,通常是以Activity和Fragment的形式承载,虽然也有FlutterView,但是需要单独处理的关联方法太多,所以不太建议使用,这篇文章将分析Flutter在Android中的加载和启动流程,了解Flutter是如何在Android中加载并渲染的。小小Android,eas...
2024-04-07 08:30:45
846
原创 Flutter鸿蒙终端一体化—鹊桥相会
点击上方蓝字关注我,知识会给你力量在鸿蒙中开发Flutter项目,一个最大的问题,就是「不太会写鸿蒙代码」,这对于一个Flutter开发者来说,虽然不是一件很麻烦的事,但由于现在鸿蒙的版本和文档还略有一些混乱,所以要写好还是有一些麻烦的,所以,秉着能用工具解决的问题就不要自己写的原则,我们参考Native的Flutter Channel的实现,也就是pigeon的方式,不熟悉的同学可以参考我之前的...
2024-03-18 08:30:07
828
原创 Flutter鸿蒙终端一体化-天下一统
点击上方蓝字关注我,知识会给你力量在前面的文章中,我们了解了如何使用FlutterPage来创建Flutter容器。Flutter鸿蒙终端一体化-混沌初开Flutter鸿蒙终端一体化-珠联璧合但更多的时候,我们需要的是一种类似FlutterFragment的方式来进行引用,可喜的是,鸿蒙实现这种方式也并不复杂,因为不论是FlutterPage,还是FlutterFragment,它内部实际上是通过...
2024-03-12 08:30:44
1842
原创 Flutter鸿蒙终端一体化-珠联璧合
点击上方蓝字关注我,知识会给你力量在上一篇文章中,我们初步了解了在鸿蒙中使用Flutter的可能性和可用性,还没看过的可以参考下面的链接。Flutter鸿蒙终端一体化-混沌初开在文章的最后,我们分析了两种混编模式,和Android、iOS类似,分别是源码依赖和产物依赖,在我们的项目中,由于很早之前就开始介入Flutter开发,同时抽象了一套Flutter的轻量级渲染模式,所以,这里我们会使用产物依...
2024-01-31 08:30:27
3422
1
原创 Flutter鸿蒙终端一体化-混沌初开
点击上方蓝字关注我,知识会给你力量环境配置欲练此功,必先仔细阅读此项目的README文件十遍以上。flutter_flutter项目,这是我们整个工程的核心,但是很多人都倒在了第一步,其原因,就是——需要使用Dev分支!!!https://gitee.com/openharmony-sig/flutter_flutter/tree/dev/当前项目已经支持Linux、Mac、Windows环境下使...
2024-01-24 08:30:33
2257
原创 真•文本环绕问题的探究和分享
点击上方蓝字关注我,知识会给你力量前言上周领导安排了一个任务:希望我们的动态展示不是固定把图片展示在文本的上面或者下面,希望图片放在文本内容里,也不需要很复杂的效果,就排版好看就行。Ok,这不就是富文本吗,我一下子就联想到了RichText,一想到RichText支持WidgetSpan,我就知道问题不大,但是经过测试发现这里面是个大坑......话不多说,先展示一下本地Demo的实际效果图:--...
2023-10-20 08:30:17
340
1
原创 为 TheRouter 开发一个 IDEA 插件
点击上方蓝字关注我,知识会给你力量为 TheRouter 开发一个 IDEA 插件❝本插件代码已全部开源,走过路过请给个star:https://github.com/kymjs/TheRouterIdeaPlugin❞这篇文章是假定你已经有了 idea 插件开发的入门知识,来教你如何实现一个实际项目的功能。如果你还不知道如何开发一个插件,建议先从这个链接查看官网相关文档 https://plu...
2023-10-12 08:30:34
313
原创 Flutter混编方案在起点客户端的实践之路
点击上方蓝字关注我,知识会给你力量起点读书客户端一直紧跟新技术的潮流,从很早开始,就在进行Flutter的尝试,在筹备了许久之后(移除了包大小的KPI指标),我们终于在最新的业务开发中,使用了Flutter。Flutter虽然会带来一些包体积的增加,但带来的收益却是:愉悦的开发体验,不用再忍受漫长的编译,强大的热更新可以快速进行UI开发跨端的统一UI设计,双端不用做太多的适配就可以运行开发效率提升...
2023-09-26 08:30:34
461
原创 Android编译的小知识
背景Android是如何进行编译的? 项目中的源代码是如何一步步被执行为可以安装到手机上的apk的? 文章会一一给大家介绍,尽量以代码为例,好让大家快速理解。文末有福利~1.认识Gradle1.1 Gradle简介官方文档:https://docs.gradle.org/7.3.3/userguide/what_is_gradle.html官方解释:Gradle是一个开源的自动化构建工具。 现...
2023-09-19 08:30:28
1229
原创 hwui介绍与分析
hwui全称**HardwareAcceleratedRenderingEngineforUI,**hwui是一个基于GPU加速的2D图形引擎。HWUI的目标是提供高效、稳定、高质量的2D图形渲染能力,为Android系统的UI体验提供技术支持。相关源码位于目录android/platform/framework/base/libs/hwui文末有福利~hwui的大部分代码以C++实现,Andro...
2023-09-07 08:30:59
1081
1
原创 Flutter性能揭秘之RepaintBoundary
点击上方蓝字关注我,知识会给你力量Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新,那就只能重绘了。尽管如此,Flutter同样会重新绘制一些Widget,而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能,有时影响会非常巨大。如果您正在寻找一种方法,来防止不必要的部分重绘,您可以考虑利用RepaintBoundary。在这篇博客理,我们将探讨Fl...
2023-08-18 19:59:43
286
原创 当我用ChatGPT摸了一上午鱼,结果......
点击上方蓝字关注我,知识会给你力量经常有人问我,ChatGPT出来这么久了,你怎么不写点教程(割点韭菜)呢?其实,从它一出来,我就关注了,也在平时的工作中进行了使用,正好最近在处理一个埋点的问题,就拿ChatGPT来进行下演示吧,看我怎么用ChatGPT来摸鱼,解决我们平时遇到的问题。问题是这样的,相信很多朋友也遇到过,那就是RecyclerView的Item曝光埋点问题。最开始对埋点数据要求不高...
2023-07-05 08:30:34
294
原创 从Kotlin中return@forEach了个寂寞
点击上方蓝字关注我,知识会给你力量今天在Review(copy)同事代码的时候,发现了一个问题,想到很久之前,自己也遇到过这个问题,那么就来看下吧。首先,我们抽取最小复现代码。(1..7).forEach{if(it==3){return@forEach}Log.d("xys","Num:$it")}很简单的代码,我相信很多人都这样写...
2023-06-12 08:30:19
875
原创 FlutterComponent最佳实践之Widget Lifecycle
点击上方蓝字关注我,知识会给你力量了解Flutter的生命周期,是我们写出优雅的App的基石,通过生命周期的适配,可以让代码更加稳健,鲁棒性更好。Widget生命周期下面这张图,就展示了一个Widget的整体生命周期示例。当你把BuildContext分配给Widget时,一个内部标志位—mounted会被设置为true。这会让Framework知道这个Widget目前已经挂载到Widget Tr...
2023-04-11 08:30:16
489
原创 FlutterComponent最佳实践之国际化
点击上方蓝字关注我,知识会给你力量在Android中,我们可以通过不同的strings.xml文件来实现国际化的不同语言需求,那么在Flutter中,官方同样也提供了国际化的适配方案,官方文档如下所示。https://docs.flutter.dev/development/accessibility-and-localization/internationalization本地化与国际化本地化(...
2023-04-04 08:30:03
496
原创 从源码看Flutter BuildContext的秘密
点击上方蓝字关注我,知识会给你力量我们每次在写Flutter代码的时候,都会看到这个参数——BuildContext,在Android开发中,也经常看见一个类似的东西——Context,它们是不是一样的呢?其实说一样也对,它们都是上下文的关键承载者,但是却也不一样,因为它们本质上是两个不同的概念。在Flutter中,BuildContext的源码如下。从注释中我们就可以看出,[BuildConte...
2023-03-28 08:30:46
582
原创 FlutterComponent最佳实践之Widget尺寸
点击上方蓝字关注我,知识会给你力量在Flutter和在Native中,对一个Widget的尺寸测量,一直都是一个非常麻烦的事情,大部分时间,我们都是按照约束和具体的尺寸来进行布局,但有些时候,我们不得不拿到动态的Widget尺寸来实现自己的一些布局策略。通常来说,我们会有三方面的需求。测量自己的尺寸测量Parent的尺寸测量Child的尺寸测量自己的尺寸要获取你自身的Widget尺寸,其实只需要通...
2023-03-21 08:44:21
702
原创 FlutterComponent最佳实践之Timer的妙用
点击上方蓝字关注我,知识会给你力量Timer在Flutter中,通常是用来构建延时的异步任务的,在讲解它的妙之前,我们先来看看Timer的基操。Timer基操Timer广义上可以理解为一个倒计时器,它从创建到结束会经历下面三个过程:Creates a timerExecutes a callbackThe timer finishes创建一个Timer非常简单。finaltimer=Time...
2023-03-14 08:30:47
639
原创 Flutter中的异步执行策略
点击上方蓝字关注我,知识会给你力量在Flutter中,如何执行一段延迟执行的异步代码?我们可以找到下面这些方法。scheduleMicrotaskFuture.microtaskFutureFuture.delayedTimer.runWidgetsBinding.addPostFrameCallbackSchedulerBinding.addPostFrameCallback你可能会说,这是相当...
2023-03-09 08:30:26
761
原创 Flutter布局指南之约束和尺寸
点击上方蓝字关注我,知识会给你力量Flutter布局总纲——向下传递约束,向上传递尺寸。Box约束约束是Flutter布局的核心,在Flutter中,约束的表现形式是通过Constraints类来实现的,所有的非滚动布局模型,都通过BoxConstraints来进行约束,它的代码如下。从上面的代码可以看出,约束本质上就是「宽」「高」上的「最大」「最小」范围。BoxConstraints具有传递性,...
2023-03-06 08:30:50
1151
原创 FlutterComponent最佳实践之动画的显和隐
点击上方蓝字关注我,知识会给你力量Flutter中包含大量的动画组件和自定义动画方式,所以,在合适的场景下选择合适的动画实现方式就成了决定代码质量好坏的一个重要因素。动画选择决策树Flutter中的动画从广义上来讲可以分为两类,一类是基于绘制的动画(Drawing-based animations),另一类是基于代码的动画(Code-based animations)。下面这个决策树,是Flutt...
2023-02-28 08:30:57
663
原创 闲言碎语-第八期
点击上方蓝字关注我,知识会给你力量时间一晃就过去了,22年的总结还没来得及写,转眼已经2023年了。22年对于很多人来说,应该都是比较魔幻的一年,特别是在上海的朋友,一小半的时间都在居家办公,疫情不仅影响了工作,更影响了经济,很多人收入降级、失业,或是离开上海,完全放开后,大部分人都经历了一次痛苦的感染过程,一时间朋友圈全是新冠诊断现场直播,好在经历过这一次感染后,大部分人都回归了正常的生活轨道,...
2023-02-06 08:30:45
566
原创 Flutter混编工程之异常处理
点击上方蓝字关注我,知识会给你力量Flutter App层和Framework层的异常,通常是不会引起Crash的,但是Engine层的异常会造成Crash。而Flutter Engine部分的异常,主要是libfutter.so发生的异常,这部分的异常,在Dart层无法捕获,一般会交给类似Bugly这样的平台来收集。我们能主动监控的,主要是Dart层的异常,这些异常虽然不会让App crash,...
2023-02-06 08:30:45
1401
原创 后新冠时代
自从国家卫健委宣布防控放开之后,所有人都为之一震,原来的【躺平党】慌了,就这么分开了,都不缓一缓吗?原来的【封控党】也慌了,就这么分开了,我们的脸往哪放啊?也许刚放开的时候,大家都还没意识到会出现现在这幅境况,躺平党认为这就是普通感冒,大家都得一次就好了,封控党认为国家抛弃我们了。但实际上,不管是哪种观点,后面的路,都需要我们自己走了。这种猝不及防让所有人都很疑惑,前几天还没有48h核酸不能进饭店...
2022-12-25 15:26:36
1583
原创 Kotlin泛型的型变之路
点击上方蓝字关注我,知识会给你力量之前就写过一篇泛型的文章,但是总觉得写得不够系统,所以最近对泛型又作了些研究,算是对这篇文章的补充了。kotlin修炼指南7之泛型泛型,是为了让「类」、「接口」、「方法」具有更加通用的使用范围而诞生的,举个例子,假如我们不使用泛型,那么一个List中可以装得下任何对象,这么做的问题就在于,在使用时,需要对类型进行检查,不然就会转换异常。所以,我们需要将这种检查前置...
2022-12-19 08:30:16
1366
原创 APP动态路由的设计与实践
点击上方蓝字关注我,知识会给你力量本文作者——张涛「货拉拉」这篇文章是我在 2022【GIAC 全球互联网架构大会】分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现开放给大家阅读,希望能给买不到票参加分享的 开源实验室 读者带来帮助。大家好,今天跟大家分享的是一个开源路由TheRouter的设计。代码地址:https://github.com/HuolalaTech/hll-wp-ther...
2022-11-25 08:30:22
1502
原创 kotlin修炼指南9-Sequence的秘密
点击上方蓝字关注我,知识会给你力量人们经常忽略Iterable和Sequence之间的区别。这是可以理解的,因为即使它们的定义也几乎是相同的。interfaceIterable<outT>{operatorfuniterator():Iterator<T>}interfaceSequence<outT>{operato...
2022-11-14 08:30:29
1463
原创 kotlin修炼指南8—集合中的高阶函数
点击上方蓝字关注我,知识会给你力量Kotlin对集合操作类新增了很多快捷的高阶函数操作,各种操作符让很多开发者傻傻分不清,特别是看一些Kotlin的源码或者是协程的源码,各种眼花缭乱的操作符,让代码完全读不下去,所以,本文将对Kotlin中的集合高阶函数,进行下讲解,降低大家阅读源码的难度,下面看几个用的比较多的高阶函数使用。首先是sumOf,作为一个很方便的求和函数,它可以快速对集合内的某些参数...
2022-11-07 08:30:26
2044
Fragment使用动画问题
2014-09-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人