Android
文章平均质量分 93
张旭童
这个作者很懒,什么都没留下…
展开
-
【Android 初级知识】文字颜色 背景 触摸点击 反馈色 之selector的那些事儿
本文起源于今天和同事的一次讨论。很简单,但是还是有些小坑在里面,所以记录一下。一般情况下,大家使用Selector的都是用作控件View的背景。为触摸点击、按下等事件提供一个反馈效果。例如:设置 某个ImageView,普通状态下背景是一个齿轮按钮,按下后为 齿轮按钮有一个反馈色,变为蓝色。可以直接在布局里为ImageVIew控件设置background 为一个@drawable/下的原创 2016-03-16 22:39:25 · 3960 阅读 · 0 评论 -
【Android】你可能不知道的Support(一) 0步自动定向刷新:SortedList
打算写一个系列了,讲解Android Support包内那些常用or冷门有用的工具类的合集。最近leader在优化IM会话列表,同事以前的做法是无脑notifyDatasetChanged()刷新RecyclerView的。在消息聊得很嗨很多的时候,界面频繁刷新,会话列表会出现丢失焦点现象。且性能毕竟不高。遂想采用**定向刷新**。同事知道我以前研究过DiffUtil和定向刷新相关内容,于是便和我讨论。原创 2016-12-07 08:34:07 · 5631 阅读 · 3 评论 -
【Android】让HeaderView也参与回收机制,自我感觉是优雅的为 RecyclerView 添加 HeaderView (FooterView)的解决方案
【Android】让HeaderView也参与 回收 复用机制,自我感觉是优雅的为 RecyclerView 添加 HeaderView (FooterView)的解决方案本文就参考翔神的装饰者模式,为RecyclerView 添加 HeaderView(FooterView),并且将HeaderView的UI创建,和数据绑定强制分开,令HeaderView实例在Adapter中不再被强引用,让HeaderView和普通的ItemView没有两样~。工程里已经参考解决,HeaderView适配GridLa原创 2016-08-21 17:22:01 · 16586 阅读 · 29 评论 -
五行代码实现 炫动滑动 卡片层叠布局,仿探探、人人影视订阅界面 简单&优雅:LayoutManager+ItemTouchHelper
前几天看有人实现了仿人人美剧的订阅界面,不过在细节之处以及实现方式我个人认为都不是最佳的姿势。于是我也动手撸了一个,还顺带撸了个探探的界面.且简单&优雅&快速。利用LayoutManager实现卡片层叠布局,搭配ItemTouchHelper,它本身实现了拖拽&滑动删除逻辑,我们只需要在onChildDraw()中绘制.所以本文也算是填了LayoutManger系列的坑,实现了一个酷炫效果的布局。原创 2016-12-19 08:14:33 · 26013 阅读 · 33 评论 -
【注释张豪华版 Path酷炫动画】极速get花式Path (支付宝支付成功动画)
在前文 中,我详细的阐述了如何撸出一个酷炫的Path动画View,我们的口号是:I have a path.I have a view. Oh~,Path(Anim)View.本文的目标是:I have a pic.I have a view. Oh~,Path(Anim)View.然后手把手教你图片->SVG->Path的姿势.。从此酷炫Path动画,你找到的图有多精彩,gif就有多精彩原创 2017-01-04 14:31:29 · 13138 阅读 · 4 评论 -
仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮
今天给大家带来的是利用 纯自定义View,实现的仿饿了么加入购物车控件,自带闪转腾挪动画的按钮。 本控件已经考虑到了View的回收复用,在RecyclerView、ListView中使用,切换LayoutManager也是没有问题的。注意,本控件非继承自ViewGroup,而是纯自定义View实现。理由如下:1 减少布局层级,从而提高性能2 用到什么draw什么,间接提高性能。原创 2017-01-09 07:27:04 · 13395 阅读 · 12 评论 -
RxJava2 源码解析(二)
概述承接上一篇RxJava2 源码解析(一), 本系列我们的目的:知道源头(Observable)是如何将数据发送出去的。知道终点(Observer)是如何接收到数据的。何时将源头和终点关联起来的知道线程调度是怎么实现的知道操作符是怎么实现的本篇计划讲解一下4,5.RxJava最强大的莫过于它的线程调度 和 花式操作符。map操作符map是一个高频的操作符,我原创 2017-03-20 10:06:29 · 8189 阅读 · 12 评论 -
RxJava2 源码解析(一)
概述最近事情太多了,现在公司内部的变动,自己岗位的变化,以及最近决定找工作。所以博客耽误了,准备面试中,打算看一看RxJava2的源码,遂有了这篇文章。不会对RxJava2的源码逐字逐句的阅读,只寻找关键处,我们平时接触得到的那些代码。 背压实际中接触较少,故只分析了Observable. 分析的源码版本为:2.0.1我们的目的:知道源头(Observable)是如何将数据发送出去的。知道终原创 2017-03-12 19:42:21 · 15157 阅读 · 10 评论 -
动态图解&实例 ConstraintLayout Chain
昨儿写了一篇全文字和JPG、无Gif的博文ConstraintLayout 属性详解 和Chain的使用, 主要详解了ConstraintLayout的所有属性, 但是有朋友问Chain是如何通过可视化的方式去添加, 于是便有了此文。但是只讲解Chain又显得太单薄, 于是我又加入了一个用ConstraintLayout实现商品详情、Item布局的实例。原创 2017-05-25 18:43:33 · 9800 阅读 · 11 评论 -
ConstraintLayout 属性详解 和Chain的使用
小伙伴们好久不见,我又回来啦。说实话这篇文章写的算是比较晚了,距离`ConstraintLayout`出现至今已经有一年了。且自AS2.3起创建新的`Activity`,默认的layout根布局就是`ConstraintLayout`。所以再不学习就真的晚了。原创 2017-05-24 18:04:09 · 89661 阅读 · 35 评论 -
《艺术探索》读书笔记(更新中)
前言最近没有写什么新博文, 一是太忙了,而且马上有新的挑战来到。 二是赶上过年期间。 三是没有什么太好的题材写。 四是自己在充电在半闭关学习。 计划下篇博文本月更新吧,题材从下列中出一个 Retrofit 、组件化、自定义View最近重读《艺术探索》,将其中一些对我有用的、我仍然不知道的、或者觉得容易混淆的知识点整理出来。 部分也有可能是我自己总结整理出来的经验,一并放在里面。第1章 A原创 2017-02-19 00:26:24 · 3512 阅读 · 1 评论 -
面试必备:SparseArray源码解析
想看我更多文章:【张旭童的博客】http://blog.csdn.net/zxt0601 想来gayhub和我gaygayup:【mcxtzhang的Github主页】https://github.com/mcxtzhang1 概述在前文中,我们已经聊过了HashMap和LinkedHashMap ArrayMap.所以如果没看过,可以先阅读 面试必备:HashMap源码解析(JDK8)原创 2017-10-25 16:08:28 · 4583 阅读 · 2 评论 -
面试必备:ArrayMap源码解析
概括的说,ArrayMap 实现了implements Map<K, V>接口,所以它也是一个关联数组、哈希表。存储以key->value 结构形式的数据。它也是线程不安全的,允许key为null,value为null。它相比HashMap,空间效率更高。它的内部实现是基于两个数组。 一个int[]数组,用于保存每个item的hashCode. 一个Object[]数组,保存key/value键值对。容量原创 2017-10-24 19:18:55 · 6103 阅读 · 5 评论 -
Janky frames 是如何计算出来的
想看我更多文章:【张旭童的博客】http://blog.csdn.net/zxt0601 想来gayhub和我gaygayup:【mcxtzhang的Github主页】https://github.com/mcxtzhang背景最近在做一些性能监控的工作,其中线下监控fps这一项,经过调研,最终采用dumpsys gfxinfo的方式。在6.0+的手机中执行如下命令,原创 2018-02-01 14:22:11 · 9220 阅读 · 4 评论 -
【Android】毫无耦合性,一个Item根布局搞定 item侧滑删除菜单,像IOS那样简单的使用侧滑删除。
【Android自定义ViewGroup】不一样的轮子,巧用类变量解决冲突,像IOS那样简单的使用侧滑删除,一个控件搞定Android item侧滑删除菜单。包含且不仅包含以下功能:1 侧滑拉出菜单。2 点击除了这个item的其他位置,菜单关闭。3 侧滑过程中,不许父控件上下滑动。4 多指同时滑动,屏蔽后触摸的几根手指。5 不会同时展开两个侧滑菜单。6 侧滑菜单时 拦截了长按事件。原创 2016-08-24 22:06:31 · 31101 阅读 · 86 评论 -
【Android】快速开发偷懒必备(二) 支持DataBinding啦~爽炸,一行实现花式列表
以后不管写多种type还是单type的列表,利用DataBinding和本库,都只需要一行代码!在前文[快速开发偷懒必备(一)]中,我们利用Adapter模式封装了一个库,能快速为任意ViewGroup添加子View。在库中V1.1.0版本,我也顺手加入了RecyclerView、ListView、GridView的通用Adapter功能原创 2016-12-14 07:47:00 · 7414 阅读 · 6 评论 -
【Android】仿斗鱼滑动拼图验证码控件
上周一总监让我研究一波滑动验证码,说项目可能会上。我想了一下好像在斗鱼、淘宝都见过,结果下了这两个app,发现怎么点也出不来滑动验证码。于是,我就去web端斗鱼看了一下,果然,每次登陆都会出现验证码。好吧,那我们这次的目标就定为 在 Android端app上,自定义View,仿一个web端滑动验证码吧原创 2016-11-24 08:44:19 · 25540 阅读 · 13 评论 -
【Android程序优化,避免内存泄露】- [实战一]:避免内存泄露的最后一道墙,使用leakcanary分析程序中的内存泄露。
前言:打算写一个系列吧,包括程序怎么优化,如何避免内存泄露,出现内存泄露该如何处理分析。这个系列应该会很长,首先会根据实际项目中遇到的东西总结整理上来,然后会收集网上相关好资源分享。内容大致分两种,一种是[实战N]开头,都是可以直接拿来用的,可能比较少甚至没有理论内容。另一种以初步拟定以[理论/原理N]开头,会解释介绍一些内存泄露,javaGC原理等内容。使大家知其然知其所以然。原创 2016-03-30 00:14:36 · 2012 阅读 · 3 评论 -
Android 利用ViewPager+GridView,仿美团首页导航栏分类布局界面
先看美团的效果:再看我们山寨的效果:最初我是使用VIewPager+RecyclerVIew实现的,发现在左右滑动的时候,有问题,经常滑动不了,应该是RecyclerVIew消费了Touch事件,所以弃用这个方法了(效果图是下面的效果,为了区别VIew页面,每个Page背景色不同),后来我尝试使用ViewPager+GridView实现的,看起来一切正常,就没有再解原创 2016-02-16 18:00:28 · 18153 阅读 · 20 评论 -
【Android源码阅读系列一】一个bug引发的血案:阅读Android源码 MeasureSpec类(API版本:23)
本文来源于一个bug,后来越走越远跑偏了,从LinearLayouy-》View 》-MeasureSpec-》位运算-》计算机的编码(原码反码补码)这已经到计算机组成原理了~~于是权当做一次笔记记录:在MeasureSpec为UNSPECIFIED 时,我返回的是父控件允许的最大的高度(Match_parent),应该是返回该View想要的高度(wrap_content,四个屏幕的高度)。一个bug引发的血案,求知欲驱使着我从Android源码一路看到java基础知识 计算机组成原理,顺着一路走下来,基原创 2016-08-27 14:07:56 · 3468 阅读 · 4 评论 -
【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView
一 背景概述:ScrollView里嵌套ListView,一直是Android开发者(反正至少是我们组)最讨厌的设计之一,完美打破ListView(RecyclerView)的复用机制,成功的将Native页面变成一个又臭又长的H5网页效果,但由于这种设计需求在我司项目实在太多见,无奈之下,我还是决定封装一下,毕竟,一个项目里同样的代码写第二遍的程序员都不是好的圣斗士。但是我真的是拒绝的 !拒绝的!原创 2016-09-10 21:24:26 · 26781 阅读 · 41 评论 -
Android 类似淘宝 电商 搜索功能,监听软键盘搜索事件,延迟自动搜索,以及时间排序的搜索历史记录的实现
最近跳槽去新公司,接受的第一个任务是在 一个电商模块的搜索功能以及搜索历史记录的实现。需求和淘宝等电商的功能大体差不多,最上面一个搜索框,下面显示搜索历史记录。在EditText里输入要搜索的关键字后,按软键盘的搜索按键/延迟xxxxms后自动搜索。然后将搜索的内容展示给用户/提示用户没有搜到相关信息。历史记录是按时间排序的,最新的在前面,输入以前搜索过的关键字,例如牛仔裤(本来是第二条)原创 2016-03-15 22:15:05 · 8241 阅读 · 15 评论 -
设计模式(二) 三种适配器模式 总结和使用场景
转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52703280本文出自:【张旭童的博客】一 概述定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。属于结构型模式主要分为三类:类适配器模式、对象的适配器模式、接口的适配器原创 2016-10-18 16:34:41 · 35406 阅读 · 15 评论 -
【Android】掌握自定义LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用API。
转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52948009 本文出自:【张旭童的博客】本系列文章相关代码传送门: 自定义LayoutManager实现的流式布局 欢迎star,pr,issue。本系列文章目录: 深入掌握自定义LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用API。 深原创 2016-10-27 23:29:14 · 30057 阅读 · 16 评论 -
【Android】掌握自定义LayoutManager(二) 实现流式布局
转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52956504 本文出自:【张旭童的博客】本系列文章相关代码传送门: 自定义LayoutManager实现的流式布局 欢迎star,pr,issue。本系列文章目录: 掌握自定义LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用API。 掌握自原创 2016-10-28 17:58:17 · 41394 阅读 · 33 评论 -
【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表一 概述本文是Android导航分组列表系列上,因时间和篇幅原因分上下,最终上下合璧,完整版效果如下: 上部残卷效果如下:两个ItemDecoration,一个实现悬停头部分组列表功能,一个实现分原创 2016-08-29 20:45:41 · 32852 阅读 · 43 评论 -
【Android】史上最简单,一步集成侧滑(删除)菜单,高仿QQ、IOS。
重要的话 开头说,not for the RecyclerView or ListView, for the Any ViewGroup.本控件**不依赖任何**父布局,不是针对 RecyclerView、ListView,而是**任意的ViewGroup**里的childView都可以使用侧滑(删除)菜单。原创 2016-11-14 11:13:34 · 33948 阅读 · 13 评论 -
【Android】快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup
开发中,经常会用到动态在ScrollView、LinearLayout里addView的事,尤其是ItemView一样时,每次都要写一大堆代码 inflater 动态addView,很烦。这个时候就开始期待,能不能有一种快速为任意ViewGroup添加子View的东西。那么需求就来了: * 快速简单使用 * 支持任意ViewGroup * 无耦合 * 无侵入性 * Item支持多种类型原创 2016-12-12 08:38:59 · 7859 阅读 · 9 评论 -
【Android】快速实现仿美团选择城市界面,微信通讯录界面
概述本文是这个系列的第三篇,不出意外也是终结篇。因为使用经过重构后的控件已经可以快速实现市面上带 索引导航、悬停分组的列表界面了。 在前两篇里,我们从0开始,一步一步实现了仿微信通讯录、饿了么选餐界面。 (第一篇戳我 第二篇戳我) 这篇文章作为终结篇,和前文相比,主要涉及以下内容: * 重构悬停分组,将TitleItemDecoration更名为SuspensionDecoration,数据原创 2016-11-29 10:33:43 · 11021 阅读 · 9 评论