自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

codelang

无论何时,请保持学者的谦逊与宽容

  • 博客(71)
  • 收藏
  • 关注

原创 Compose 跨平台的现状

Compose 能应用于跨平台,主要是基于 KMM 架构,KMM 的介绍可以查看官方文档《Get started with Kotlin Multiplatform Mobile》,我们来看下 KMM 的简单架构:commonMain 为通用层模块,也可以被称为平台无关层,如果 commonMain 涉及到平台相关操作的话,则需要定义 expect 方法,让 xxxMain 模块去 actual 实现这个方法,这样,在不同的平台集成 KMM 时就可以实现各自平台的效果。从 KMM 架构可以看出,一些通用的逻

2022-07-02 22:55:33 2225 1

原创 我是怎么学习 Compose 的

最近一直在看 Compose 相关的东西,也算是从了解到入了个门,在将近一个月的课后(下班)学习中,输出了 3 篇原理性相关的文章,从文章标题可以看出,我是从原生与 Compose 之间的交互进行探索的:在看完官方文档的组件和一些优秀的开源项目,输出一个简单的 demo:效果如下:关于我的学习方式,引用一位博主的话:最后,将自己在学习 Compose 中看过的文章和好的示例 demo 都总结一下,为那些想学 Compose 的同学提供一些资料先从概览了解 Compose 是如何编写:Jetpack Com

2022-07-02 22:49:39 275

原创 Compose 中嵌套原生 View 原理

Compose 是用于构建原生 Android UI 的现代工具包,他只需要在 xml 布局中添加 ComposeView,或是通过 setContent 扩展函数,即可将 Compose 组件绘制界面中。Compose 天然就支持被原生 View 嵌套,但也支持嵌套原生 View,Compose 是通过自己的一套重组算法来构建界面,测量和布局已经脱离了原生 View 体系。既然脱离了这套体系,那 Compose 是如何完美支持嵌套原生 View 的呢?脱离了原生 View 布局体系的 Compose,是如

2022-07-02 22:44:48 764

原创 推送 leetcode 每日一题到企业微信

当初说过的刷题你刷了吗?LeetCode 的网页估计都没打开过吧?选择躺平了?不!我要让你卷起来。最近倒腾了下 云函数,发现腾讯云每个月都有 5w 的免费额度,对于自己使用完全足够,然后在 云函数 中加入触发 企微 机器人的逻辑,这样就可以达到 企微 群通知的目的。所以,基于这个思路,我在 企微 中加入了获取 LeetCode 每日一题的逻辑,然后将题目的详情内容通过 企微 的 webhook 地址来通知群机器人,云函数还可以加 定时触发,可以设置每天什么时候触发函数通过机器人,所以,我选择了上午 9

2022-03-13 09:42:31 346

原创 用 Github 实现组件自动发布

大家肯定都有这样的需求,将自己的组件发布出去给开发者使用,但苦于经常使用的 JCenter 已挂,自己搭个 Nexus 还要买服务器,看了 MavenCentral 的发布流程,简直痛苦到发麻,现在的 JitPack 还可以凑合着用用,但是发布要去网站手动点 Get it,而且最近还遇到了在 JitPack 发布插件无法发布的问题,种种问题都让我觉得现在的组件发布都非常的蛋疼。我们这次的目标是:在有限的资源里把事情做到极致!!!一、Github 现有方案Github 是可以通过仓库来充当 Maven

2022-03-10 10:38:32 1024

原创 我写了款依赖检查的插件

写这款工具主要是看了优酷的几篇 向工程腐化开炮 的系列文章,觉得其中的几个点可以通过依赖检查的方式提前找到问题,所以着手找了几个点写了下,并输出 report html 方便查看。一、检查目前该检查工具提供了 5 项内容的检查:so 文件检查64 位 so 未适配检查更安全的导出组件检查未匹配的权限检查uses-sdk 检查1、so 文件检查so 文件检查可以分析出依赖里面包含了多少个 so 文件,并且展示 so 大小,做这个可以辅助 apk 包体积优化来提前分析,哪些 so 文件过大

2022-03-08 21:53:25 2022

原创 弱引用该怎么用?

在工作实践中发现,大家写的代码很容易发生内存泄漏,我觉得这个主要问题是大家对弱引用和 gc root 的理解不够深导致,所以,打算写(水)一篇我的理解。​在 维基百科中对弱引用的解释是:在计算机程序设计中,弱引用与强引用相对,是指不能确保其引用的对象不会被垃圾回收器回收的引用。一个对象若只被弱引用所引用,则被认为是不可访问(或弱可访问)的,并因此可能在任何时刻被回收这个意思也很简单,简单翻译一下:​默认我们 new 创建的对象都是强引用,我们可以创建个弱引用来关联这个引用对象,但如果这个对象

2022-03-08 21:52:48 1197

原创 隐私合规代码排查思路

本文文章已首发「扣浪」公众号隐私合规整治不仅仅是排查一次就完,而是要做一个完整的体系来规范后面的编码,避免隐私代码调用又出现而触发合规问题。一个体系的完善,总体流程为:发现问题更改问题规范问题1、如何检查 “同意用户隐私” 之前的隐私代码调用?通过 as 去手动 Find in Fies ?那你怎么知道这个代码是在什么时机调用的呢?所以,静态检查隐私代码调用是不合适的。有没有一种能在运行的时候知道是哪些类调用了隐私 API 呢?有,我们的基础团队写了一篇《Android APP运行时行为

2022-03-08 21:52:03 2944

原创 Android 12 编译之坑

本文文章已首发「扣浪」公众号我们在完成 Android 12 适配之后主干 CI 集成打包没有问题,但在合入另一个需求的时候,立马就报 javac 编译失败,但只要把 compileSDK 降回 Android 11,他就没问题,然后我们针对该异常进行了各种 google,然后查到一篇 stackoverflow 的解决办法:通过升级 jdk 版本为 11 即可解决该问题,然后我们先本地进行了实验,将 jdk 环境升到了 jdk11,确实打包没有问题,由于我们的平台打包机环境用的是 jdk8,所以,我

2022-03-08 21:50:07 3795

原创 有效治理 BadTokenException

线上出现了如上的 crash,第一解决反应是在 show dialog 之前做个 isFinish 和 isDestroyed 判断,当我翻开代码正要解决时,我惊了,原来已经做过了如上的判断检测

2022-03-08 21:45:05 144

原创 凸多边形航线规划算法优化

本文是对参考文章《无人机航线规划思路剖析,基于凸多边形地块往复式运动》算法实现的一个优化,优化内容点:航线间隔的优化航线外扩注:接下来的内容,请务必掌握参考文章内容的知识点。航线间隔计算的优化优化前写法:作者使用了一个非常简单粗暴的写法,即用多边形外接矩形计算出最北方向和最南方向的距离,然后除以航线间隔距离,得出规划航线的数量:function distance(p1,p2)...

2019-12-01 11:26:24 3194 3

原创 一个 Handler 面试题引发的血案!!!

一位热心群友在面试时抛了一个问题:说下 handler 机制,Looper 通过 MessageQueue 取消息,消息队列是先进先出模式,那我延迟发两个消息,第一个消息延迟2个小时,第二个消息延迟1个小时,那么第二个消息需要等3个小时才能取到吗?鉴于这个血案,我们来翻翻案,一探究竟。已知Main Handler 在 ActivityThread 的时候就 Looper.loop...

2019-03-08 18:27:10 552

原创 一款简单的消息防抖框架

WQthrottle 是一款消息防抖框架,在一定的时间延时中做到只触发一次结果的回调。使用使用的话,还是看 github 的 README 吧。开发目的开发这款框架的初衷是为了解决以下的几个痛点:多余的操作请求多页面消息传递痛点一(多余的操作请求)这个痛点在我们的业务中经常出现,下面列出两个比较常见的业务操作:点赞在我们设计点赞的时候,每点击一次 赞 操作都会请求服...

2019-02-28 13:21:32 176

原创 实战Android Wifi P2p

在我们的应用设计中,有这么一个需求,将一台已连接无人机的Android手机(主机)的图传发送给另一台手机(从机),并且从机也可以控制主机的一些操作,以此达到无人机协作的目的。发送数据我们可以通过socket来实现,但前提是从机或是主机如何知道对方的IP和端口呢?Wifi P2PAndroid有一种连接方式叫 Wi-Fi点对点(P2P),他不需要组织局域网环境,在手机两端打开wifi就可以搜索到...

2018-12-12 16:03:56 3098 1

原创 关于RxJava使用的一些思考

最近在工作中,频繁的使用了Rxjava来解决一些问题,在使用过程中也给予了自己一些思考,如何使用好RxJava,在什么样的场景中才能发挥它更好的作用,如何脱离代码来理解RxJava的工作机制,下面是自己一些浅显的思考。示例太多示例喜欢链式的把RxJava的流程表述起来,这个地方我把观察者和订阅者拆开来看。Observable<String> observable = Observ...

2018-11-30 09:23:31 1868

原创 点赞处理的一些小技巧

今天来讲一些平时用的小技巧,然后由此引申一些其他的小技巧。点赞是我们平时业务开发最常接触的,但如何更投巧的去做这块,还需要细细的开动小脑筋,下面会有一些和平时开发的对比,慢慢品味吧连续点赞网络请求处理在我们处理点赞业务中,主要处理“赞”图片的翻转和结果的网络请求,按照我们常规操作的话,每一次点击,都会把结果告知服务器,操作伪代码如下: boolean zanFlag ...

2018-09-13 19:57:08 1829 3

原创 weex在运行上遇到的坑

注意:如果运行命令的时候遇到permission权限问题的话,记得在命令前面加上sudo 创建weex项目$ weexpack create appName 下载安装依赖包$ cd appName && npm install ios$ weexpack platform add ios android$ w...

2018-08-18 16:13:11 43558 2

原创 Android应届生在杭州的求职经历

背景2018年毕业于一个普通的二本院校,向大厂扔过几次简历,就跟打水漂一样,最终沉底,从上海离职到杭州,对于一个应届生来说是一次艰难的选择,更稳妥的方式应该是在实习结束后,留在原公司再呆一年。话虽是这么说,但还是得视情况而定,我总是告诫自己,当周围学不到任何东西的时候,我们就该考虑离开这样的舒适区。来杭州了一个礼拜,收到了4个offer,其中让我印象深刻的,就是技术主管对于应届生这个身份,...

2018-07-30 17:41:08 1397 2

原创 flutter之从零开始搭建(三)之 网络请求

flutter之从零开始搭建(一)之 BottomNavigationBarflutter之从零开始搭建(二)之 Navigator路由flutter之从零开始搭建(二)之 网络请求项目还是在原来的基础上搭建,具体的可以看上面的连接这次,我们来介绍下网络请求,并且将请求到的数据设置到ListView列表中。老规矩,先来看下效果图页面看起来不错吧,在动手之前还是得说一下,...

2018-07-06 14:40:49 10840

原创 flutter之从零开始搭建(二)之 Navigator路由

flutter之从零开始搭建(一)之 BottomNavigationBarflutter之从零开始搭建(二)之 Navigator路由flutter之从零开始搭建(二)之 网络请求今天我们来讲讲利用Navigator来跳转页面的功能,承接上一篇flutter之从零开始搭建(一)之 BottomNavigationBar继续讲。页面跳转是我们在入门学习的必备知识,在flutter中...

2018-07-06 14:40:19 7560

原创 flutter之从零开始搭建(一)之 BottomNavigationBar

flutter之从零开始搭建(一)之 BottomNavigationBarflutter之从零开始搭建(二)之 Navigator路由flutter之从零开始搭建(二)之 网络请求坐看不如实战来的有效率,这几天都在看flutter的一些布局和特性,打算从零开始搭建一个应用,中间可能会因为一些原因断了文章,但是会慢慢补上。 学移动端的套路:在学习移动开发的时候,一般都是按...

2018-07-06 14:39:35 8616 1

原创 最全的屏幕适配方案

使用直接在Application的onCreate方法中调用(Density类直接参照附录)Density.setDensity(this, 375f);这个地方我们需要注意375f这个参数,针对这个参数,我们来好好说说。375这个值是一个UI图的参照值,单位是dp,我参照的是1334*750像素的图然后我们来看下px与dp的转换图 Android 单位...

2018-06-29 13:08:14 5252 5

原创 关于undefined is not an object(evaluating 'HotUpdate.downloadRootDir')错误的解决办法

讨论,这是react-native中文网的官网的回答,我再次补充一点。有很多开发者用了下面的命令成功了发现运行还是不行$ npm install -g react-native-update-cli$ npm install --save react-native-update$ react-native link react-native-update也有的说link了也还是没用...

2018-06-28 11:26:29 16476

原创 谈谈组件化-从源码到理解

这几天一直在组件化架构方面的知识点,下面主要分析一下“得到”的组件化方案和Arouter实现组件间路由的功能。组件化涉及到的知识点得到的方案最近一会在探索组件化的实现方案,得到是在每个组件的build.gradle给annotationProcessorOptions设置host参数,这个参数就是我们当前组件的Group,apt拿到这个Group名称拼接需要生成的路由表类的全路...

2018-06-04 15:35:06 964

原创 LeakCanary源码分析

使用app的build.gradle配置dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'}Application配置...

2018-05-08 14:31:28 256

原创 从源码角度来理解TabLayout设置下划线宽度问题

看了下网上很多的文章来设置下划线宽度的问题,有点杂乱无章,有的博文直接贴代码,无法理解设置的过程和实际的意义,看来只能自己动手才能丰衣足食了。使用 viewPager = (ViewPager) findViewById(R.id.qbdd_viewpager); viewPager.setAdapter(new MyViewPagerAdapter(...

2018-04-08 17:31:50 646

原创 如何正确设置动态TextView的textSize

今天测试测出了一个问题,在高分辨率下TextView的显示没问题,在低分辨率出现了字体特别的小,也就是没适配好。左边的是 768 * 1028 分辨率的机子,右边的是 1440 * 2560 分辨率推荐新闻部分是动态设置的TextView,出现了适配问题,然后来看看我的代码 第一次尝试 TextView tv = new TextView(mContext);...

2018-03-28 15:09:23 5694

原创 体验了一把快应用

十大手机厂商共推快应用标准,发布会完美落幕3月20日,小米、中兴、华为、金立、联想、魅族、努比亚、OPPO、vivo、一加,共十家手机厂商在北京联合召开快应用标准启动发布会,手机厂商与中国信息通信研究院、电信终端产业协会、中国软件行业协会及数百家知名移动互联网应用企业共襄盛举,共同见证移动应用新生态的到来。哇塞,好牛逼,此处来个掌声,然后各个公众号、朋友圈、新闻都在发快应用的新闻,我靠,再...

2018-03-22 15:42:49 2117

原创 Android的Nexus搭建Maven私有仓库

前言我们平时在开发的时候总会compile一些远程仓库的框架来使用,但不可避免的是有些公司是内网,或是断网了,这就造成了依赖失败,亦或是自己开发了一个很牛的组件,希望同步给小伙伴一块耍耍,但是网络环境不允许,总不能拿个U盘拷贝过去吧,被别人听到程序员是这么协作的,估计会笑掉大牙。 Nexus这个私服正好解决了这个问题,他的思路是本地与远程之间嫁接一层本地的服务器,对于公司内部团队协作开发的

2018-01-08 11:33:57 341

原创 用kotlin来实现一个打方块的小游戏

前言今天来做个打方块的小游戏,继续熟悉kotlin的语法,看下要实现的效果图看着效果图好像挺难的样子,但理清思绪后,你会发现特别的简单,还是那句话,学习方法最重要 思路构造界面 : 这个部分比较简单,根据控件的比例来画小球、挡板和击打的方块,所有击打的方块存储在一个集合里面,方块里面存储的信息有left、top、right、bottom位置信息和是否被击打过了的标志挡板的滑动 :下面的挡板需

2017-12-23 16:44:18 753

原创 打造万能的EmptyLayout

前言最近一直在做新项目,做的途中也一直在思考,如何让开发更加的方便,界面的实现更加的优雅,于是,就去github稍微搜索了一下好的例子,结果不尽人意,要么太臃肿,要么移植难,要么结构不清晰,于是,就打算自己来实现一个 效果图 代码使用 LoadingLayout loadingLayout; @Override protected void onCreate(Bu

2017-12-16 14:41:37 482

原创 用kotlin来实现一个饼图

前言代码不难,所以打算用kotlin来实现,增加熟练度 先看看做的是什么

2017-12-08 11:40:04 1134

原创 纯手工打造Easy支付库

纯手工打造Easy支付库 前言接触微信支付的开发者都知道,微信支付的所有处理都是在WXPayEntryActivity类里面,按一般开发流程走的话,我们在订单页面发起PayReq支付,微信调起支付页面,支付的结果处理会调用WXPayEntryActivity的onResp方法,根据BaseResp返回的结果码来判断当前的支付结果,整个思路是没错的,关键是有一点,WXPayEntryActivi

2017-11-26 13:22:56 402

原创 仿电商商品分类的思路实现

仿电商商品分类的思路实现 引言按照以前的习惯,本来是每周一篇,因为昨天去逛街买了条169的裤子给耽误了,周一早上来补上。 丑豆很早就让我给他写一下这个demo,每次都有点忙没给他写,趁着昨天晚上睡前一小时来搞定。 效果图我参照的是拼多多商品分类的界面来写的,先看看样图然后看看动态的效果图 实现思路这个页面用了两个并排的列表,右边列表每个item都有一个type对应左边的列表ite

2017-11-20 11:32:44 1858

原创 Mac终端使用ssh操作远程服务器

最近把腾讯云服务器重装了下,换了centos系统,因为用的mac,一直找不到像win下的xshell那种远程连接的工具,查了下资料,凭借mac牛的不要不要的终端就可以完成远程的连接操作操作如下:example(例子): ssh user@IPexplain(解释): ①、user:指远程服务器的用户名 ②、IP: 指远程服务器的ip地址picture(示例图):输入完成后,需要输

2017-10-18 10:25:26 2938

原创 React-Native之undefined is not an object

react-native报undefined is not an object错误

2017-10-17 10:45:24 4704

原创 畅聊微信支付遇到的坑

好久没更博了,甚是想念,工作的日子再也没有学校的那种悠闲,仕途一片迷茫,走一步看一步…列出自己开发中微信遇到的坑示例demo有坑爹的歧义支付的回调操作签名错误示例demo有坑爹的歧义刚接触微信支付文档的时候,是一种懵逼的状态,一般大家都会去找示例demo玩玩,讲真,我不建议大家看示例demo玩,里面的代码给开发者很多的误解,有的开发者看了代码,误以为订单的一些信息是前端去生成的,在支付中,是

2017-09-19 11:08:17 1140

原创 查看java编译过程的JAD工具

今天带来一个好玩的工具——JAD,他是干什么的呢,这个工具可以把java的类文件反编译成java的源代码,用过android反编译的肯定玩过JD_GUI这个工具,他可以查看.jar文件里面的类信息,虽然JAD没有JD_GUI那么的强势(JAD看不了jar文件),但是,对于学java的一些执行过程来说,还是很有帮助的,关键是十分的有趣。使用必备工具:JAD.exe下载链接,我们下载下来最好放在配置了j

2017-06-05 22:24:23 688

原创 Struts与Servlet遇到的404问题

最近在倒腾struts框架,在自己打算新建servlet进行处理数据的时候,发现servlet怎么访问都访问不到,看了下路径和配置都是正确的,没有问题,报错如下。HTTP Status 404 - There is no Action mapped for namespace [/] and action name [Test] associated with context path [/stru

2017-05-24 10:42:10 888

原创 Retrofit2.0源码解析

最近看了一下Retrofit2的源码,感觉并不是很难,但是对于其中的设计方式大为赞叹,怪不得会成为现在最流行的网络请求框架,Retrofit感觉就像是一个包装壳,我不干请求这种脏话,还是你okhttp干吧,毕竟你做得好,在内部来说我就是专门给你检查检查一些url接口的规范,或是是一些Request,你就专心干你的请求就行,对于外部使用者来说,我什么都给你封装好了,你要啥我就给你啥,你想要什么类型的结

2017-05-20 14:30:39 782

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除