Android 进阶
文章平均质量分 83
记录android学习中一些更加深入的要点,进阶专用
程序员龙湫
全栈开发,阿里&字节 面试官,目前在字节写Android;分享经验与技术干货,帮你少走弯路
展开
-
Android Camera了解一下
首发于公众号Android Camera了解一下Camera 演进简介最近在项目中遇到 Camera相关的场景,之前对这块不是很了解,趁机补了一下盲区。Android Camera 相关也是生态碎片化较为严重的一块,Android FrameWorkt提供Camera API来实现拍照与屏幕录制的能力,目前Android有三类APICamera (为了便于区分 下面简称 Camera1)此类是用于控制设备相机的旧版API,在Android5.0以下使用,现已DeprecatedCam..原创 2021-09-17 01:16:44 · 8975 阅读 · 2 评论 -
idleHandler
idleHandler什么是idleHandlerAndroid是基于Looper消息循环的系统,我们通过Handler向Looper包含的MessageQueue投递Message,在MessageQueue中我们可以看到这样的一个接口 /** * Callback interface for discovering when a thread is going t...原创 2020-02-12 15:22:46 · 593 阅读 · 0 评论 -
Android中的AOP
Android中的AOP什么是AOPAOP(Aspect Oriented Program的首字母缩写)是一种面向切面编程的思想。这种编程思想是相对于OOP(ObjectOriented Programming即面向对象编程)来说的。先来说一下大家熟悉的面向对象编程:面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让...原创 2019-05-02 11:54:23 · 336 阅读 · 0 评论 -
你真的了解过度绘制吗?
本文主要谈谈Android过度绘制相关的知识点,并结合云课堂企业版首页优化过度绘制的实践总结一些与之相关的问题,与君共享,互相进步~本文将按照如下结构展开1、 表面问题产生2、 问题背后的探索 ---- 什么是过度绘制 ---- Android渲染机制3、 优化过度常用工具和套路4、 小结0x00 表面问题的产生在我的小米2s测试机,打开云课堂企业版,顺手打开了过度绘制发现了惊人的原创 2017-11-04 15:58:14 · 7745 阅读 · 0 评论 -
butterknife及其背后的代码生成技术
本篇博文主要介绍butterknife使用及其背后的技术点,行文结构如下0x00 butterknife项目地址: https://github.com/JakeWharton/butterknife github原文是这样介绍的 Field and method binding for Android views which uses annotation processing to gene原创 2017-11-02 20:27:18 · 2748 阅读 · 0 评论 -
JNI两种注册过程实战
JNI系列JNI两种注册过程实战深入理解JNI概述Android OS加载JNI Lib的方法有两种 - JNI_OnLoad(动态注册) - 如果JNI Lib实现中没有定义JNI_OnLoad,则dvm调用dvm ResolveNativeMethod进行动态解析(静态注册) 因此,当 java 通过 System.loadLibrary 加载完 JNI 动态库后,紧接着会调用 JNI_O原创 2017-01-23 15:22:06 · 6938 阅读 · 9 评论 -
Fragment的事务操作&Actvity的状态丢失
Fragment Transactions & Activity State Loss 本文翻译自Fragment Transactions & Activity State Loss,下面所示的异常堆栈追踪在Honeycomb最早版本就一直在出现在StackOverflow上,困扰着诸多开发者`java.lang.IllegalStateException: Can not perform翻译 2016-10-07 17:10:00 · 1914 阅读 · 0 评论 -
编译期注解之APT
0x00 概述前一篇介绍了注解的基本知识以及常见用法,由于运行期(RunTime)利用反射去获取信息还是比较损耗性能的,本篇将介绍一种使用注解更加优雅的方式,编译期(Compile time)注解,以及处理编译期注解的手段APT和Javapoet,限于篇幅,本篇着重介绍APT 首先你的注解需要声明为CLASS @Retention(RetentionPolicy.CLASS) 编译期解析注解基原创 2017-01-10 23:12:12 · 3456 阅读 · 0 评论 -
编译期注解之JavaPoet
0x00 概述上一篇限于篇幅只介绍了APT,这篇来继续介绍javapoet,是square公司的开源库。正如其名,java诗人,通过注解来生成java源文件,通常要使用javapoet这个库与Filer配合使用。主要和注解配合用来干掉那些重复的模板代码(如butterknife 和databinding所做的事情),当然你也可以使用这个技术让你的代码更加的炫酷。0x01 简单使用使用之前要先引入这原创 2017-01-10 23:14:07 · 4043 阅读 · 0 评论 -
注解基础
0x00 概述本文主要是介绍注解的基础知识,为后面的APT和JavaPoet打下基础0x01 什么是注解注解(Annotation)是Java5的一个新特性,是插入在代码中的一种注释或者说是一种元数据(meta data),这些注释信息可以在编译期使用预编译工具进行获取处理,也可以在运行期使用Java反射机制来获取,这取决于你的注解类型。0x02 注解的语法及其定义在Android中注解经常存在我们原创 2017-01-10 23:14:57 · 2448 阅读 · 0 评论 -
支持手机和控制台log的小工具-ZeusLog
0x00 解决问题新人刚到项目组,往往搞不清每个页面对应的Activity名称,导致完成需要一些时间浪费在找页面上网络请求查看比较麻烦,需要代理,转为格式化json系统Log比较挫项目地址 https://github.com/xsfelvis/ZeusLog0x01 ZeusLog主要分为两大块,移动端Log和控制台Log,先上图 移动端主要支持显示当前Actvity的名称显示所原创 2017-01-08 23:09:34 · 3358 阅读 · 0 评论 -
团队项目必备神器——自定义Lint
Lint在android studio中内置了大概200个左右的lint检查,比如定义变量未使用,直接Handler报内存泄漏提醒,时时刻刻在监督着我们的代码。自己定制了一些Lint规则,项目开源在GitHub上 https://github.com/xsfelvis/LintDemo 为什么需要自定义Lint原生Lint无法满足团队特有的需求,如:编码规范原生Lint存在一些检测缺陷或者缺原创 2016-12-16 22:37:50 · 3366 阅读 · 14 评论 -
认识Zygote
概述zygote “受精卵”,由init进程通过解析init.zygote.rc文件而创建的,zygote所对应的可执行程序app_process,所对应的源文件是App_main.cpp,进程名为zygote。zygote孵化的第一个进程是System Server,而这两个都是java世界的半边天,任何一个进程死亡都会导致Java世界的奔溃。4.2 zygote分析zygote由init进程根据原创 2016-06-07 22:37:36 · 3116 阅读 · 2 评论 -
深入理解JNI
深入理解JNI最近在学习android底层的一些东西,看了一些大神的博客,整体上有了一点把握,也产生了很多疑惑,于是再次把邓大神的深入系列翻出来仔细看看,下面主要是一些阅读笔记。JNI概述JNI是Java Native Interface的缩写 ,通常称为“Java本地调用”,通过这种技术可以做到:Java程序中的函数可以调用Native语言写的函数,Native一般是指C/C++编写的函数;Nat原创 2016-06-06 22:27:55 · 14209 阅读 · 0 评论 -
动态菜单
动态菜单先上效果图比较简单,主要就是属性动画的使用和坐标角度的小细节。实现实现效果: 图标按照路径一路缩放渐变过来即可。核心代码 /** * Item开启动画 * * @param btnItem * @param index * @param total * @param radius */ private vo原创 2016-05-15 22:01:20 · 5691 阅读 · 0 评论 -
MaterialDesign学习项目
概述该项目主要用来学习Material Design Support Library和一些android其他技术,也借鉴了网上一些其他优秀的学习资源。该项目目前主要分为俩大部分(后期可能会有一些增加):解析干货集中营的开放API,实现一个简单的干货客户端 随时随地掌握技术最新动态有趣的搞笑图片(尝试了MVP设计框架)其中分别尝试了不同的实现方式,解析干货集中营时采用了开源库XRecyclerV原创 2016-04-29 11:10:48 · 3944 阅读 · 2 评论 -
高仿qq健康
概述学习别人的代码,在此基础上优化代码结构增加动画要点记录通过mRatio参数,让宽高始终是一个比例贝塞尔曲线手动画矩形圆角画虚线根据基准点绘制文字属性动画的使用画笔宽度的自适应源码地址:源码传送门参考:http://www.jianshu.com/p/740c64ba15ac#原创 2016-04-20 23:15:19 · 1914 阅读 · 0 评论 -
EventBus3.0 study
概述eventbus出来很久了,最近想用一下eventbus,自己对着一些博客撸了一个demo,发现竟然crash了,然后去看看源码发现3.0的eventbus有了很多改动。技术变化真快,得保持谦虚的态度,踏踏实实的学习。正好今天内部群里发了一个如何新技术的学习图,感觉挺好的 作为一个android入门小白还是要多学点。基本概念eventbus是一个是一个Android端优化的p原创 2016-04-04 22:59:57 · 2165 阅读 · 0 评论 -
listview中的adapter学习小结
概述Adapter是数据和UI之间的一个桥梁,在listview,gridview等控件中都会使用到,android给我们提拱了4个adapte供我们使用:BaseAdapter是一个抽象类,继承它需要实现较多的方法ArrayAdapter支持泛型操作,最为简单,只能展示一行字SimpleAdapter有最好的扩充性,可以自定义出各种效果SimpleCursorAdapter可以适用于简单的原创 2016-04-03 13:57:10 · 1375 阅读 · 0 评论 -
自定义蜘蛛网图 NetView
概述 写论文忙里偷闲写了一个蜘蛛网图的自定义view,支持多重属性 有图才能有真相,下面先上图 主要支持网格颜色、tag文本、覆盖区域颜色、透明度的属性改变,具体使用可以参见我的githubgithub完整下载,求互粉求start,下面主要介绍一下实现这个自定义控件的几个关键点。确定属性首先要知道这个控件需要暴露出哪些属性,创建一个attrs.xml<?xml version="1原创 2016-03-13 11:18:51 · 4428 阅读 · 8 评论 -
通信录列表+复杂Adapter分析
概述最近写论文之余玩起了github,发现有个citypicker挺不错的,高仿了美团城市选择和定位的一些功能 地址链接 效果图如下: 自己手动写了一遍优化了一些内容,学到了一些姿势,下面对其中一些技术点做下总结。清晰的结构SideLetterBar实现城市列表如何显示字母浮窗复杂的Adapter原创 2016-03-06 21:31:57 · 1555 阅读 · 0 评论 -
自定义仪表盘PaneView
自定义仪表盘PaneView原创 2016-01-24 19:29:02 · 4526 阅读 · 10 评论 -
NumberProgressBar开源项目学习
1、概述多看多学涨姿势, github真是个宝库这个项目主要是实现数字进度条效果github地址在https://github.com/daimajia/NumberProgressBar感谢开源作者!梳理主要知识点:【1】熟悉自定义view的流程【2】实现原理【3】android中的view坐标系使用【4】onMeasure优雅的方法书写【5】ca原创 2016-01-20 23:47:41 · 2562 阅读 · 4 评论 -
BezierDemo开源项目的学习
多看多学涨姿势,no zuo nuo die做暖男1、概述国际惯例,首先感谢一下开源作者。这个项目主要是实现实现qq红点拖拽的效果 地址在https://github.com/chenupt/BezierDemo梳理主要知识点【1】贝塞尔曲线的使用【2】动态添加view【3】判断点击事件是否在指定区域【4】帧动画2、关键点【2.1】贝塞尔原创 2016-01-17 00:21:49 · 1274 阅读 · 0 评论 -
属性动画中的插值器和估值器
1、概述 谷歌在android3.0时候给我们带来了属性动画,真正意义上带来了”动画“,以前的帧动画也就4中效果的组合(旋转、淡入淡出、放大缩小、平移),而且只是表面的动画,最经典的比如,把一个button按钮移动到另一个位置,然后去点击,一点反应都没有,但是点击原来空白位置仍然有点击事件触发。而属性动画彻彻底底解决这个问题。 属性动画到底带来了哪些属性呢?如下...原创 2016-01-07 22:13:56 · 6031 阅读 · 2 评论 -
RecyclerView+Cardview学习探索
1、概述在support-V7包中引入了很多新的M 控件,其中RccyclerView也是其中一员,它的名字来源于它的工作方式:当一个Item被隐藏起来时候并没有被销毁,当建立新的item时候,组件自动复用item。但与以往经典listview不同的是,RccyclerView直接把viewholder的实现封装起来,因此用户只要实现自己的viewholder即可。通常一个Rccycler原创 2015-11-30 23:25:29 · 4570 阅读 · 2 评论 -
掌上快递 APP 项目之概述篇
概述学习Android开发也有一段时间了,利用业余时间独立制作的一款快递类APP软件,自己将其定位为“集快递信息追踪、附近快递点查询、 快递公司投诉功能为一体的便民生活类快递 app”。难度不是很大,主要是是可以锻炼一下自己近来所学的,这个小项目涉及到前端到后台,从数据模型到网络数据解析,还有百度map,为了使侧滑效果好看还使用了slidingmenu_library开源库。原创 2015-08-01 23:10:17 · 4175 阅读 · 4 评论 -
深入认识AsyncTask
深入认识AsyncTask原创 2015-10-19 22:37:47 · 1166 阅读 · 0 评论 -
认识一下Android 事件分发机制
认识一下Android 事件分发机制原创 2015-10-18 23:26:07 · 1282 阅读 · 0 评论 -
json解析,异步下载(listview仅滑动时加载)Demo总结
异步加载的练习demo主要涉及知识点:1.解析json格式数据,主要包括图片,文本2.使用线程和AsynTask俩种异步方式从网络下载图片3.handler的使用4.使用Lru缓存算法5.改进加载:仅在listview滑动停止后才加载可见项,滑动中不加载原创 2015-10-10 21:30:28 · 2085 阅读 · 0 评论 -
图文浅析APK程序运行的过程
图文浅析APK程序运行的过程原创 2015-08-02 23:13:40 · 1826 阅读 · 4 评论 -
图文浅析Binder机制
图文浅析Binder机制原创 2015-07-31 17:28:57 · 1004 阅读 · 0 评论 -
Framework启动过程浅析
浅显的总结一下Framework启动大概过程原创 2015-07-31 12:31:15 · 1154 阅读 · 0 评论 -
如何反编译APK?
如何反编译Apk获取图片,xml配置文件甚至是源码原创 2015-11-08 16:13:28 · 1783 阅读 · 0 评论 -
一起来搭简单的App框架
好用的app框架,包含选项卡和侧滑 使用RadioGroup处理选项卡优化布局 使用ToolBar跟侧滑图表联动,效果更好 集合了viewerPager+fragment,drawerlayout+toolbar,optionmenu以及circleImageView处理头像等功能原创 2015-11-12 16:09:27 · 4399 阅读 · 5 评论