
Android 进阶
文章平均质量分 94
程序员徐师兄
程序员徐师兄、7年大厂程序员经历。全网粉丝30W+,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战,可以通过任意一篇文章底部联系我
展开
-
Android RecyclerView实现吸顶动态效果,详细分析
需要注意的时,当我们的第二个组名到顶部的时候,要把当前顶部的组名给替换掉。通过这种方法绘制的任何内容都将在项目视图被绘制之后被绘制,因此将出现在视图上方。方法添加 decoration 的时候,RecyclerView 就会调用该类的 onDraw 方法去绘制分割线,也就是说:分割线是绘制出来的。通过此方法绘制的任何内容都将在绘制项目视图之前被绘制,因此将出现在视图的下方。View 添加具体的图画或者 layout 的偏移,对于绘制 View之间的分割线,视觉分组边界等等是非常有用的。原创 2023-05-16 16:53:01 · 1145 阅读 · 2 评论 -
一步步带你读懂 Okhttp 源码
一步步带你读懂 Okhttp 源码原创 2023-04-07 23:31:31 · 132 阅读 · 0 评论 -
面试官,Android 怎样实现 Router 框架?
面试官,Android 怎样实现 Router 框架?,Router 框架原理原创 2023-04-07 23:30:05 · 442 阅读 · 0 评论 -
Android 如何监控和解决ANR问题
Android 如何监控和解决ANR问题原创 2023-03-28 22:38:55 · 1134 阅读 · 0 评论 -
Android RecyclerView 实现瀑布流
瀑布流也是个常用的显示控件了,但是在使用时经常遇到一些问题,比如滑动回顶部后出现空隙、item在滑动时乱跳等问题。下面就来说说我怎么实现的瀑布流,并且怎么处理上面所说的这些问题的。我使用了原生控件RecyclerView+StaggeredGridLayoutManager来实现的瀑布流,没有用第三方开源框架。下面以2列的瀑布流为例子开始讲解。原创 2023-03-10 20:44:30 · 6582 阅读 · 4 评论 -
Android RecyclerView 使用大全 - 基础使用,item 动画,下拉刷新等
是官方在5.0之后新添加的控件,推出用来替代传统的ListView和GridView列表控件。原创 2023-03-10 20:40:13 · 3334 阅读 · 0 评论 -
Android 自定义最大宽度,高度, 宽高比例 Layout
这篇博客主要介绍的是怎样自定义一个可以指定最大宽度,高度,以及宽高比的 Layout。原理其实很简单,就是通过重写 onMeasure 方法,重新制定 MeasureSpec。原理其实很简单,对自定义 View 有基本了解的人都知道,View 的宽度和高度,是在 onMeasure 方法中进行测量的,他们的大小受 MeasureSpec 的影响。既然如此,那么我们在继承 FrameLayout,重写它的 onMeasure 方法。原创 2023-03-05 23:56:28 · 2146 阅读 · 0 评论 -
Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)
HTTP协议(超文本传输协议)和 UDP(用户数据包协议),TCP 协议(传输控制协议)TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议,arq协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。原创 2023-03-05 23:54:56 · 386 阅读 · 0 评论 -
Android 11 来袭,一起来看看怎么适配
Android 11为目标平台的应用,从后台发送自定义view的Toast消息系统会进行屏蔽。前台使用不受影响。Toast相应的setView和getView也已经废弃不建议使用。如果要在后台使用,推荐使用默认的toast或Snackbar替代。原创 2023-03-01 21:18:00 · 2688 阅读 · 0 评论 -
【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview
讲解之前,先简单说一下嵌套滑动的一些概念。(熟悉这个的哥们可以直接跳过这个)说到嵌套滑动,大家应该都不陌生。他是 Google 在 5.0 之后推出来的 NestedScroll 机制。可能初学者会有这样的疑问?想比较于传统的事件分发机制,NetstedScroll 机制有什么优点。在传统的事件分发机制 中,一旦某个 View 或者 ViewGroup 消费了事件,就很难将事件交给父 View 进行共同处理。而 NestedScrolling 机制很好地帮助我们解决了这一问题。原创 2023-03-01 21:18:27 · 315 阅读 · 0 评论 -
Android View 事件分发机制,看这一篇就够了
对于屏幕的点击,滑动,抬起等一系的动作,其实都是由一个一个MotionEvent对象组成的。ACTION_DOWN:手指刚接触屏幕,按下去的那一瞬间产生该事件ACTION_MOVE:手指在屏幕上移动时候产生该事件ACTION_UP:手指从屏幕上松开的瞬间产生该事件ACTION_CANCEL 当前 View 的手势被打断,后续不会再收到任何事件从 ACTION_DOWN 开始到 ACTION_UP/ACTION_CANCEL 结束我们称为一个事件序列。原创 2023-02-26 23:59:58 · 592 阅读 · 0 评论 -
巧用别名和 sh 脚本,adb 快速截图和录屏,提高你的效率
在平时开发过程中,我们经常需要截图和录制视频,尤其是客户端开发和测试。可能有一些人的姿势是这样的。在电脑上开个模拟器,使用第三方工具后进行截图和录屏。还有一种最原始的方式,在手机上截图和录制视频,然后再通过 QQ 等工具发送到电脑,这多累呀。其实,有一种很简便的方式,那就是说通过别名和 adb,一个简单命令,让你快速截图和录制视频,如 adbshot, adbrecord。下面让我们一起来看一下,怎么实现?原创 2023-02-27 00:00:39 · 1632 阅读 · 0 评论 -
Android 编译 gradle 内存 OOM 解决之路
可以看到,我们这次的问题解决思路大概是这样的。从 error 日志排查发现,很有可能跟 transfrom 相关排查项目里面 transfrom 相关的,有没有相关的dump JVM 内存,看线程相关的,观察是否异常debug gradle assemble 任务,观察 线程名包括Thread 的调用堆栈分析 调用堆栈,找到原因结合 gradle 官方代码,查看问题是否已经解决那有没有更快的方法呢?原创 2023-02-25 22:43:34 · 382 阅读 · 0 评论 -
Android 面试必备 - JVM 及 类加载机制
最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号徐公,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果觉得对你有所帮助的话,请帮忙 star。Android 面试必备 - http 与 https 协议Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)Android 面试必备 - 线程Android 面试必备 - JVM 及 类加载机制Android_interview github 地址。原创 2023-02-23 23:52:04 · 269 阅读 · 0 评论 -
Android JetPack App Startup 使用及源码浅析
前一阵子,写了几篇 Android 启动优化的文章,主要是从两个方面论述的。Application 多线程异步加载,以及怎么解决多线程任务依赖的问题首页布局优化,从常规的布局嵌套优化到渐进式加载,再到异步加载。Android 启动优化(一) - 有向无环图Android 启动优化(二) - 拓扑排序的原理以及解题思路Android 启动优化(三)- AnchorTask 开源了Android 启动优化(四)- AnchorTask 是怎么实现的。原创 2023-02-23 23:49:57 · 400 阅读 · 0 评论 -
一步步带你读懂 Okhttp 源码
okHttp, square 公司开源的网络请求神器,截止到 2019-09-02,在 Github 上面已经超过 34K 的 star,足见他的受欢迎程度。到目前为止,他的最新版本是 4.1.0, 使用 kotlin 语言写的,由于本人对 kotlin 语言不是很熟悉,这篇文章已 3.5.0 的版本为基础进行分析。Rxjava+Okhttp+Refrofit 如今已经成为项目网络请求的首选,在讲解原理之前,我们先来看一下 Okhttp 的基本使用。创建 OkHttpClient 对象。原创 2023-02-21 21:22:47 · 158 阅读 · 0 评论 -
责任链模式以及在 Android 中的应用
这几天在重新阅读 Okhttp 源码的时候,看到了 Okhttp Interceptor 的应用,想起了责任链模式,于是,动手将自己对责任链模式的理解记录了下来,希望对大家有所帮助。原创 2023-02-21 21:22:35 · 195 阅读 · 0 评论 -
Android 启动优化(二)-有向无环图的原理以及实现方式
春节之前,更新了一篇博客Android 启动优化(一) - 有向无环图,反响还不错,今天,让我们一起来看一下,怎样用代码实现有向无环图。这篇博客从实战的角度出发,介绍了有向无环图的两种解法,入度表法和 DFS 法。其中,入度表法很重要,必须掌握。下一篇,我们将从 项目实战的角度来讲解,怎样搭建一个有向无环图的通用框架,敬请期待。原创 2023-02-16 23:10:49 · 328 阅读 · 0 评论 -
Android 启动优化(一) - 有向无环图是原理
说到 Android 启动优化,大家第一时间可能会想到异步加载。将耗时任务放到子线程加载,等到所有加载任务加载完成之后,再进入首页。多线程异步加载方案确实是 ok 的。但如果遇到前后依赖的关系呢。比如任务2 依赖于任务 1,这时候要怎么解决呢。最简单的方案是将任务1 丢到主线程加载,然后再启动多线程异步加载。如果遇到更复杂的依赖呢。任务3 依赖于任务 2, 任务 2 依赖于任务 1 呢,这时候你要怎么解决。更复杂的依赖关系呢。原创 2023-02-16 23:08:40 · 158 阅读 · 0 评论 -
腾讯 Matrix 增量编译 bug 解决,PR 已被官方采访
最近,我们项目在接入微信 Matrix,刚开始接入的时候,还蛮顺利的。到了下午,运行项目,偶现 crash。看了一下报错信息,某些 class 文件在 dex 文件中没有找到,即 ClassNotFoundException。clean 了一下,发现好了,就继续开发,跑了几次,发现突然又 crash 了,这时候我第一感觉怀疑是 matrix 导致的。原创 2023-02-15 23:11:03 · 546 阅读 · 0 评论 -
Java 编译时注解 —— 入门教程
一个简单的自定义注解例子// 表示是基于编译时注解的// 表示可以作用于成员变量,类、接口指定默认值// 表示是基于编译时注解的// 表示可以作用于成员变量,类、接口int id();//使用@Seriable(id = 1) //name有默认值可以不写关于怎样自定义一个注解,可以参看这一篇博客,Android 自定义编译时注解1 - 简单的例子。原创 2023-02-14 23:46:27 · 272 阅读 · 0 评论 -
面试官 - https 真的安全吗,可以抓包吗,如何防止抓包吗
https 真的安全吗,可以抓包吗,如何防止抓包吗原创 2023-02-14 23:42:58 · 452 阅读 · 0 评论 -
一文总结 Android 隐私合规代码思路
这个地方就需要大力发展我们的 lint 检查工具了,将隐私 api 这块能力再丰富一下,但我看现有的很多 lint 工具还是有弊端,每一项规范都需要去写 UastScanner 类,其实很多检查项他们都是相同的代码,只是检查的方法和类不同而已,这块完全可以做成 lint 配置化,读取配置文件来实现,圆圆大佬有出一款基于配置检查的 [AndroidLint]工具,我们可以只需要将隐私 api 配置到custom_lint_config.json 文件中即可。所以,静态检查隐私代码调用是不合适的。原创 2023-02-10 22:56:14 · 770 阅读 · 0 评论