郭霖的专栏

每当你在感叹,如果有这样一个东西就好了的时候,请注意,其实这是你的机会...

排序:
默认
按更新时间
按访问量

历久而新,我的新书《第二行代码》已出版!

《第二行代码》中的内容我相信很多人都会非常感兴趣,因为里面确实加入了很多很新的知识。略粗概括一下的话,新增内容就包括有Android Studio、Gradle、Material Design、运行时权限、多窗口模式、RecyclerView、百分比布局、Lambda表达式、OkHttp、Doze...

2016-11-23 09:49:08

阅读数:118505

评论数:755

Android数据库高手秘籍(九)——赶快使用LitePal 2.0版本吧

今天很高兴告诉大家一个好消息,LitePal又出新版本了。 算了一下,上个版本1.6.1已经是半年前推出的了,而整个开源项目自2014年推出以来,我已经维护了有四年之久。这四年以来,我不断地完善着LitePal的代码,修复各种大家提出的bug,以及补充各式各样好用的新功能。而今天,时隔半年,Li...

2018-06-11 07:34:42

阅读数:9471

评论数:30

Android通知栏微技巧,8.0系统中通知栏的适配

大家好,今天我们继续来学习Android 8.0系统的适配。 之前我们已经讲到了,Android 8.0系统最主要需要进行适配的地方有两处:应用图标和通知栏。在上一篇文章当中,我们学习了Android 8.0系统应用图标的适配,那么本篇文章,我们自然要将重点放在通知栏上面了,学习一下Androi...

2018-04-17 07:39:11

阅读数:20078

评论数:84

Android应用图标微技巧,8.0系统中应用图标的适配

大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个Glide系列结束之后一直还没想到什么好的新题材。现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米、华为、OV等国产手机...

2018-03-13 07:56:38

阅读数:19870

评论数:80

2017年终总结,一个不顺心的槛年

2017就这样在不知不觉中又过去了。由于明天大家就都放假了,因此今年的年终总结我只好提前两天发布吧。这已经是我第五个年头写年终总结了,不像我五前年刚来到CSDN开始写博客的时候那么干劲十足,现在的我也到了听听《时间都去哪了》竟会觉得伤感的年纪了。我发现人的心态真的是会随着年龄的变化而产生巨大的变化...

2017-12-21 18:54:22

阅读数:17119

评论数:56

Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

本篇将是我们这个Glide系列的最后一篇文章。 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了。那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定,因此整个系列也都是基于3.7.0版本来写的。 而现在,Glide的最新版本已经出到了4.4....

2017-12-19 07:58:32

阅读数:16654

评论数:47

Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

我们的Glide系列文章终于要进入收尾篇了。从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久。在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包括基本用法、源码解析、缓存机制、回调与监听、图片变换以及自定义模块。而今天,我们就要综合利用之前所学...

2017-10-26 18:32:02

阅读数:12562

评论数:30

Android图片加载框架最全解析(六),探究Glide的自定义模块功能

不知不觉中,我们的Glide系列教程已经到了第六篇了,距离第一篇Glide的基本用法发布已经过去了半年的时间。在这半年中,我们通过用法讲解和源码分析配合学习的方式,将Glide的方方面面都研究了个遍,相信一直能看到这里的朋友现在已经是一位Glide高手了。 整个Glide系列预计总共会有八篇文章...

2017-10-09 09:30:05

阅读数:14927

评论数:29

Android图片加载框架最全解析(五),Glide强大的图片变换功能

大家好,又到了学习Glide的时间了。在前面四篇文章的当中,我们已经学习了Glide的基本用法、Glide的工作原理和执行流程、Glide的缓存机制、以及Glide的回调机制等内容。如果你能将前面的四篇文章都掌握好了,那么恭喜你,现在你已经是一名Glide好手了。不过Glide的这个框架的功能实在...

2017-08-29 07:50:56

阅读数:26910

评论数:56

Android图片加载框架最全解析(四),玩转Glide的回调与监听

大家好,今天我们继续学习Glide。在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解。今天是这个Glide系列的第四篇文章,我们又要选取一个新的功能模块开始学习了,那么就来研究一下Glide的回调和监听...

2017-06-20 07:53:26

阅读数:36038

评论数:73

Android图片加载框架最全解析(三),深入探究Glide的缓存机制

Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存。 这两个缓存模块的作用各不相同,内存缓存的主要作用是防止应用重复将图片数据读取到内存当中,而硬盘缓存的主要作用是防止应用重复从网络或其他地方重复下载和读取...

2017-05-23 08:37:16

阅读数:49491

评论数:100

Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

在多数情况下,我们想要在界面上加载并展示一张图片只需要一行代码就能实现。虽说只有这简简单单的一行代码,但大家可能不知道的是,Glide在背后帮我们默默执行了成吨的工作。这个形容词我想了很久,因为我觉得用非常多这个形容词不足以描述Glide背后的工作量,我查到的英文资料是用tons of

2017-04-18 07:51:05

阅读数:92187

评论数:194

Android图片加载框架最全解析(一),Glide的基本用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 现在Android上的图片加载框架非常成熟,从最早的...

2017-03-21 08:03:11

阅读数:105080

评论数:150

Android新特性介绍,ConstraintLayout完全解析

今天给大家带来2017年的第一篇文章,这里先祝大家新年好。 本篇文章的主题是ConstraintLayout。其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。我们都知道,在传统的Android...

2017-02-03 09:14:39

阅读数:201026

评论数:187

2016年终总结,新的里程和新的开始

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/52506273 转眼之间,一年又过去了。按照往年的习惯,我都是在12月31号那天才写年终总结的,但今年的日子比较特殊,因为明天就要放假了,所以我只好提前一天来写今年的年终总结了。 ...

2016-12-30 08:11:14

阅读数:21425

评论数:37

谈一谈今年的移动互联网寒冬

虽说已经有近两个月的时间没写技术文章了,但是这次我仍然不打算写技术类的,因为我觉得本篇文章要比一篇单纯的技术文章更有价值。平时不管是在公众号、QQ群、还是博客里,我回答的问题主要是以技术类的居多,但是最近一段时间,有大量的朋友都在问我一些就业、成长、选择等等方面的问题。对于这些问题,一是我逐个回答...

2016-12-20 09:10:07

阅读数:50080

评论数:141

Android弹幕功能实现,模仿斗鱼直播的弹幕效果

大家好,感觉好像已经很久没更新博客了。前段时间主要是忙于新书的事情,时间比较紧张。而现在新书已经完稿,剩下的事情就都是出版社的工作了,那么我又可以抽出时间来写写博客了。 记得之前有位朋友在我的公众号里问过我,像直播的那种弹幕功能该如何实现?如今直播行业确实是非常火爆啊,大大小小的公司都要涉足一下...

2016-10-18 08:01:32

阅读数:66576

评论数:121

Android状态栏微技巧,带你真正理解沉浸式模式

记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersi...

2016-08-23 07:32:55

阅读数:131649

评论数:203

Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?

Dialog和Toast所有人肯定都不会陌生的,这个我们平时用的实在是太多了。而Snackbar是Design Support库中提供的新控件,有些朋友可能已经用过了,有些朋友可能还没去了解。但是你真的知道什么时候应该使用Dialog,什么时候应该使用Toast,什么时候应该使用Snackbar吗...

2016-07-26 07:55:07

阅读数:52780

评论数:85

Android冷启动白屏解析,带你一步步分析和解决问题

关于首次启动程序白屏时间过长这个问题其实我早就发现了,而且有的时候白屏时间可以长达七八秒。这个问题已经是一个普遍存在的现象了,可能很多人对此都产生了疑惑。那么这里我就专门写一篇文章来为大家答疑解惑吧。另外,本篇文章也向大家展示了一个分析和解决问题的思路,希望大家以后遇到问题可以通过多思考和多动手实...

2016-06-28 08:52:07

阅读数:46975

评论数:80

Android Studio新功能解析,你真的了解Instant Run吗?

我们都知道,Android Studio功能非常强大,在各个功能性方面都要优于Eclipse,唯独在速度方面被吐糟得比较惨。Android Studio团队为此也是做了很多的优化,在Android Studio 2.0中,对速度方面进行了大幅度的改进

2016-06-02 09:04:15

阅读数:57527

评论数:83

Android通知栏微技巧,那些你所没关注过的小细节

对于通知栏的使用,Android各个版本其实都有比较大的调整,包括即将发布的Android 7.0版本,通知栏功能上又要有大动作。那么新版本的通知栏API无法兼容老系统这就会是一个很头疼的问题。 为此Android在appcompat-v7库中提供了一个NotificationCompat类来处...

2016-05-23 08:56:41

阅读数:32488

评论数:70

Android drawable微技巧,你所不知道的drawable的那些细节

大家都知道,在Android项目当中,drawable文件夹都是用来放置图片资源的,不管是jpg、png、还是9.png,都可以放在这里。除此之外,还有像selector这样的xml文件也是可以放在drawable文件夹下面的。 但是如果你现在使用Android Studio来新建一个项目,你会发...

2016-04-28 09:06:26

阅读数:83939

评论数:187

告别难记的长域名!我的博客全新短域名上线

翻阅了一下记录,我的第一篇文章是在2013年3月19号写的,如令一晃三年的时光过去了。很庆幸即使在三年后的今天我还能坚持写着博客,并且在短期可预见的时间里,我暂时还没有停更计划,未来会继续坚持给大家带来更多高质量的文章。 我依稀还记得,2013年的五一假期,那个时候我去同学家里打游戏,顺便看了一下...

2016-03-31 09:02:52

阅读数:22616

评论数:59

Android安全攻防战,反编译与混淆技术完全解析(下)

在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码、反编译资源、以及重新打包等内容。通过这些内容我们也能看出来,其实我们的程序并没有那么的安全。可能资源被反编译影响还不是很大,而重新打包又由于有签名的保护导致很难被盗版,但代码被反编译就有可能会泄漏核心技术了,因此一款安...

2016-03-17 09:03:21

阅读数:57546

评论数:165

Android安全攻防战,反编译与混淆技术完全解析(上)

我们都知道,Android程序打完包之后得到的是一个APK文件,这个文件是可以直接安装到任何Android手机上的,我们反编译其实也就是对这个APK文件进行反编译。Android的反编译主要又分为两个部分,一个是对代码的反编译,一个是对资源的反编译,我们马上来逐个学习一下。 在开始学习之前,首先...

2016-02-18 09:09:54

阅读数:106917

评论数:169

Android Scroller完全解析,关于Scroller你所需知道的一切

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/48719871 2016大家新年好!这是今年的第一篇文章,那么应CSDN工作人员的建议,为了能给大家带来更好的阅读体验,我也是将博客换成了宽屏版。另外,作为一个对新鲜事物从来后知后...

2016-01-21 09:03:50

阅读数:83805

评论数:172

2015年终总结,忙碌和无所事事的一年

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49805231犹豫了很久,今年的年终总结到底要不要写,我是很想把每年一次的年终总结养成一种习惯,可尴尬的是今年好像确实没什么好写的。准确地讲,今年是我无所事事的一年,我甚至已经快要想...

2015-12-31 09:18:19

阅读数:31559

评论数:254

Android静默安装实现方案,仿360手机助手秒装和智能安装功能

之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好。虽说这种方式看上去不打搅用户,但是却存在着一个问题,因为Android系统会在安装界面当中把程序所声明的权限展示给用户看,用户来评估一...

2015-12-14 09:20:06

阅读数:56799

评论数:111

Android Context完全解析,你所不知道的Context的各种细节

Context相信所有的Android开发人员基本上每天都在接触,因为它太常见了。但是这并不代表Context没有什么东西好讲的,实际上Context有太多小的细节并不被大家所关注,那么今天我们就来学习一下那些你所不知道的细节。我们知道,Android应用都是使用Java语言来编写的,那么大家可以...

2015-11-09 09:14:19

阅读数:111743

评论数:202

Android ListView功能扩展,实现高性能的瀑布流布局

经过前面两篇文章的学习,我们已经对ListView进行了非常深层次的剖析,不仅了解了ListView的源码和它的工作原理,同时也将ListView中常见的一些问题进行了归纳和总结。 那么本篇文章是我们ListView系列三部曲的最后一篇,在这篇文章当中我们将对ListView进行功能扩展,让它能够...

2015-10-08 09:11:01

阅读数:49786

评论数:61

Android ListView异步加载图片乱序问题,原因分析及解决方案

在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼。比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者...

2015-08-20 09:15:51

阅读数:64028

评论数:122

Android ListView工作原理完全解析,带你从源码的角度彻底理解

在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。 另外ListView还有一个非常神奇的功能,我...

2015-07-23 09:09:42

阅读数:113247

评论数:204

Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

大家好,欢迎继续回到Android属性动画完全解析。在上一篇文章当中我们学习了属性动画的一些进阶技巧,包括ValueAnimator和ObjectAnimator的高级用法,那么除了这些之外,当然还有一些其它的高级技巧在等着我们学习,因此本篇文章就对整个属性动画完全解析系列收个尾,来学习一下剩下的...

2015-06-04 09:13:58

阅读数:73165

评论数:143

Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法

大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了。但是,正如上篇文章当中所说到的,属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做到的属性动画也能做到,补间动画做不到的现在属性动画也可以做到了。...

2015-05-07 09:04:32

阅读数:96276

评论数:170

Android属性动画完全解析(上),初识属性动画的基本用法

在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独...

2015-04-09 09:56:15

阅读数:157505

评论数:180

Android最佳性能实践(四)——布局优化技巧

在前面几篇文章当中,我们学习了如何通过合理管理内存,以及高性能编码技巧的方式来提升应用程序的性能。然而实际上界面布局也会对应用程序的性能产生比较大的影响,如果布局写得糟糕的话,那么程序加载UI的速度就会非常慢,从而造成不好的用户体验。那么本篇文章我们就来学习一下,如何通过优化布局来提供应用程序的性...

2015-03-19 09:21:55

阅读数:72640

评论数:81

Android最佳性能实践(三)——高性能编码优化

在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因。那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的技巧。 避免创建不必要的对象 创建对象从来都不应该是一件随意的事情,因为创建一个对象就意味着垃圾回...

2015-03-05 09:19:50

阅读数:58927

评论数:74

Android最佳性能实践(二)——分析内存的使用情况

由于Android是为移动设备开发的操作系统,我们在开发应用程序的时候应当始终把内存问题充分考虑在内。虽然Android系统拥有垃圾自动回收机制,但这并不意味着我们就可以完全忽略何时去分配或释放内存。即使我们全部按照上一篇文章中给出的编程建议来去编写程序,还是会很有可能出现内存泄露或其它类型的内存...

2015-02-12 09:09:52

阅读数:82536

评论数:101

Android最佳性能实践(一)——合理管理内存

有不少朋友都问过我,怎样才能写出高性能的应用程序,如何避免程序出现OOM,或者当程序内存占用过高的时候该怎么样去排查。确实,一个优秀的应用程序,不仅仅要功能完成得好,性能问题也应该处理得恰到好处。为此,我也是阅读了不少Android官方给出的高性能编程建议,那么从本篇文章开始,我就准备开始写一个全...

2015-02-05 09:20:28

阅读数:96334

评论数:110

2014年终总结,我决定要实现的三个目标

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/41722975不知不觉,一年就这样又过去了。记得在去年的最后一天,我写了一篇年终总结,回顾了一年里所发生的点点滴滴,那么我就尽量把写年终总结养成一种习惯吧。今天是2014年的最后一天...

2014-12-31 09:09:24

阅读数:36897

评论数:131

Android任务和返回栈完全解析,细数那些你所不知道的细节

一个应用程序当中通常都会包含很多个Activity,每个Activity都应该设计成为一个具有特定的功能,并且可以让用户进行操作的组件。另外,Activity之间还应该是可以相互启动的。比如,一个邮件应用中可能会包含一个用于展示邮件列表的Activity,而当用户点击了其中某一封邮件的时候,就会打...

2014-12-30 09:09:16

阅读数:48781

评论数:93

Android数据库高手秘籍(八)——使用LitePal的聚合函数

在上一篇文章当中,我们已经把LitePal查询操作的所有用法都学习完了,很显然,LitePal帮我们提供了非常强大的查询API,使得我们可以极度轻松地完成各种类型的查询。但是呢,在SQL语句当中,有一种查询是比较特殊的,就是聚合函数查询,它不像传统查询一样是将表中的某些列的数据查询出来,而是将查询...

2014-12-04 09:09:01

阅读数:35300

评论数:126

Android数据库高手秘籍(七)——体验LitePal的查询艺术

经过了多篇文章的学习,我们已经把LitePal中的绝大部分内容都掌握了。现在回想起来了,增删改查四种操作中的前三种我们都已经学完了,不知道现在使用起数据库来,你有没有感觉到格外的轻松和简单。但是呢,我们都知道,在所有的数据库操作当中,查询操作肯定是最复杂的,用法也是最多的,因此LitePal在查询...

2014-11-13 09:03:29

阅读数:79850

评论数:157

Android数据库高手秘籍(六)——LitePal的修改和删除操作

在上一篇文章中,我们学会了使用LitePal进行存储数据的功能。确实,比起直接使用Android原生的API,LitePal明显简单方便了太多。那么,在增删改查四种操作中,我们已经把“增”学完了,今天就让我们继续趁热打铁,学习一下如何使用LitePal进行修改和删除操作。还没有看过前一篇文章的朋友...

2014-10-30 09:06:00

阅读数:68757

评论数:166

Android数据库高手秘籍(五)——LitePal的存储操作

经过前面几篇文章的学习,我们已经把LitePal的表管理模块的功能都很好地掌握了,相信大家都已经体会到了使用LitePal来创建表、升级表、以及建立表关联所带来的便利。那么从本篇文章开始,我们将进入到一个新模块的学习旅程当中,使用LitePal来进行表的CRUD操作。还没有看过前一篇文章的朋友建议...

2014-10-16 09:22:30

阅读数:61837

评论数:154

Android数据库高手秘籍(四)——使用LitePal建立表关联

任何一个像样的程序都不可能仅仅只有一个类的,同样地,任何一个像样的数据库也不可能仅仅只有一张表。我们都知道,在面向对象的编程语言中,多个类之间可以相互关联引用,共同完成某项功能。那么在数据库当中,多个表之间可以相互关联吗?当然可以!只不过表与表之间的关联关系要比对象之间的关联关系复杂一些,也更加难...

2014-09-25 09:00:55

阅读数:59446

评论数:138

Android数据库高手秘籍(三)——使用LitePal升级表

在上一篇文章中,我们学习了LitePal的基本用法,体验了使用框架来进行创建表操作的便利。然而大家都知道,创建表只是数据库操作中最基本的一步而已,我们在一开始创建的表结构,随着需求的变更,到了后期是极有可能需要修改的。因此,升级表的操作对于任何一个项目也是至关重要的,那么今天我们就一起来学习一下,...

2014-09-18 08:19:56

阅读数:63262

评论数:148

Android数据库高手秘籍(二)——创建表和LitePal的基本用法

上一篇文章中我们学习了一些Android数据库相关的基础知识,和几个颇为有用的SQLite命令,都是直接在命令行操作的。但是我们都知道,数据库是要和程序结合在一起使用的,单独对一个数据库去进行増删改查操作并没有什么意义,因此今天我们就来学习一下如何在Android程序当中去操作SQLite数据库。...

2014-09-11 09:05:26

阅读数:149467

评论数:292

Android数据库高手秘籍(一)——SQLite命令

要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能。虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,增删改查,大家还是必须要学会的。 SQL(Structured Query Language)是一种标准的数据库查询语言,即所有的关系型数...

2014-09-04 09:10:17

阅读数:86098

评论数:78

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