240 发简信
IP属地:广西
  • 写的太棒了,意犹未尽

    Android Gradle学习(八):统计Task执行时长

    关于 Gradle 的基本知识,前面章节已经讲的差不多了。那么,我们现在来牛刀小试一下,看看 Gradle 有什么用武之地。 我们在将 Android 应用程序打包成 apk...

  • 我说那块怎么看起来很别扭,感觉应该是这样的

    Android Gradle学习(五):Extension详解

    前面我们已经详细讲解了 Gradle 的 Task、Project 等基本用法,现在我们还要学习一个很重要的概念 Extension,它在 Gradle 中几乎随处可见,特别...

  • 性能优化-界面卡顿和丢帧(Choreographer 代码检测)

    标签: Choreographer UI卡顿 UI丢帧 作者公众号: 本文将介绍3个知识点: 获取系统UI刷新频率 检测UI丢帧和卡顿 输出UI丢帧和卡顿堆栈信息Choreo...

  • 作者写的太好了,适合我这种初学者

    Gradle Plugin入门使用

    一、学习目标 1、 了解 Gradle Plugin 的作用是什么? 2、 如何去定义一个 Gradle Plugin? 3、 自定义插件扩展Extension。 一、Gra...

  • 在自定义插件中注册插件扩展类,在应用插件的module中为插件扩展属性赋值,在自定义插件中获取外部(应用插件的module)的赋值。gradle插件往往配合transform使用。

    Gradle Plugin入门使用

    一、学习目标 1、 了解 Gradle Plugin 的作用是什么? 2、 如何去定义一个 Gradle Plugin? 3、 自定义插件扩展Extension。 一、Gra...

  • 写的太棒了

    如何开发一款高性能的gradle transform

    前言 对于java开发者来说,大家好像都比较喜欢在编译期间搞事儿,比如为了做到AOP编程,大家都喜欢利用字节码生成技术,常用的有无痕埋点,方法耗时统计等等。那么Android...

  • 有点想当然了,产品的需求是五花八门的,谁能保证已有的功能满足奇怪的需求。

    Android okhttp缓存真正正确的实现方式

    前言 关于okhttp的缓存,网上有大量的文章,或相同,或不同,方式不一,但都八九不离十,原理都是通过CacheControl的设置策略不同来实现的。但是,真正实践过的人会发...

  • 120
    注解与APT注解处理器技术详解

    知识点汇总: 一:什么是注解 二:注解处理器概述 三:注解处理器核心类解析 四:如何调试注解处理器 五:通过注解处理器动态生成代码 六:问题汇总 七:扩展阅读 一:什么是注解...

  • 博主写的太好了!我开始学习自定义gradle插件,看了七八篇文章这是唯一带我跳过坑的。我遇到的坑是使用独立项目创建完插件发布到本地maven后,在本地module中引入时一直报错:class文件找不到,最终原因是引用本地插件的路径没写对,正确路径:maven{url uri('./repos')}。记得使用插件时apply plugin:xxxx ,xxxx是properties文件的名字。一次创建多级文件夹时,用斜杠分割,不要用点分割,xxx/yyy/zzz/。

    Android 自定义Gradle插件的3种方式

    前言 Gradle插件在Android中的应用很广泛,很多字节码插桩方案就用到了这方面的知识,Android官方提供了很多可用的插件,比如apply plugin: 'com...

  • 简洁易懂,太棒了这文章

    Handler(二)Native实现

    本文基于Android9.0源码 引言 通过上一篇Handler(一)源码解析[https://www.jianshu.com/p/f177a1679c79],我们对Hand...

  • android9.0反射获取android.view.WindowManagerGlobal的属性会报错,是不是不允许反射获取framework层属性了

    WindowManager、ViewRootImpl、DocerView几个问题的理解

    这篇文章我不会去走一遍这几位的源码,只是提出几个关于他们的问题,附上我的理解,是自己的一个笔记,也希望能帮到有同样困惑的同学。 WindowManagerGlobal跟Vie...

  • 关闭硬件加速时调用view的invalidate方法,最后整个view树上的view的onDraw方法都会执行。是因为最终调用了DecorView的draw方法,然后在它的draw方法中调用了dispatchDraw方法,在dispatchDraw方法中会遍历子view调用子view的draw方法从而调用onDraw方法(draw方法定义在View类中,dispatchDraw方法定义在ViewGroup类中,刚开始我在DecorView以及FrameLayout中都没找到dispatchDraw)。不知道我这样理解invalidate执行的结果是否正确,希望博主有时间给答疑一下,谢谢。

    Android中View的更新方法:invalidate()和requestLayout()

    前言我们在自定义View时可能需要更新View的显示,比如为View添加动画等等,有两个方法是我们经常会用到的:invalidate()和requestLayout(),本文...

  • 我用红米K40手机测试,调用invalidate()关闭硬件加速时onDraw方法三个控件都执行,开启硬件加速时onDraw方法点击的控件执行。调用requestLayout()关闭、打开硬件加速时onMeasure、onLayout点击控件和父控件都执行,结果跟博主是一样的。我用平板测试则有点不一样,就不细说了。非常感谢博主这么好的文章,讲的很细致,尤其是把onDraw和onMeasure为什么没有执行的原因给讲明白了,大部分文章其实都没有讲这部分。

    Android中View的更新方法:invalidate()和requestLayout()

    前言我们在自定义View时可能需要更新View的显示,比如为View添加动画等等,有两个方法是我们经常会用到的:invalidate()和requestLayout(),本文...

  • 分析的很好啊,不看源码真的一头雾水

    ViewModel之自定义构造函数

    刚入坑架构组件没多久,发现很多基础性的东西理解起来是没什么问题的,但是一到具体使用就各种问题,相关实践文章也比较少,更多的只能靠自己解决 = =。今天无意间了解了Androi...

  • 感谢分享。试了一下在华为畅享9e两种命令都可以。在moto z play手机上是不可以的,提示没有访问权限,如果作者能看到的话,希望能给个答案。

    Android 导出data/data目录数据库

    我们调试 App 的时候有时候要去除应用下 data/data/ 的文件,之前我都是运行在虚拟机上,然后再取出数据。今天发现一个好的方法,可以在真机上(不用 root )直接...

  • 果然有效,感谢感谢!

    Tablayout使用全解,一篇就够了

    前言 Tablayout继承自HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在App中。 但有的产品经理偏偏是个磨人的小妖精,真的...

  • 资源文件的值单位为px时,三个函数也不会抛出异常,只是单位是px时,不会再去乘屏幕密度density。

  • 120
    RecyclerView(3)-LayoutMagager源码解析,LinearLayoutManager

    上一节RecyclerView(2)- 自定义Decoration打造时光轴效果也已经写完了,希望有看到我文章的同学能有一些收获。layoutManager可以说是一个重中之...

  • 有图有真相,厉害。

    RecyclerView添加自定义ItemDecoration实现(1)

    对于RecyclerView的使用想必大家都很熟悉,下面先看两张LinearLayoutManager和GridLayoutManager的示例 上面展示的是没有分割线的示例...