摘要: 一直以来都饱受公司APP客户端关于各种计费点的折磨。一段时间内,同一应用或不同应用间接入多家的计费模式,然后需要在不同的计费间来回的跳转,大大的增加了出错的几率,甚至有时候出现计费点错乱的现象,基于这种困扰,一直以来都想封装一套统一实现计费策略的代码库,最近正好有一套APP要实现微信,支付宝支付等计费,那么正好可以利用这个机会来实现一整套的计费点代码库。 阅读全文
posted @ 2017-06-26 15:12 管满满 阅读(679) 评论(1) 推荐(1) 编辑
摘要: 这篇是讲Glide源码中into方法的实现原理,可以说with和load方法只是做了前期的初始化配置工作,而真正意义上的图片加载就是在into方法中实现的,所以该方法的复杂程度是可以想象的,还是依照我之前的写作习惯,一步步的分析,不留下任何的盲点给大家带来困惑,那么下面就开始吧。 阅读全文
posted @ 2017-06-17 18:38 管满满 阅读(7618) 评论(0) 推荐(4) 编辑
摘要: 上一篇博文写的是Picasso基本使用和源码完全解析,Picasso的源码阅读起来还是很顺畅的,然后就想到Glide框架,网上大家也都推荐使用这个框架用来加载图片,正好我目前的写作目标也是分析当前一些流行的框架源码,那就也来解析下Glide的源码吧,而且有了Picasso源码的分析相信很快就搞定Glide的,结果也就悲剧了,深陷其中无法自拔了,Glide的源码远非Picasso能比,阅读起来也是相当的困难的,而且我使用的是最新的Glide4.0,与之前版本有较大的差异,网上也没可以参考的资料,这就悲剧了,苦头专研呗。直到今天才从深沟中冒出头了,差点憋死,哈哈。 阅读全文
posted @ 2017-06-14 13:06 管满满 阅读(17561) 评论(0) 推荐(0) 编辑
摘要: 说到Picasso,相信Android开发人员绝不陌生,它是Square公司开发的一款图片加载神器。使用过它的coder绝对是爱不释手:对它本身而言,轻量安全,有效加载图片并防止OOM;对我们开发者来说,简单方便,一行代码搞定图片加载。因此它备受Android开发人员的钟爱,那么今天我们就从源码的角度完完全全的解析下它的工作原理。 阅读全文
posted @ 2017-05-31 09:53 管满满 阅读(6186) 评论(0) 推荐(0) 编辑
摘要: 本篇我们主要学习如何从C源码中调用Java代码:调用Java类中的成员变量,成员方法,同时也讲介绍使用gradle-experimental来调试原生代码。 阅读全文
posted @ 2017-05-11 11:52 管满满 阅读(5111) 评论(1) 推荐(3) 编辑
摘要: JNI:Java Native Interface 也就是java本地接口,它是一个协议,这个协议用来沟通java代码和本地代码(c/c++)。通过这个协议,Java类的某些方法可以使用原生实现,同时让它们可以像普通的Java方法一样被调用和使用,而原生方法也可以使用Java对象,调用和使用Java方法。也就是说,使用JNI这种协议可以实现:java代码调用c/c++代码,而c/c++代码也可以调用java代码。 阅读全文
posted @ 2017-05-05 09:20 管满满 阅读(7193) 评论(0) 推荐(0) 编辑
摘要: 说到NDK,相信大家都不陌生,它是Google为便于Android开发提供的一种原生开发集:Native Development Kit,而且也是一个包含API、构建工具、交叉编译、调试器、文档示例等一系列的工具集,可以帮助开发者快速开发C(或C++)的动态库。 阅读全文
posted @ 2017-04-26 16:40 管满满 阅读(28046) 评论(0) 推荐(3) 编辑
摘要: 时光流逝,白驹过隙,转眼一年又即将过去,这一年存在了不少感动,赢得了许多欢乐。有遇到困难,有经受考验,有解决问题,有成功上线,不管经历如何这一年终究是走到了尽头,且不会再有。 阅读全文
posted @ 2016-12-26 16:44 管满满 阅读(1322) 评论(9) 推荐(7) 编辑
摘要: 自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装的事情,也不会再不征求用户授权的情况下,就可以任意的访问用户隐私,而且即使在授权之后也可以及时的更改 阅读全文
posted @ 2016-12-19 13:44 管满满 阅读(9906) 评论(1) 推荐(0) 编辑
摘要: 学习H5 Web开发怎么和安卓原生开发共存呢,React Native直接解决了这个问题:在运用H5开发的同时,还可以有效调用android原生态开发,直接两者兼具,既保留了android原生开发也运用了H5 web开发。成本与效率共存。 阅读全文
posted @ 2016-12-10 22:20 管满满 阅读(2447) 评论(1) 推荐(0) 编辑
摘要: 在学习新内容之前,我们先来弄清楚两个问题: 1 . 什么是ViewGroup? ViewGroup是一种容器。它包含零个或以上的View及子View。 2 . ViewGroup有什么作用? ViewGroup内部可以用来存放多个View控件,并且根据自身的测量模式,来测量View子控件,并且决定View子控件的位置。这在下面会逐步讲解它是怎么测量及决定子控件大小和位置的。 ok,弄清楚了这两个问题,那么下面我们来学习下自定义ViewGroup吧。 阅读全文
posted @ 2016-12-06 10:39 管满满 阅读(617) 评论(1) 推荐(0) 编辑
摘要: 今天我们打算学习下另外一种自定义控件,就是创建可重复使用的组合控件,那么问题来了: 1. 什么是可重复使用? 就是在应用中,可以在多个地方共同使用一套代码。这样不仅能减少我们的工作量,而且还能保持应用风格的一致,这种应用最多最直接的体现就是统一风格样式的标题栏。 2. 那什么又是组合控件呢? 组合控件,顾名思义就是多个控件组合在一起,相互协作共同完成某些特定的功能。 阅读全文
posted @ 2016-11-30 08:47 管满满 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 今天我们实现一个直接继承于View的全新控件。大家都知道音乐播放器吧,在点击一首歌进行播放时,通常会有一块区域用于显示音频条,我们今天就来学习下,播放器音频条的实现。 阅读全文
posted @ 2016-11-28 09:41 管满满 阅读(679) 评论(0) 推荐(0) 编辑
摘要: RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加HeaderView和FooterView,既然来到这里还没学习的,先去学习下吧。 今天我们的主题是学习为RecyclerView添加下拉刷新和上拉加载功能。 阅读全文
posted @ 2016-11-25 08:57 管满满 阅读(2695) 评论(0) 推荐(0) 编辑
摘要: 针对RecyclerView的头部和底部,官方并没有给我们提供像listView一样可以直接通过addHeaderView()/addFooterView()的方法,所以只能靠我们自己去实现了,那怎么实现呢?大家都知道RecyclerView已经为我们封装好了Adapter和ViewHolder,在Adapter中我们需要重写onCreateViewHolder(ViewGroup parent, int viewType)这个方法方便我们把ItemView布局文件或是自定义View传递到ViewHolder中,从而达到ItemView的重复使用和回收等。而我们今天要讲的添加头部和底部和该方法有密不可分的关系。 阅读全文
posted @ 2016-11-23 09:01 管满满 阅读(3326) 评论(0) 推荐(0) 编辑
摘要: 说到RecyclerView,相信大家都不陌生,它是我们经典级ListView的升级版,升级后的RecyclerView展现了极大的灵活性。同时内部直接封装了ViewHolder,不用我们自己定义ViewHolder就能实现item的回收和复用功能。当然它肯定不止这些好处,比如我们可以自定义分割线,可以更加方便的实现列表的布局方式等等。虽说我们自己在第一次使用时,会比使用listView和gridView稍微的复杂一些,需要自定义的也多了一点,但是它却更好的体现了灵活性,可以随自己的喜好来随便的定义,当然最主要的是能更好的复用,只需一次的定义,却可随处的复用。 阅读全文
posted @ 2016-11-22 10:08 管满满 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 就目前来说Retrofit2使用的已相当的广泛,那么我们先来了解下两个问题: 1 . 什么是Retrofit? Retrofit是针对于Android/Java的、基于okHttp的、一种轻量级且安全的、并使用注解方式的网络请求框架。 2 . 我们为什么要使用Retrofit,它有哪些优势? 首先,Retrofit使用注解方式,大大简化了我们的URL拼写形式,而且注解含义一目了然,简单易懂; 其次,Retrofit使用简单,结构层次分明,每一步都能清晰的表达出之所以要使用的寓意; 再者,Retrofit支持同步和异步执行,使得请求变得异常简单,只要调用enqueue/execute即可完成; 最后,Retrofit更大自由度的支持我们自定义的业务逻辑,如自定义Converters。 阅读全文
posted @ 2016-11-21 13:49 管满满 阅读(5891) 评论(0) 推荐(1) 编辑
摘要: AsyncTask相信大家都不陌生,它是为了简化异步请求、更新UI操作而诞生的。使用它不仅可以完成我们的网络耗时操作,而且还可以在完成耗时操作后直接的更新我们所需要的UI组件。这使得它在android开发中成为炙手可热的网络请求工具类。 阅读全文
posted @ 2016-11-18 09:50 管满满 阅读(358) 评论(0) 推荐(0) 编辑