自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小猪的博客

像渴望呼吸一样渴望成功。

  • 博客(25)
  • 收藏
  • 关注

原创 Retrofit 源码解析

前面的文章学习了Android主流网络请求框架Retrofit + RxJava + OkHttp的基础用法,细心的你一定体会到了代码的魅力!本是比较复杂的网络请求,变得十分之简洁。这得感谢开源大神们造轮子,作为程序员的我们,也应该慢慢向大神学习。因此,本篇文章就Retrofit源码进行分析,体会代码的设计思想。Retrofit:Android网络请求开源库。这里的网络请求,是指retrofit...

2018-11-05 21:14:31 282

原创 写一个简单版的OkHttp

关于OkHttp的名气,相信每一位Android开发者都了解并且使用过,为我们项目中网络请求提供了很大的便捷。OkHttp提供了对网络请求的封装,我们只要调用其暴露的Api,就可以轻松地实现网络相关功能。那关于它的内部实现原理是怎么样的呢,下面将通过一实现一个简单的OkHttp,带你进入OkHttp的内心世界。OkHttp的使用OkHttpClient client = new OkHttpC...

2019-10-18 16:54:56 297

原创 APT注解处理器,手写ButterKinfe

APT(Annotation Processing Tool)即注解处理器,是一种处理注解的工具,确切的说它是javac的一个工具,它用来在编译时扫描和处理注解。注解处理器以Java代码(或者编译过的字节码)作为输入,生成.java文件作为输出。简单来说就是在编译期,通过注解生成.java文件。我们在开发过程中常用到的ButterKnife、Dagger、EventBus等框架都用到了APT注解技...

2019-08-02 18:09:11 273

原创 Android中插件化的使用

通过上一篇插件化+Hook技术实现换肤的博文,相信对插件化已经有了大概的认识。那么很多情况下,我们不仅仅是需要通过插件化技术进行简单的换肤,更多的是加载一个第三方应用,比如微信的支付界面里接入的"滴滴出行"、"美团外卖"等。微信不可能是将类似的第三方应用的代码写在应用的apk里的,这样的话也太那不专业了,所以这里就采用了插件化的技术,动态的加载第三方应用。下面我们就以一个简单的例子来熟悉插件化的...

2019-07-11 19:09:36 291

原创 Hook源码+插件化实现无闪烁换肤

现在的移动端应用,在实现功能需求的同时,还会在用户体验上进行突破,以增加用户黏性。例如,很多场景都加入了日/夜间主题切换,或者类似于网易云音乐的换肤。那么,当我们碰到类似的需求时,应该怎么来实现呢?大致可以分为两种情况,如果只是简单的切换主题,那么涉及到的大部分是背景颜色,字体颜色的改变,则可以通过定义主题的方式来实现;如果是差异比较大的皮肤切换,那么会替换大量的图标、图片等资源,并且如果仍然采...

2019-06-25 18:25:49 534

原创 Android通过WebView与JS交互

我们知道,大前端时代已经来了!不管是网页web,还是移动端,通过前端的知识基本都可以解决需求问题。作为一名靠Android平台吃饭的程序员,的确有了些许压力。不过也不用太紧张,个人观点觉得最近几年都是ok的,问题不大。目前市场上流行的做法是,在app的基础上,与HTML相结合,实现嵌套交互的效果。因为,大部分应用,都是需要通过用户来实现收益的,因此经常会推出活动来推广运营。这样的情况下,如果每次都...

2019-02-20 17:30:20 3265

原创 工厂模式 浅析

作为程序员,特别是java程序员的你来说,早也听说武当山上有一种武功绝学,那就是设计模式,此绝学一共23式,招招无形胜有形,变幻莫测,若习得此绝学加成,代码如风,见招拆招,笑傲江湖!初入江湖的你,是不是已经开始搓搓手,准备上武当山了,别急,师兄我先练练你的基本功,再教你一招入门式——工厂模式。对于设计模式,秉承“开闭原则”的总则,什么是开闭原则呢?以一个类为例,我们不可以改变它,但我们可以对它进...

2018-11-21 21:16:26 200

原创 TinkerPatch 基础使用

提到TinkerPatch,相信大家已经很熟悉了。对的,微信的热修复平台,当然除了腾讯推出的热修复平台,对手阿里自然也不能说自己不行啊,也有对应的相关平台,以及美团等。为什么选择Tinker呢,腾讯给出了种种理由,但是坑也不少,特别是在机型上,一会小米系统不能修复,一会oppo、vivo不行,当然原因更多的是手机厂商在系统定制上的一些限制。有机会试试其他平台,选个最优的。Tinker 平台地址:...

2018-11-19 00:29:51 826

原创 Retrofit + RxJava + OkHttp 最佳组合--基础

有云:“知其然,当知其所以然”。在之前的项目中,都用到了Retrofit + RxJava + OkHttp的组合来进行网络请求,这也是当下主流的网络请求框架,使用起来着实方便高效。但只是停留在了会用的位置,没有真正的去解析理解起内部的实现,或者说其实现原理。所以,接下来准备用几篇文章对这个经典组合进行总结,学习。从这篇的基础用法开始。先对这三个开源库解释下:OkHttp:网络请求库;Ret...

2018-10-22 19:05:42 697

原创 Android 6.0权限适配

写这篇文章的时候,安卓已经推出了9.0,然而公司项目的targetSdkVersion还停留在6.0之前,虽然谷歌对之前版本实现了兼容,但是作为一名开发者,与时俱进是必须的,况且“腾讯开发平台”计划在明年五月后不再上架targetSdkVersion低于26,也就是8.0的应用。所以,对公司应用进行了targetSdkVersion = 26的适配,项目相关,主要适配了6.0动态权限以及8.0的一...

2018-10-15 16:56:45 269

原创 Android 友盟集成

我们都知道,现在是数据时代。数据所赋予的,就是商业价值。当我们开发完成一款应用并上线后,需要即时的跟踪该应用的状态,包括用户量、活跃量、使用时长等数据信息,以便更好地对应用实施运营手段,实现商业价值。当下使用比较多的就是接入友盟的接口了,下面将对应用接入友盟进行记录。common 集成...

2018-09-05 20:59:32 464

原创 自定义SeekBar,实现滑动验证且不可点击

最近公司因为短信接口被盗刷的比较严重,需要做一个类似于淘宝的滑动验证,用于特定环境,以增加一层保障。拿到需求首先想到的是自定义ViewGroup来实现,里面放一个seekbar和TextView即可。但是有更简单的方法,直接在布局中放入seekbar和TextView,不就ok了?用最简单快捷的方法实现需求,才是硬道理。值得一提的是,seekbar默认情况下是支持点击事件的,也就是说,用户可以...

2018-08-17 15:33:58 1444

原创 Android 性能优化

Android设备作为一款移动设备,相比于pc端而言,在内存以及CPU等硬件条件上具有一定的局限性。这就意味着需要合理充分的利用好资源,过多的占用内存空间,会造成内存溢出,即OOM;过多的占用CPU,会导致手机变得运行缓慢、卡顿,甚至会ANR。因此,在开发的过程中,对应用性能的提升显得异常重要。下面介绍性能优化的常用方法:布局优化布局优化的思想是,尽量减少布局中层级关系。层级关系少了之后...

2018-03-09 18:04:26 238

原创 View基础与滑动

对于Android来说,用户所看见或者交互的界面都是view,view是所有控件的基类。常见的TextView、Button,或者布局RelativeLayout,最终都是继承View类。除了view外,还有ViewGroup,顾名思义,ViewGroup中包含多个view,当然ViewGroup也是继承View的。这样,所有view构成了树的关系,在进行事件分发时,对当前view树进行遍历。本篇...

2018-03-05 23:24:43 189

原创 LruCache与DiskLruCache结合,实现照片墙

在上一篇的文章中,讲解了Bitmap的高效加载,以及LruCache和DiskLruCache的基本用法。但是在实际的项目中,只使用内存缓存或者只使用磁盘缓存是有短板的。内存缓存速度快,但空间有限;磁盘缓存相对内存缓存来说,速度相对慢,但空间较充足。因此,如果将二者相结合到开发中,会有如虎添翼的效果。 下面还是以网络获取图片,并添加内存缓存和磁盘缓存为例,实现照片墙的效果。首先,定义网络图片...

2018-03-02 15:06:48 203

原创 Bitmap的高效加载以及缓存机制

在实际的开发过程中,经常会对图片进行获取,并为用户展示在界面。由于android系统对每个应用有一定的内存限制,如果不合理的利用就会造成内存泄漏的情况。因此,在加载bitmap时进行恰当的优化,可以节省系统资源。另外,在进行网络、文件系统获取图片资源时,采用缓存机制,减少网络获取次数,会让应用更流畅,用户体验更友好。下面就从bitmap的高效加载、LruCache、DiskLruCache这三方面...

2018-02-27 20:15:43 1130

原创 Android线程以及线程池

线程在Android中的地位,相信每一位开发者都理解。基于Android的特性,UI线程即主线程主要用于界面的更新,子线程用于进行耗时任务。通过本篇文章,将学习主线程以及子线程的概念,android中的线程形态,包括我们熟悉的AsyncTask、HandlerThread、IntentService,最后,认识线程池在Android中的应用,以及主要的线程池分类。主线程和子线程 主线程是指进

2018-02-05 20:39:21 237

原创 Android的消息机制

提到Android的消息机制,相信大家并不陌生。也许,你最先想到的是Handler,因为它在我们的实际开发中出现的概率太高了。基于Android主线程不安全的机制,所有的UI操作必须在UI线程,即主线程操作。但是,如果我们需要做一些类似网络请求等比较耗时操作时,如果放在主线程,通常会造成ANR,需要开启新的线程。那我们需要实时更新网络下载进度怎么办呢?是的,有请Handler登场。通过handle

2018-01-23 19:29:15 265

原创 Activity的启动模式

上一篇文章比较详细的介绍了Activity的生命周期以及异常情况下的相关处理。那么,不知有没有思考过,当我们启动一个activity的时候,被启动的这个Activity以及上一Activity是一种什么样的关系存在于系统中呢?其实,默认情况下,当我们启动一个Activity的时候,系统会将该Activity放入任务栈。一般情况下,一个应用程序有一个以包名命名的任务栈。默认情况下,每启动一个Acti

2018-01-17 20:20:34 202

原创 关于Activity的生命周期以及异常销毁

相信大家对Activity并不陌生,几乎每天都在和它打交道。在最近的工作中,解决一个bug的时候,因为对activity生命周期理解有些疏忽,兜了些圈子。所以,这篇文章来对activity作一个再认识。

2017-12-29 17:41:23 1370

原创 自定义View实现2048

一直觉得能写游戏的都是大神!因为学习方向以及时间的问题,很少动手开发游戏。在校的时候,记得写过当时很火的游戏“像素鸟”,哈哈,作为菜鸟来说还是挺有成就感的!进入正题,本文主要从自定义view,以及自定义layout来实现2048游戏。

2017-12-25 21:45:47 749

原创 自定义view实现日历

最近都在学习自定义view相关的知识,另外工作之余也在独立开发一款金融应用,因为作为程序员的我们,看这个看那个都觉得很简单,谁都会,真正着手时,fuck,都不知道从何下手。动手,writing the fuck code!

2017-11-07 11:01:45 731 1

原创 绘制Android机器人

国庆归来,第一天上班,假期综合症弄的人像吸了鸦片。国庆结束,元旦还会远吗,元旦结束,春节还会远吗?年初信誓旦旦的目标, 还差几条街呢!so,keep it.逛csdn的时候,发现自己一直没有头像。这怎么行呢,哥可是有身份的人啊。刚好,脑子里刚好闪过自己画图片来作为头像的想法,那就画Android机器人吧!自定义view:通过自定义view,来显示我们想要的图形。最主要的就是根据机器

2017-10-09 22:50:54 488

原创 日落日出动画效果

开通博客的初衷是为了督促自己记录,打开主页,惭愧啊。最近在学习的过程中,发现之前所掌握的内容又忘得一干二净。所以啊,记录真的很重。久未提笔,瞬间感觉小学的500字作文都要很困难。写作,记录脚步,锻炼思维,坚持吧!     准备工作之余开发一款金融相关App,哈哈,刚好切合自身知识和爱好。如果你打开手机里金融类应用,会发现它们都有一个特点,就是很多图、线条,很直观的向用户展示指数、涨跌等信息。所

2017-09-30 14:11:20 2426

原创 从零开始

不知不觉,离开学校已有大半年的时间了。    踏入这个复杂又简单的社会,每一天,每一个人,每一件事,都会让人成长。    工作上,从毕业就到公司开始研发工程师的工作。虽说是研发,但由于公司性质以及业务的关系,工作的大部分时间都花在了代码移植和项目流程上。真正写代码的时间很少,除了解Bug的时候。即使解Bug,也谈不上真正意义的写代码,是在别人的基础上,进行逻辑分析,代码修改,提高的是代码分

2017-03-20 18:37:22 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除