
Android进阶
Android开发高级技术
谷哥的小弟
历任研发工程师,技术组长,项目经理;曾于2016年、2020年两度荣获CSDN年度十大博客之星。
十载寒冰,难凉热血;多年过去,历经变迁,物是人非。
然而,对于技术的探索和追求从未停歇。
坚持原创,热衷分享,初心未改,继往开来!
展开
-
PorterDuffXfermode与圆角图片
在项目开发中,我们常用到这样的功能:显示圆角图片。这个是咋做的呢?我们来瞅瞅其中一种实现方式原创 2023-02-11 20:45:00 · 453 阅读 · 1 评论 -
Android项目开发常用工具类StatusLayout
StatusLayout用于显示状态布局(例如:网络错误、异常错误、空数据等)。原创 2022-06-04 23:30:00 · 310 阅读 · 0 评论 -
Android项目开发常用工具类SmartTextView
SmartTextView是一款可自动显示和隐藏的TextView。原创 2022-06-04 23:15:00 · 328 阅读 · 0 评论 -
Android项目开发常用工具类SquareImageView
SquareImageView为正方形的ImageView。原创 2022-06-04 23:45:00 · 481 阅读 · 0 评论 -
Android项目开发常用工具类ScrollerViewPager
ScrollerViewPager是自定义的ViewPager控件。原创 2022-06-04 23:00:00 · 344 阅读 · 0 评论 -
Android项目开发常用工具类FlowLayout
FlowLayout用于流式布局标签控件。原创 2022-06-04 21:45:00 · 975 阅读 · 0 评论 -
Android项目开发常用工具类ImageView
ImageView用于显示圆形的图片。原创 2022-06-04 21:30:00 · 314 阅读 · 0 评论 -
Android项目开发常用工具类TitleBarFragment
TitleBarFragment用于带有titlebar的Fragment原创 2022-06-04 21:15:00 · 250 阅读 · 0 评论 -
Android项目开发常用工具类BaseFragment
BaseFragment用于项目中Fragment的基类。原创 2022-06-04 20:30:00 · 811 阅读 · 0 评论 -
Android项目开发常用工具类BaseActivity
BaseActivity用于项目中Activity的基类。原创 2022-06-04 20:00:00 · 814 阅读 · 0 评论 -
Android项目开发常用工具类SharedPreferencesUtils
SharedPreferencesUtils用于在SharedPreferences中进行数据存储操作。原创 2022-06-02 20:00:00 · 1707 阅读 · 1 评论 -
Android项目开发常用工具类LightTaskUtils
LightTaskUtils是一个轻量级的线程管理工具。原创 2022-06-02 23:45:00 · 740 阅读 · 0 评论 -
Android项目开发常用工具类KeyboardUtils
KeyboardUtils用于控制软键盘的显示与隐藏。原创 2022-06-02 19:00:00 · 880 阅读 · 0 评论 -
Android项目开发常用工具类GlideEngine
GlideEngine用于利用Glide加载图片。原创 2022-06-02 22:15:00 · 2979 阅读 · 0 评论 -
Android项目开发常用工具类DisplayUtils
DisplayUtils用于获取屏幕尺寸以及不同单位之间的转换。原创 2022-06-02 21:30:00 · 1199 阅读 · 0 评论 -
讲给Android程序员看的前端和后台教程
几年前,我找工作那会儿只要你会Android四大组件;再懂一些常用的布局,那么找一份Android开发是不成问题的。我清晰的记得我当时去面试时,只有一道题目:在子线程中执行完异步操作后该如何更新UI?我想现在的童鞋看到这样的题目,心里不由得会想:太简答了,简单得令人发指!是的,是的,现在的大学毕业生也能回答出这样的题目。只不过,在当时就是这么个情况:懂Android开发的人不多,企业的要求也不高;总之,在那个时代找一原创 2017-11-27 09:04:28 · 15576 阅读 · 20 评论 -
封装实践——打造微信底部tab栏
目前市面上很多App都采用底部一个Tab栏,管理四到五个Tab,然后选择切换页面的方式的设计,这虽然不太符合metro design,但确是一个不容易出错而又符合国人使用习惯的设计方式。比如微信,支付宝,网易新闻,简书等都采用这种设计。而所谓封装一定是基于某种确定的业务需求,所以针对上述的通用设计方式,我们可以做一个比较理想化的封装。 为什么要做封装 你可能会觉得,这就是一个选择切换嘛,我只要做原创 2016-04-11 15:47:34 · 12114 阅读 · 3 评论 -
Android官方底部Tab栏设计规范
上一篇《仿微信底部Tab栏》中粗略的讲了下底部Tab栏的封装,不少同学在实际运用中发现了一些问题,比如我demo中的title用了actionbar,所以如果新建的Activity的Theme不包含actionbar就回出现空指针;再比如假如底部的Tab对应的并不全都是Fragment,而是一部分Fragment,一部分Activity,就不适用了,但办法总比困难多,这个也是可以解决的;还有一个很常原创 2016-04-20 19:28:51 · 24561 阅读 · 2 评论 -
Android事件分发详解(三)——ViewGroup的dispatchTouchEvent()源码学习
package cc.aa;import android.os.Environment;import android.view.MotionEvent;import android.view.View;public class UnderstandDispatchTouchEvent { /** * 该示例的重点: * 1 ViewGroup的dispatc原创 2016-02-21 12:02:38 · 3261 阅读 · 2 评论 -
深入探讨Android异步精髓Handler
Google采用Handler把主线程和子线程精巧地联系起来——子线程中进行耗时的业务逻辑,然后利用Handler通知主线程刷新UI。其实,在AsyncTask和IntentService的内部亦使用了Handler实现其主要功能。抛开这两者不谈,当我们打开Android源码的时候也随处可见Handler的身影。所以,Handler是Android异步操作的核心和精髓,它在众多领域发挥着极其重要甚至是不可替代的作用。原创 2016-12-01 00:08:41 · 21502 阅读 · 44 评论 -
站在源码的肩膀上全解Scroller工作机制
在Android中我们常见到的ListView、Launcher、SlidingMenu、ViewPager等等这些具有弹性滑动的View的背后都隐藏着一个机智又乖巧的小精灵——Scroller。这些控件的使用场景和作用各不相同,但在它们的内部均广泛又深刻地使用了Scroller的scrollTo()和scrollBy(),如此的实现不但丰富了操作方式而且极大提升了用户体验。原创 2016-11-16 10:26:57 · 20737 阅读 · 30 评论 -
Android多分辨率适配框架(1)— 核心基础
Android的源码公开策略丰富了手持设备的多样性,但随之而来的却是较为严重的"碎片化"——版本繁多、尺寸多样、功能定制。在Android项目开发中,软件工程师都会面临一个问题:如何适配多不同分辨率的设备?许多人采用的是这样的方式:利用不同的dimens和drawable资源适配不同分辨率的设备。这么做当然没错,可是它也同时带来一些弊端.........原创 2016-10-14 16:35:22 · 26826 阅读 · 33 评论 -
仿QQ获取设备中APK并分享
我和郭霖13年,郭霖开始写技术博客。我在CSDN的博客频道逛着玩,刚好看到他的文章,于是点击进去阅读。看完之后最大的感受就是:代码整齐,技术深厚;文章写得图文并茂,有条有理。从那时起,我就成了郭霖的一个粉丝,每周四早晨都等着看他的更新。诚实地说:没有脑残地追过星,但这么实在地喜欢看一个人写的技术博客,这还是头一回。其实,从他每篇文章的点击量和评论数也可以看出:大家对郭霖非常的认可。他也常出现在CSD原创 2016-05-03 07:49:11 · 20019 阅读 · 12 评论 -
View的Layout过程源码分析
/** * 文档描述: * View的Layout过程源码分析 * * 原创作者: * 谷哥的小弟 http://blog.csdn.net/lfdfhl * * 分析笔记: * View在经历过第一阶段的measure之后,进入到第二阶段layout. * 该阶段的目的是 * (1)设置View自身的大小和位置. * (2)设置View的子View原创 2016-03-27 22:00:27 · 1781 阅读 · 0 评论 -
onMeasure()源码分析及自定义View对于wrap_content的支持
/** * * 文档描述: * (1)onMeasure()源码分析 * (2)自定义View时重写onMeasure()实现对于wrap_content的支持 * * 原文地址: * http://blog.csdn.net/lfdfhl * * 参考资料: * http://blog.csdn.net/lfdfhl/article/details/原创 2016-03-25 11:18:49 · 2263 阅读 · 0 评论 -
MeasureSpec的理解和详尽源码分析
package cc.ww;import android.view.View;import android.view.View.MeasureSpec;import android.view.ViewGroup.LayoutParams;import android.view.ViewGroup.MarginLayoutParams;import android.widget.Line原创 2016-03-13 21:28:24 · 3639 阅读 · 1 评论 -
Android事件分发详解(七)——将事件分发至特定的子View.
package cn.c;import android.os.Bundle;import android.app.Activity;import android.view.MotionEvent;import android.widget.Button;/** * Demo描述: * 在MainActivity的dispatchTouchEvent方法中直接将事件指定给了MyButt原创 2016-02-21 11:56:25 · 1888 阅读 · 0 评论 -
自定义可折叠和展开的View
CollapseView如下:package com.ww.collapseview;import android.annotation.SuppressLint;import android.content.Context;import android.text.TextUtils;import android.util.AttributeSet;import android.vi原创 2016-03-29 15:36:30 · 5892 阅读 · 3 评论 -
利用LruCache和DiskLruCache加载网络图片实现图片瀑布流效果(升级版)
MainActivity如下:package cc.patience7;import android.os.Bundle;import android.app.Activity;/** * Demo描述: * 采用瀑布流的形式加载大量网络图片 * 详细分析参见WaterfallScrollView * * 更新说明: * 在原本的的基础上添加了本地缓存DiskLruCac原创 2015-01-20 20:07:56 · 3056 阅读 · 3 评论 -
利用LruCache加载网络图片实现图片瀑布流效果(改进版)
MainActivity如下:package cc.patience4;import cc.patience4.R;import android.os.Bundle;import android.app.Activity;/** * Demo描述: * 采用瀑布流的形式加载大量网络图片 * 详细分析参见WaterfallScrollView * * 更新说明: * 该示原创 2014-08-15 10:20:18 · 3366 阅读 · 0 评论 -
利用LruCache加载网络图片实现图片瀑布流效果(基础版)
MainActivity如下:package cc.patience3;import android.os.Bundle;import android.app.Activity;/** * Demo描述: * 采用瀑布流的形式加载大量网络图片 * 详细分析参见WaterfallScrollView * * 参考资料: * 1 http://blog.csdn.net/gu原创 2014-08-13 14:05:10 · 3230 阅读 · 1 评论 -
Android侧滑菜单完整详细示例(精装版)
MainActivity如下:package cn.patience7;import android.os.AsyncTask;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import an原创 2014-09-13 22:58:58 · 2254 阅读 · 0 评论 -
Android侧滑菜单完整详细示例(改进版)
MainActivity如下:package cc.cd;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnIt原创 2014-09-13 23:00:03 · 2270 阅读 · 0 评论 -
仿360在Launcher画面显示内存使用率的浮窗(改进版)
MainActivity如下:package cc.cc;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.app.Activity;import android原创 2014-07-13 20:36:25 · 2428 阅读 · 0 评论 -
仿360在Launcher画面显示内存使用率的浮窗(基础版)
MainActivity如下:package cc.cc;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.app.Activity;import andro原创 2014-06-22 21:36:23 · 2252 阅读 · 0 评论 -
Android事件分发详解(六)——ACTION_DOWN的消费验证
MainActivity如下:package cn.c;import android.os.Bundle;import android.app.Activity;import android.view.MotionEvent;/** * Demo描述: * 分析Android事件分发和处理机制 * * 在该示例中涉及到三个自定义的View.分别是: * 最外层的布局MyF原创 2016-02-21 11:58:22 · 1774 阅读 · 0 评论 -
Android事件分发详解(五)——Touch事件传递验证
MainActivity如下:package cn.c;import android.os.Bundle;import android.app.Activity;import android.view.MotionEvent;/** * Demo描述: * 分析Android事件分发和处理机制 * * * 总结: * 1 ViewGroup继承自View * 事原创 2016-02-21 11:59:37 · 1703 阅读 · 0 评论 -
Android事件分发详解(四)——事件传递基础示例
MainActivity如下:package com.cn;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import andr原创 2016-02-21 12:00:46 · 1562 阅读 · 0 评论 -
利用ActivityLifecycleCallbacks判断APP是否在后台运行
利用ActivityLifecycleCallbacks判断APP是否在后台运行(附源码)原创 2016-04-05 07:29:03 · 14794 阅读 · 7 评论 -
View的draw过程源码分析
/** * * 原创作者: * 谷哥的小弟 http://blog.csdn.net/lfdfhl * * 文档描述: * View的draw过程源码分析 * * 绘制过程分为六步: * * 1. Draw the background * 2. If necessary, save the canvas' layer原创 2016-03-30 22:36:30 · 1896 阅读 · 0 评论