Android相关
文章平均质量分 78
程序员龙湫
全栈开发,阿里&字节 面试官,目前在字节写Android;分享经验与技术干货,帮你少走弯路
展开
-
Gradle插件从入门到进阶
Gradle插件从入门到进阶1、简介Gradle本身的领域对象主要有Project和Task。Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,...原创 2019-05-05 23:35:46 · 2240 阅读 · 0 评论 -
高仿qq健康
概述学习别人的代码,在此基础上优化代码结构增加动画要点记录通过mRatio参数,让宽高始终是一个比例贝塞尔曲线手动画矩形圆角画虚线根据基准点绘制文字属性动画的使用画笔宽度的自适应源码地址:源码传送门参考:http://www.jianshu.com/p/740c64ba15ac#原创 2016-04-20 23:15:19 · 1907 阅读 · 0 评论 -
动态菜单
动态菜单先上效果图比较简单,主要就是属性动画的使用和坐标角度的小细节。实现实现效果: 图标按照路径一路缩放渐变过来即可。核心代码 /** * Item开启动画 * * @param btnItem * @param index * @param total * @param radius */ private vo原创 2016-05-15 22:01:20 · 5686 阅读 · 0 评论 -
拆轮子之Fish动画分析
概述最近发现一个很好玩的动画库,纯代码实现的https://github.com/dinuscxj/LoadingDrawable,这个动画效果使用drable来实现,觉得很好玩,先分析这个Fish动画(上面是鱼,下面是ghosteye,可是我看半天看不出哪里像 ghost ╮(╯▽╰)╭)。类图项目整体是采用了策略模式(Strategy)通过给LoadingDrawable设置不同的Loading原创 2016-05-24 22:46:36 · 4669 阅读 · 4 评论 -
属性动画中的插值器和估值器
1、概述 谷歌在android3.0时候给我们带来了属性动画,真正意义上带来了”动画“,以前的帧动画也就4中效果的组合(旋转、淡入淡出、放大缩小、平移),而且只是表面的动画,最经典的比如,把一个button按钮移动到另一个位置,然后去点击,一点反应都没有,但是点击原来空白位置仍然有点击事件触发。而属性动画彻彻底底解决这个问题。 属性动画到底带来了哪些属性呢?如下...原创 2016-01-07 22:13:56 · 6024 阅读 · 2 评论 -
MaterialDesign学习项目
概述该项目主要用来学习Material Design Support Library和一些android其他技术,也借鉴了网上一些其他优秀的学习资源。该项目目前主要分为俩大部分(后期可能会有一些增加):解析干货集中营的开放API,实现一个简单的干货客户端 随时随地掌握技术最新动态有趣的搞笑图片(尝试了MVP设计框架)其中分别尝试了不同的实现方式,解析干货集中营时采用了开源库XRecyclerV原创 2016-04-29 11:10:48 · 3933 阅读 · 2 评论 -
拆解轮子之XRecyclerView
简介这个轮子是对RecyclerView的封装,主要完成了下拉刷新、上拉加载更多、RecyclerView头部。在我的Material Design学习项目中使用到了项目地址,感觉还不错。趁着毕业答辩还有2个星期,先把这个轮子拆了看看,这个项目地址在XRecyclerView,先贴个效果图,更多效果图请进入项目中查看。 使用使用起来也比较简单,首先向普通RecyclerView那样:LinearL原创 2016-05-11 11:38:07 · 27818 阅读 · 18 评论 -
属性动画基础之ValueAnimator
概述属性动画是谷歌在android3.0(API level 11)时候给我们带来了属性动画,真正意义上带来了”动画“,以前的帧动画也就4中效果的组合(旋转、淡入淡出、放大缩小、平移),而且只是表面的动画,最经典的比如,把一个button按钮移动到另一个位置,然后去点击,一点反应都没有,但是点击原来空白位置仍然有点击事件触发前一篇博客就提到这个问题(传动动画)。而属性动画彻彻底底解决这个问题。属性动原创 2016-04-15 15:05:34 · 925 阅读 · 0 评论 -
android动画基础之Animation
概述最近总结一下android的一些东西,毕竟基础不牢地动山摇。本篇主要涉及Animation,对Tween和Frame动画做些总结。TweenTween动画即补间动画,主要主持4种效果,缩放、透明度变化、旋转、平移,也可以组合起来使用(set/AnimationSet),在xml中对应的标签和java 代码中体现如下scale —— ScaleAnimationalpha —— AlphaAn原创 2016-04-13 18:47:42 · 1123 阅读 · 0 评论 -
EventBus3.0 study
概述eventbus出来很久了,最近想用一下eventbus,自己对着一些博客撸了一个demo,发现竟然crash了,然后去看看源码发现3.0的eventbus有了很多改动。技术变化真快,得保持谦虚的态度,踏踏实实的学习。正好今天内部群里发了一个如何新技术的学习图,感觉挺好的 作为一个android入门小白还是要多学点。基本概念eventbus是一个是一个Android端优化的p原创 2016-04-04 22:59:57 · 2158 阅读 · 0 评论 -
自定义蜘蛛网图 NetView
概述 写论文忙里偷闲写了一个蜘蛛网图的自定义view,支持多重属性 有图才能有真相,下面先上图 主要支持网格颜色、tag文本、覆盖区域颜色、透明度的属性改变,具体使用可以参见我的githubgithub完整下载,求互粉求start,下面主要介绍一下实现这个自定义控件的几个关键点。确定属性首先要知道这个控件需要暴露出哪些属性,创建一个attrs.xml<?xml version="1原创 2016-03-13 11:18:51 · 4418 阅读 · 8 评论 -
从开发者角度解析 Android N 新特性!
大清早看到 Google 官方博客发布 Android N 的开发者预览版,立马从床上跳起来开始仔仔细细的读起来。从开发者角度来看,Android N 的更新并不算大。网上之前流传的一些 Android N 可能出现的新特性,什么夜间模式,抽屉の消失,指纹识别接口什么的,目前来看很多都没有,现在看朋友圈转的好几篇文章更像是作者在贤者模式下的意淫。Android N 的新特性废话不多说,转载 2016-03-12 13:05:35 · 1363 阅读 · 0 评论 -
listview中的adapter学习小结
概述Adapter是数据和UI之间的一个桥梁,在listview,gridview等控件中都会使用到,android给我们提拱了4个adapte供我们使用:BaseAdapter是一个抽象类,继承它需要实现较多的方法ArrayAdapter支持泛型操作,最为简单,只能展示一行字SimpleAdapter有最好的扩充性,可以自定义出各种效果SimpleCursorAdapter可以适用于简单的原创 2016-04-03 13:57:10 · 1368 阅读 · 0 评论 -
通信录列表+复杂Adapter分析
概述最近写论文之余玩起了github,发现有个citypicker挺不错的,高仿了美团城市选择和定位的一些功能 地址链接 效果图如下: 自己手动写了一遍优化了一些内容,学到了一些姿势,下面对其中一些技术点做下总结。清晰的结构SideLetterBar实现城市列表如何显示字母浮窗复杂的Adapter原创 2016-03-06 21:31:57 · 1549 阅读 · 0 评论 -
开源项目AndroidReview学习小结(2)
androidReview 开源项目总结原创 2016-03-29 19:24:12 · 1321 阅读 · 0 评论 -
开源项目AndroidReview学习小结(1)
androidReview开源项目学习小结原创 2016-03-29 15:45:58 · 1454 阅读 · 0 评论 -
一起来搭简单的App框架
好用的app框架,包含选项卡和侧滑 使用RadioGroup处理选项卡优化布局 使用ToolBar跟侧滑图表联动,效果更好 集合了viewerPager+fragment,drawerlayout+toolbar,optionmenu以及circleImageView处理头像等功能原创 2015-11-12 16:09:27 · 4391 阅读 · 5 评论 -
android中的回调
1、引子android中的回调最经典的就是点击事件设置监听(一般通过switch(v.getId()))这里写个最基本的btn_rigister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO log in原创 2016-01-14 22:42:41 · 9320 阅读 · 1 评论 -
canvas的常见用法
Canvascanvas是一种抽象概念,是2D图形系统中的重要部分,canvas一系列函数最终都是android 2D图形库Skia的一些列封装,对应在SKCanvas.cpp。canvas在系统中的位置如下图所示可以将canvas看成一个透明的图层,使用canvas之后会产生一个透明图层,然后在这个新图层上画图,画完之后覆盖在屏幕上显示,叠加。 比较经典的例子就是` protected void原创 2016-05-28 22:27:18 · 11327 阅读 · 3 评论 -
认识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 · 3105 阅读 · 2 评论 -
Android中的AOP
Android中的AOP什么是AOPAOP(Aspect Oriented Program的首字母缩写)是一种面向切面编程的思想。这种编程思想是相对于OOP(ObjectOriented Programming即面向对象编程)来说的。先来说一下大家熟悉的面向对象编程:面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让...原创 2019-05-02 11:54:23 · 329 阅读 · 0 评论 -
你真的了解过度绘制吗?
本文主要谈谈Android过度绘制相关的知识点,并结合云课堂企业版首页优化过度绘制的实践总结一些与之相关的问题,与君共享,互相进步~本文将按照如下结构展开1、 表面问题产生2、 问题背后的探索 ---- 什么是过度绘制 ---- Android渲染机制3、 优化过度常用工具和套路4、 小结0x00 表面问题的产生在我的小米2s测试机,打开云课堂企业版,顺手打开了过度绘制发现了惊人的原创 2017-11-04 15:58:14 · 7658 阅读 · 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 · 2734 阅读 · 0 评论 -
Service全面总结
service本篇博文主要介绍Service相关知识,具体目录如下0x00 什么是ServiceService是一个应用程序组件,可以在后台长时间运行的操作,不提供用户界面;一个应用程序可以启动一个服务,它将继续在后台运行,即使用户切换到另外一个应用一个组件可以绑定到一个服务与它交互,甚至执行进程间通信(IPC),如处理网络传输、音乐播放、执行文件I/O,与content provider进行原创 2017-10-31 16:47:03 · 2189 阅读 · 0 评论 -
2个关于Adapter库的源码分析(AdapterDelegate、BaseRecyclerViewHelper)
0x00 概述 核心思想:都是围绕如何解决viewType、视图、数据与视图的绑定来进行一系列的封装,不同的库有着自己不同的手段而已Adapter能在数据变化时候,内部实现逻辑不会改变,仅在外部添加新功能即可,那么要求Adapter对数据层是解耦的,不能显示持有外部数据,核心要点要把握好 RecyclerView的3个核心APIgetItemViewType : 根据position返回的一原创 2017-10-30 20:08:15 · 3364 阅读 · 1 评论 -
注解库之ButterKnife
butterknife解决的问题项目地址: https://github.com/JakeWharton/butterknife github原文是这样介绍的 Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.翻译过来就原创 2017-07-29 17:19:51 · 2163 阅读 · 6 评论 -
注解库之Dagger2
Dagger2Step1 使用0x00 Dagger2介绍 Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is an adaptation of an earlier versioncreated by Square and now maint原创 2017-07-29 16:20:16 · 1117 阅读 · 1 评论 -
Lottie的使用及原理浅析
lottie项目地址: https://github.com/xsfelvis/lottie-androidLottie支持Jellybean (API 16)及以上的系统什么是lottie?Airbnb最近开源了一个名叫Lottie的动画库,它能够同时支持iOS,Android与ReactNative的开发,使用流程如下图所示如图所示,通过安装AE上的bodymovin的插件,能够将AE中的动画工原创 2017-02-14 23:36:15 · 16229 阅读 · 4 评论 -
深入理解JNI
深入理解JNI最近在学习android底层的一些东西,看了一些大神的博客,整体上有了一点把握,也产生了很多疑惑,于是再次把邓大神的深入系列翻出来仔细看看,下面主要是一些阅读笔记。JNI概述JNI是Java Native Interface的缩写 ,通常称为“Java本地调用”,通过这种技术可以做到:Java程序中的函数可以调用Native语言写的函数,Native一般是指C/C++编写的函数;Nat原创 2016-06-06 22:27:55 · 14194 阅读 · 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 · 6919 阅读 · 9 评论 -
支持手机和控制台log的小工具-ZeusLog
0x00 解决问题新人刚到项目组,往往搞不清每个页面对应的Activity名称,导致完成需要一些时间浪费在找页面上网络请求查看比较麻烦,需要代理,转为格式化json系统Log比较挫项目地址 https://github.com/xsfelvis/ZeusLog0x01 ZeusLog主要分为两大块,移动端Log和控制台Log,先上图 移动端主要支持显示当前Actvity的名称显示所原创 2017-01-08 23:09:34 · 3332 阅读 · 0 评论 -
Andfix学习记录
概述篇AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 7.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件,并且是立即生效的项目地址https://github.com/alibaba/AndFix官方原创 2017-01-11 10:41:40 · 2636 阅读 · 0 评论 -
编译期注解之JavaPoet
0x00 概述上一篇限于篇幅只介绍了APT,这篇来继续介绍javapoet,是square公司的开源库。正如其名,java诗人,通过注解来生成java源文件,通常要使用javapoet这个库与Filer配合使用。主要和注解配合用来干掉那些重复的模板代码(如butterknife 和databinding所做的事情),当然你也可以使用这个技术让你的代码更加的炫酷。0x01 简单使用使用之前要先引入这原创 2017-01-10 23:14:07 · 4023 阅读 · 0 评论 -
注解基础
0x00 概述本文主要是介绍注解的基础知识,为后面的APT和JavaPoet打下基础0x01 什么是注解注解(Annotation)是Java5的一个新特性,是插入在代码中的一种注释或者说是一种元数据(meta data),这些注释信息可以在编译期使用预编译工具进行获取处理,也可以在运行期使用Java反射机制来获取,这取决于你的注解类型。0x02 注解的语法及其定义在Android中注解经常存在我们原创 2017-01-10 23:14:57 · 2444 阅读 · 0 评论 -
编译期注解之APT
0x00 概述前一篇介绍了注解的基本知识以及常见用法,由于运行期(RunTime)利用反射去获取信息还是比较损耗性能的,本篇将介绍一种使用注解更加优雅的方式,编译期(Compile time)注解,以及处理编译期注解的手段APT和Javapoet,限于篇幅,本篇着重介绍APT 首先你的注解需要声明为CLASS @Retention(RetentionPolicy.CLASS) 编译期解析注解基原创 2017-01-10 23:12:12 · 3443 阅读 · 0 评论 -
团队项目必备神器——自定义Lint
Lint在android studio中内置了大概200个左右的lint检查,比如定义变量未使用,直接Handler报内存泄漏提醒,时时刻刻在监督着我们的代码。自己定制了一些Lint规则,项目开源在GitHub上 https://github.com/xsfelvis/LintDemo 为什么需要自定义Lint原生Lint无法满足团队特有的需求,如:编码规范原生Lint存在一些检测缺陷或者缺原创 2016-12-16 22:37:50 · 3350 阅读 · 14 评论 -
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 · 1908 阅读 · 0 评论 -
自定义仪表盘PaneView
自定义仪表盘PaneView原创 2016-01-24 19:29:02 · 4514 阅读 · 10 评论 -
Handler学习小结
在android消息机制中Handler扮演着举足轻重的作用,(AsnyTask其实也是对Handler+Thread做了一层封装),ui线程超过5就会报出ANR,一般耗时操作操作需要放在子线程中处理,这时候Handler就可以大展身手,Handler主要用来处理完耗时操作将访问UI的工作切换到主线程去。1、原理篇简单概括一下:Handler创建时会采用当前线程的Looper来原创 2016-01-22 11:44:43 · 955 阅读 · 0 评论 -
ListView中ConvertView和ViewHolder
ListView中ConvertView和ViewHolder原创 2015-10-17 20:30:30 · 6086 阅读 · 2 评论