Android进阶
文章平均质量分 85
Notzuonotdied
一个人优秀的可怕的三个迹象:高度的自律,近乎疯狂的努力;对自己好,学会不计代价的投资自己;相信自己,不在乎他人的眼光。
展开
-
Android aosp源码阅读
前言最近因为找工作,需要频繁查阅Android源码。因此,打算在本地硬盘上下载Android源码,通过Android Studio来阅读。Android 源码构建:https://source.android.com/setup【建议直接阅读该文档】操作流程配置硬盘由于我使用的是MacOS,所以仅提供MacOS的配置流程。打开Disk UtilityFile -> New Image -> Blank Image按照下图配置一块200G,区分大小写的磁盘分区。一定要区分原创 2021-12-16 20:46:18 · 3745 阅读 · 0 评论 -
自定义UI 自定义布局
系列文章目录自定义UI 基础知识自定义UI 绘制饼图自定义UI 圆形头像自定义UI 自制表盘自定义UI 简易图文混排自定义UI 使用Camera做三维变换自定义UI 属性动画文章目录系列文章目录前言布局流程简介具体流程实现源码View#onMeasureView#onLayoutViewGroup#onMeasureViewGroup#onLayoutonMeasure 入参解释自定义布局自定义 onMeasure完全自定义 onMeasure附录前言这系列的文章主要是基于扔物线的H原创 2021-08-15 16:57:05 · 542 阅读 · 0 评论 -
自定义UI 属性动画
系列文章目录自定义UI 基础知识自定义UI 绘制饼图自定义UI 圆形头像自定义UI 自制表盘自定义UI 简易图文混排自定义UI 使用Camera做三维变换文章目录系列文章目录前言属性动画和视图动画的区别android.view.View#animate使用示例属性动画定义View 定义android.animation.ObjectAnimator使用示例属性动画定义View 定义多动画串行示例多动画并行示例指定动画关键帧示例使用 TypeEvaluator属性动画定义View的定义文字滚原创 2021-08-09 23:16:19 · 838 阅读 · 0 评论 -
自定义UI 使用Camera做三维变换
系列文章目录自定义UI 基础知识自定义UI 绘制饼图自定义UI 圆形头像自定义UI 自制表盘自定义UI 简易图文混排文章目录系列文章目录前言创建绘制对象加载图片自定义绘制内容定义绘制的位置变换流程解析变换参数左上部分变换右下部分变换3D变换附录源码前言这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。扔物线课程源码:CameraView.javaAndroid官方文档:自定义绘制这一篇文章主要介绍的是Camera做三维变换,更多细节请见:HenC原创 2021-08-07 12:40:30 · 512 阅读 · 0 评论 -
自定义UI 简易图文混排
系列文章目录自定义UI 基础知识自定义UI 绘制饼图自定义UI 圆形头像自定义UI 自制表盘文章目录系列文章目录前言创建绘制对象加载图片自定义绘制内容绘制图片绘制文字文本宽高获取测量文字宽度文本绘制的位置实现代码附录源码前言这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。扔物线课程源码:ImageTextView.javaAndroid官方文档:自定义绘制这一篇文章主要介绍的是文字的测量,更多的内容可以参考:HenCoder Android 开发原创 2021-07-18 17:00:58 · 683 阅读 · 1 评论 -
自定义UI 自制表盘
系列文章目录自定义UI 基础知识自定义UI 绘制饼图自定义UI 圆形头像文章目录系列文章目录前言创建绘制对象设置布局位置自定义绘制内容表盘参数说明绘制表盘弧度绘制表盘刻度准备刻度柱子绘制表盘刻度绘制指针附录前言这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。扔物线课程源码:Dashboard.javaAndroid官方文档:自定义绘制创建绘制对象我们需要创建一个画笔????Paint来绘制我们的表盘。public class Dashboard原创 2021-07-11 17:48:16 · 1006 阅读 · 0 评论 -
自定义UI 圆形头像
系列文章目录自定义UI 基础知识自定义UI 绘制饼图文章目录系列文章目录前言创建绘制对象加载头像自定义绘制内容绘制头像边框绘制头像融合图层Xfermode融合图片验证1设置离屏缓冲canvas#saveLayercanvas#restoreToCount设置离屏缓冲位置附录源码前言这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。扔物线课程源码:AvatarView.javaAndroid官方文档:自定义绘制创建绘制对象我们需要创建一个画笔????Pa原创 2021-07-06 23:48:35 · 956 阅读 · 9 评论 -
自定义UI 绘制饼图
系列文章目录文章目录系列文章目录前言绘制饼图创建绘制对象设置布局位置实验效果自定义绘制内容绘制扇形绘制扇形图将扇形图往外拉原理解析附录前言这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。绘制饼图扔物线课程源码:PieChart.javaAndroid官方文档:自定义绘制创建绘制对象我们需要创建一个画笔????Paint来绘制我们的饼图。public class PieChart extends View { // 饼图的半径 private原创 2021-07-04 15:20:39 · 434 阅读 · 0 评论 -
自定义UI 基础知识
系列文章目录文章目录系列文章目录前言自定义UI自定义视图组件补充知识点附录前言最近在学习Android自定义UI。在网上搜索了一番关于自定义UI的内容,发现目前反馈最好的应该是扔物线的自定义UI教程(腾讯课堂的上课链接)。在万能的Github交友社区找到了扔物线的HenCoderPlus课程的源码。这系列的文章主要是基于扔物线的源码来分析学习。本篇文章不详细介绍一些官方已经有详细讲解的内容,仅仅是作为官方文档外补充的笔记^_^。如果有必要,将会将官方文档的链接贴出来,方便各位看官享用。自定义原创 2021-07-04 15:19:44 · 797 阅读 · 0 评论 -
Android 插件化 pre-verify问题简析与解决方案
pre-verify问题简析与解决方案前言问题原理解析pre-verify附录Tinker前言最近在Android5.0以下的设备发现了一个问题:Class ref in pre-verified class resolved to unexpected implementation。【备份】这里记录下我收集到的一部分资料,以后后续浏览。问题FATAL EXCEPTION: mainProcess: com.xxx.yyy:plugin1, PID: 10850java.lang.Illega原创 2021-01-31 15:26:00 · 833 阅读 · 0 评论 -
Neptune Android11 resources.arsc不支持压缩问题解决
前言最近维护Neptune框架的时候,发现插件在升级compileSdkVersion、targetSdkVersion到30之后,会出现插件无法安装的问题。这里记录下相关的内容。问题原因出问题的代码这里简单描述下一些前置的背景知识:插件也是一个独立的apkNeptune框架的插件是可以访问宿主资源的插件安装到宿主需要校验包名和版本号等信息以下的代码,就是主动获取插件Apk的一些基本信息,包括包名、版本号等。PackageManager pm = context.getPackage原创 2020-10-22 20:51:32 · 5071 阅读 · 9 评论 -
Android ART Dex2Oat相关笔记
前言最近在了解ART相关的内容,这里做下笔记记录下。官方文档:Android Runtime (ART) 和 Dalvik:详细的介绍了ART的特性和功能。ART概念Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针原创 2020-08-02 14:25:13 · 987 阅读 · 2 评论 -
Neptune 跨Dex调用问题解决
前言最近在维护Neptune框架的时候,遇到了一个问题,这里简单的记录下问题原因和解决方案。Neptune这是爱奇艺开源的两个插件化框架之一,一个是Neptune,一个是Qigsaw。Neptune is a flexible, powerful and lightweight plugin framework for Android.Neptune早期借鉴了百度的插件化框架,后续借鉴了滴滴推出的插件化框架方案VirtualAPK,慢慢发展成为一套较为稳定的方案。目前服务于爱奇艺和随刻两个App原创 2020-07-11 20:54:17 · 1313 阅读 · 0 评论 -
Android 代码注入的记录
前言最近因为工作需要,需要使用代码注入的功能,这里简单介绍下代码注入的流程和心得。这篇文章主要是包含了我收集的一些有用的东西,没有其他的一些具体分享。前置知识Android的代码注入需要对Class的一些指令比较熟悉,才可以完成基本的操作。Class文件的结构Class文件的结构大概如下所示,其中*表示0个或者多个。摘录自:ASM4-GuideCore API / C...原创 2020-05-01 22:13:48 · 686 阅读 · 0 评论 -
Android 注解器开发流程
前言Android使用注解生成器生成Java代码~官方介绍:添加注释处理器。接入流程创建Annotation关于反射的基础知识可见:第12章 元编程与注解、反射 《Kotlin 项目实战开发》在Android Studio中创建一个Java Library,名称叫做x_annotation。x_annotation的Gradle的配置如下:apply plugin: '...原创 2020-04-24 22:10:40 · 403 阅读 · 1 评论 -
Android 创建插件buildSrc流程
前言当需要编写类似代码注入的插件的时候,就需要创建一个名称为buildSrc的Android插件工程。值得注意的是,这个工程在一个Android工程中,仅仅有一个。并且,这个工程的名称只能叫做buildSrc。Gradle会在配置初始化之前,编译BuildSrc这个项目(可以是Java、Groovy、Kotlin),并配置到classpath下。如果buildSrc是一个Groovy...原创 2020-04-24 22:06:35 · 6064 阅读 · 4 评论 -
Android Sublime源码阅读姿势
前言最近编译了Android7.1.1的源码,将Android 7.1.1的源码拿来学习。Android 编译Android 7.1.1源码之前听说IDEA看源码很方便,不过由于Android 7.1.1导入到IDEA中需要编译一遍,才会生成idegen.jar文件,不然都没法执行make idegen && development/tools/idegen/idegen...原创 2019-04-17 20:25:20 · 1870 阅读 · 0 评论 -
Android 编译Android 7.1.1源码
前言最近这阵子又回来爱奇艺实习了,实习的任务是分析爱奇艺的APM平台上的卡顿栈的问题。爱奇艺的APM平台上的卡顿栈都是系统栈,很少有比较明显的栈。因此,只能从源码开始逐层分析。通过分析源码的逐层调用,来判断是否是因为主线程(UI线程)持有子线程的锁导致卡顿,亦或者是由于频繁的进行IPC导致,或者是因为读写竞争导致的问题……对于源码的分析有利于快速的定位到问题所在,当然,可以借此机会,深入了解A...原创 2019-04-10 19:52:58 · 2995 阅读 · 1 评论 -
Android 图片三级缓存LruCache实现
前言这是我面试时候遇到的一个问题,虽然之前了解过,但是并没有自己实现过。当时面试官叫我5分钟内设计并实现出来。当时比较嫩,直接说不会了,面试官有点尴尬。虽然已经成功拿到了offer了,但是还是要将不是很会的东西补补。设计过程...原创 2019-02-03 18:47:28 · 687 阅读 · 0 评论 -
Android 消息机制
前言Android的消息机制简单阐述,无源码分析,需要的自己去附录里面看。基础概念概念说明Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。HandlerAndroid消息机制的上层接口。Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去...原创 2019-01-08 09:21:21 · 178 阅读 · 0 评论 -
判断 View 在竖直方向上能否滑动
转载地址:作者【HelloVass 】 - 判断 View 在竖直方向上能否滑动 /** * 检测一个 View 在给定的方向(up or down)能否竖直滑动 * * @param 调用该方法的 view * @param 负数表示检测上滑,正数表示下滑 * 返回 true 表示能在指定的方向滑动,false 反之 */转载 2016-09-03 15:25:47 · 807 阅读 · 0 评论 -
自定义RecycleView实现下拉刷新和上拉刷新(源码注释)
这里的源码来源于:起风的清晨的博客 - 自定义RecyclerView实现下拉刷新,加载更多,不做博文转载,仅仅提供了代码注释,有兴趣自行看博主文章。原创 2016-09-04 09:14:43 · 1249 阅读 · 0 评论 -
Android监听网络变化
最近在做APP,需要监听Android手机网络的变化情况,同时对不同的情况做出不同的响应策略,这里有两种方法。1.BroadcastReceiver2.Service+BroadcastReceiver原创 2016-11-02 09:46:09 · 1233 阅读 · 0 评论 -
WebView-HyBird开发的桥梁
通过了解HyBrid技术,我才深刻的体会到了WebView这个View的强大。 在网上,很少有关于HyBird开发的技术性博文。我找了好久都没有找到关于这部分的技术博文。前阵子在学习了ヾ(o◕∀◕)ノヾ叶小钗博主的博文后,我才了解并学习了HyBird开发技术。各位看官可以看看博主的博文,不过博文是讲Web部分的,并没有Android部分的。原创 2017-01-15 12:55:39 · 1401 阅读 · 0 评论 -
Android进阶之AlertDialog自定义
自定义AlertDialog,使App界面更加协调。转载 2017-01-21 22:30:27 · 554 阅读 · 0 评论 -
Android 多线程编程
介绍 多线程技术主要解决处理器单元多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 当同时并发多个网络线程的时候,为了防止内存过度消耗和并发线程过多,控制活动线程的数量,线程池可以限制创建线程的数目,以极大的提高App的性能。 假设在一个APP完成一项任务的时间为TTT,T1T1T_1为创建线程的时间;T2T2T_2为线程中执行任务的时间,包括线...原创 2017-12-07 20:24:25 · 922 阅读 · 0 评论 -
Android NFC开发
近场通信(NFC)是一种NXP半导体公司提出来的被动技术,它可以在支持NFC的设备上使用“tag”。它是一种有效距离非常小的无线技术,这个距离大概是4cm,但是也可以到10cm,这取决于设备的无线电波和tag的大小。不像蓝牙的Beacon,NFC tag不需要电源。这使它在半永久的地方使用非常合理,而且可以作为一个媒介来使任务自动化,或者把信息分发到一系列的位置。原创 2017-12-27 11:39:47 · 708 阅读 · 0 评论 -
Android ANR分析
ANR(Application Not Responding)分析。原创 2018-01-05 18:18:40 · 1348 阅读 · 0 评论 -
Android 界面介绍与绘制优化
Andorid用户界面框架 Android的用户界面框架(Android UI Framework)采用MVC(Model-View-Controller)模型,为用户界面提供了处理用户输入的控制器(Controller)和显示界面内容的视图(View)。其中模型层(Model)是应用程序的核心,数据和代码都被保存在模型中。 MVC模型中的视图将应用程序的信息反馈给用户,可能的反馈...原创 2018-01-03 10:15:46 · 1257 阅读 · 0 评论 -
Android 性能优化工具集合
摘录自: 《Android移动性能实战——腾讯SNG专项测试团队编著》,这是一本很棒的书,将Android的性能优化写的淋漓尽致。这本书使我接触过的第一本的Android性能优化的书。这本书用各种各样的性能检测的工具,将腾讯的作品的优化过程一点点记录下来,启发式的将性能优化这一门学问融入到了一个个单独的案例中,深入浅出的将这一门博大精深的学问展示在了读者的面前。原创 2018-01-05 21:57:38 · 1635 阅读 · 0 评论 -
Android 蓝牙开发
自从API level5中首次引入了蓝牙之后,Android支持蓝牙已经很长时间了。这种蓝牙被称为传统的蓝牙。从API 18开始,开发者可以使用低功耗蓝牙(Bluetooth low energy,简称BLE),或者Bluetooth Smart。原创 2017-12-26 16:50:16 · 850 阅读 · 0 评论 -
用Linux Deploy在Android手机上安装Linux
每小时进行5分钟的活动,能降低患上许多致命疾病的风险。——《程序员健康指南》简介使用Linux Deploy唯一的好处就是可以充分利用废弃的手机,而且手机具有省电,便捷的特点。安装了Linux之后,完全可以满足基本的学习Linux的需要,而且还不怕把系统搞死,大不了重装咯。ʅ(´◔౪◔)ʃ准备工作下载Linux Deploy下载BusyBox安卓手机一台,配置...原创 2017-01-11 09:24:41 · 69111 阅读 · 27 评论 -
分享大神的一些博文、视频、资料--持续更新
心理学家 Ericsson 的研究发现:决定伟大水平和一般水平的关键因素,既不是天赋,也不是经验,而是[刻意练习]的程度。 教育最重要的不是灌输,而是引发思考。这样的话就没有必要按时间顺序,介绍很多细节;而应该给出一个极简的框架,让孩子自己去往里面填充细节,随着年龄的增长越来越细致,就会自己发现是非对错。 本博文就用来备份和收藏我看到的一些大神写的一些博文的网页链接。原创 2016-08-14 14:17:29 · 2014 阅读 · 0 评论 -
干货!我开发 Android 是如何界面设计的
干货!我开发 Android 是如何界面设计的当年,随着 Android 5.0 的面世,Google 也带来了全新的设计规范 Material Design 。第一次看到 Material Design 的应用,简直是太好看了,有没有!下面呢,我将主要介绍一下,我在开发时常用到的一些网站界面设计dribbble第一个就不得不提大名鼎鼎的 dribbble,上面都是由众多国内外优秀的设计师或转载 2017-10-01 16:05:30 · 1163 阅读 · 0 评论 -
Android Gradle
前言 Android应用程序使用开源的Gradle构建系统来构建。Gradle是在Java世界中广泛使用的、易定制化的现代化API。Android的Gradle插件针对Android应用程序添加了大量的特性,包括构建类型(build type)、定制(product flavor)、签名管理(signing configuration)、库项目(library project)等。学...原创 2018-01-19 17:39:24 · 757 阅读 · 0 评论 -
自定义MarkDownView处理JSON数据
前阵子在处理json数据,突然发现或得到的json数据是MarkDown类型的数据,想在app上直接做一个MarkDownView来处理MarkDown类型的json数据。后来,在伟大的github上发现了一个MarkDownView,就决定改改做成自己需要的MarkDownView,所以便有了这个MarkDownView。原MarkDownView——github:21 Star 548 F原创 2016-08-10 14:08:28 · 5848 阅读 · 0 评论