你是否厌倦了这种写法? 亦或是这样的代码? 那么今天,我将带你实现不一样的渠道、rom差异。 废话不多,先看效果~ 我们这里随便举个例子,不同平台打印不同的log,可以看到,...
你是否厌倦了这种写法? 亦或是这样的代码? 那么今天,我将带你实现不一样的渠道、rom差异。 废话不多,先看效果~ 我们这里随便举个例子,不同平台打印不同的log,可以看到,...
原来今天才是周六~那就今天水 自定义view怎么实现,我今天不想多说,毕竟也不是给新人看的。 那么今天直接讲一些实现自定义view的小技巧吧。 本期举例的自定义view只是抛...
今天周六~水一天。 之前的路由篇[https://www.jianshu.com/p/ce659c9c703a]我们大概讲了一个简单的模块化路由的实现思路,但是用起来比较麻烦...
我们的app开发时,都会有一个splash页面,用于提升用户体验。 原因是android app在启动时,由于application初始化等原因会有一个短暂的延迟,导致点击l...
如果有本方案不适用的业务场景,请留言指出~笔者将视情况扩展或给出解决思路~
手把手教你搭建android模块化项目框架(九)小试牛刀——优雅的登录方案你是否厌倦了这种写法? 亦或是这种写法? 那么今天,我将给你一个优雅的登录实现方案~ 说到登录,我们不得不聊到一个设计模式——状态模式,顾名思义,他是专门用来处理不同状态的不...
你是否厌倦了这种写法? 亦或是这种写法? 那么今天,我将给你一个优雅的登录实现方案~ 说到登录,我们不得不聊到一个设计模式——状态模式,顾名思义,他是专门用来处理不同状态的不...
经过几期的基础封装,我们的模块化项目基本已经达到了可用的状态,那么今天就来试试开发一个带搜索的列表页面开发吧~ 好吧,我承认偷懒了,中间漏掉了mvvm、paging的基础封装...
在andriod项目开发过程中,我们时常有这样的需求,例如:动态切换域名,动态切换abtest,动态切换服务器配置项等,但是开发过程中总是让服务器配合修改或者每次都修改代码后...
在androidx.lifecycle:lifecycle-common:2.6.1中,lifecycleScope.launchWhenResumed 标记了Depreca...
上期我们聊到room,本期就来简单说一下room的用法。常规room我们不聊怎么用了,跟着官方文档一步一步使用即可。 传送门[https://developer.androi...
本来想连room一起封装好的,但是临时有事,就先发个mmkv,下期我们研究room废话不多,先看效果 要达到这样的封装效果,我们先简单了解一个类,ReadWritePrope...
废话不多说,先看效果 android6.0以上需要动态请求权限,这里不多废话了,想达到一个简单高效的权限使用方式,就跟我一步一步去封装。之前比较好用的权限库是rxPermis...
前面我们说到,目前网络框架选择基本都为retrofit,目前算是最好用的android网络框架之一了。今天我们来封装一下retorit,让他更加好用。 以下代码使用的life...
前两节我们了解了android框架搭建的基础,这期我们来补充之前留下的坑:模块间通讯。模块间由于互相隔离,导致我们不能直接调用到其他模块间的方法、activity及fragm...
模块化的目的: 保证项目的可维护性。 加快编译速度,提升开发效率。 有一定的复用性,新项目可复用模块,节省开发资源。 android项目目前已经成熟了很多,官方也在寻找合适的...
本系列旨在帮助android新人搭建属于自己的项目框架。由于篇幅较长,本人时间有限,因此更新系列可能周期较长。本篇搭建框架适用于中大型项目。 经典框架选取 总模式:mvvm-...
在维护老项目中,由于项目使用了rxjava,但是新代码又大多数使用Kotlin而不想使用rxjava时,尤其是使用flow想做线程同步时可以将rxjava转换为flow进行使...
最近突发奇想编译一下ffmpeg最新版本,使用以前的脚本竟然失败了,想在网上找个现成的用用,居然也没有,折腾半天所以写个文章记录一下。环境 :ubuntu 21.10,ndk...
使用paging3开发时,官方demo只有包含LinearLayout的部分代码,当我们需要配合GridLayoutManager(spanCount=2)时,发现foote...
如何解决Can not perform this action after onSaveInstanceState 先分析问题发生原因 通过分析源码我们找到,当activit...