<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhan]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ru_Zhan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ru_Zhan]]></copyright><item><title><![CDATA[Android APT 技术浅谈]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/78232851</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/78232851</guid><author>Ru_Zhan</author><pubDate>Sat, 14 Oct 2017 11:10:48 +0800</pubDate><description><![CDATA[安卓AOP三剑客: APT, AspectJ, JavassistAndroid APT
  APT(Annotation Processing Tool 的简称)，可以在代码编译期解析注解，并且生成新的 Java 文件，减少手动的代码输入。现在有很多主流库都用上了 APT，比如 Dagger2, ButterKnife, EventBus3 等
代表框架：
DataBinding
Dagger2]]></description><category></category></item><item><title><![CDATA[Recycler.Adapter自动化配置]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/71247298</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/71247298</guid><author>Ru_Zhan</author><pubDate>Sat, 06 May 2017 00:00:11 +0800</pubDate><description><![CDATA[AutoRecyclerAdapter
  我在写大量重复RecyclerView.Adapter的时候，发现我的大部分时间都花在写重复，机械式的if与else，不论是getItemViewType，onCreateViewHolder，onBindViewHolder还是setSpanSizeLookup的getSpanSize，都充斥着大量的if与else。
  
  写重复的代码一直困扰着我。]]></description><category></category></item><item><title><![CDATA[ButterKnife第三方库源码分析]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53107620</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53107620</guid><author>Ru_Zhan</author><pubDate>Wed, 09 Nov 2016 23:42:45 +0800</pubDate><description><![CDATA[ButterKnife原理其实也很简单我的Github博客详解ButterKnife是大名鼎鼎JakeWharton热门开源项目的其中一个，让开发者不再重复的进行findViewById的操作。配合android studio的插件，一键自动生成xml文件所有view的实例。ButterKnife为什么会那么神奇，自动帮助开发者省去了繁琐的操作，他的实现的原理到底是怎么样的呢？下面我们从代码使用上，]]></description><category></category></item><item><title><![CDATA[Handler，MessageQueue，Message，Looper源码分析]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53084032</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53084032</guid><author>Ru_Zhan</author><pubDate>Tue, 08 Nov 2016 16:45:12 +0800</pubDate><description><![CDATA[Handler机制源码分析我的github博客详解Handler 核心成员变量与方法：MessageQueue,Message 核心成员变量与方法：Looper 核心成员变量与方法：Handler的工作原理涉及：Handler，MessageQueue，Message，Looper，ThreadLocal  等多个类简单分析：1，Handler初始化都做些什么？2，Handler的常用几种方法有哪些]]></description><category></category></item><item><title><![CDATA[RatioLayout一个屏幕适配三方库源码分析]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53081191</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/53081191</guid><author>Ru_Zhan</author><pubDate>Tue, 08 Nov 2016 13:11:55 +0800</pubDate><description><![CDATA[RatioLayout一个屏幕适配三方库源码分析使用dp进行UI设置：可以看出，在不同分辨率或者密度的屏幕，相同dp值设置的效果是不同的。使用ratio进行UI设置（按比例设置）：可以看出，在不同分辨率或者密度的屏幕，ratio按比例设置的效果是比较出色的。简单分析RatioLayout：1，初始化一些参数，设置数据，为了在xml中设置属性到自定义布局中使用 
2，在系统测量之前手动测量一次，获取到]]></description><category></category></item><item><title><![CDATA[HorizontalNumberView与seekbar共享滑动的自定义view]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/52977005</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/52977005</guid><author>Ru_Zhan</author><pubDate>Mon, 31 Oct 2016 01:04:19 +0800</pubDate><description><![CDATA[这是一个简单的，能与seekbar共享滑动的自定义view我的博客：详解简单分析：
初始化一些参数，设置数据，准备在onDraw方法中连续绘制TextView
计算出TextView绘制的坐标点，根据左滑还是右滑设置TextView之间间隙，大小，颜色
将seekbar注入进来，根据对调监听设置当前位置，进行重绘，绘制最新的数组列表
实现难点：
计算出绘制数组宽度与高度
TextView绘制坐标与方]]></description><category></category></item><item><title><![CDATA[仿格瓦拉双层拖拽布局，格瓦拉电影详情界面]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51864892</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51864892</guid><author>Ru_Zhan</author><pubDate>Sat, 09 Jul 2016 04:14:35 +0800</pubDate><description><![CDATA[这是一个复杂的控件，双层布局，可滑动，可拖拽Demo下载：我的Github DoublePull格瓦拉实际效果图：简单分析：
根部局使用了RelativeLayout，有两个子布局：外层布局与内层布局。
外层布局。根布局为自定义ScrollView，有两子布局：HeaderFrameLayout与PullRelativeLayout
内层布局。根部局为RelativeLayout，有两子布局：Rec]]></description><category></category></item><item><title><![CDATA[Retrofit源码分析]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51835824</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51835824</guid><author>Ru_Zhan</author><pubDate>Wed, 06 Jul 2016 02:52:43 +0800</pubDate><description><![CDATA[通过一次网络请求，来分析Retrofit源码Retrofit第三方开源库，最近在很多地方都看到有人在使用。用了之后，感觉这是一个很简洁，代码维护成本较低的开源库。Retrofit一般会依赖OkHttp这个库，它访问网络依赖OkHttpClient，通常情况下都是：Retrofit + OkHttp一起使用的。Retrofit也支持RxJava作为适配器工厂，Retrofit + OkHttp + R]]></description><category></category></item><item><title><![CDATA[TransparentToolBar 一个简单随着滚动控件滚动，不断改变颜色透明度的ToolBar]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51816481</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51816481</guid><author>Ru_Zhan</author><pubDate>Sun, 03 Jul 2016 19:27:05 +0800</pubDate><description><![CDATA[一个简单随着滚动控件滚动，不断改变颜色透明度的ToolBarDemo下载：我的Github TransparentToolBarTransparentToolBar它是一个跟随滚动控件：例如ScrollView，RecyclerView这样的控件，跟随滚动不断改变自身背景色的透明度。既然要跟随变化，就必须获取到滚动控件的top值做为计算参数。所以，需要设置滚动控件的ScrollChangeListe]]></description><category></category></item><item><title><![CDATA[DirectionControlView 一个方向控制自定义View]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51815117</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51815117</guid><author>Ru_Zhan</author><pubDate>Sun, 03 Jul 2016 14:29:45 +0800</pubDate><description><![CDATA[这是一个可识别上滑，下滑，左滑，右滑，方向识别与控制的自定义ViewDemo下载：我的Github DirectionControlViewDirectionControlView它是一个控制面板之类的View，可以处理在这个View上面，左滑，右滑，上滑，下滑，单击，双击事件。这个自定义View设计起来非常简单，使用的核心就是：GestureDetector，手势识别器，我只是把它用到了这个Vie]]></description><category></category></item><item><title><![CDATA[RippleView水波纹，涟漪效果]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51812017</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51812017</guid><author>Ru_Zhan</author><pubDate>Sat, 02 Jul 2016 18:17:52 +0800</pubDate><description><![CDATA[模仿水波纹，涟漪效果，可用于设备查找之类的特效Demo下载：我的Github RippleView其实这是一个很简单的自定义View，只需要一个类，然后对外提供状态回调接口和设置属性的方法即可。下面要说设计思路了。1，自定义一个View。2，在onDraw方法里画圆，初始化画笔，半径多少，要画几个圆，实心圆还是空心圆，这些都要想好。3，通过ValueAnimator 动画每一贞的回调改变圆半径，调用]]></description><category></category></item><item><title><![CDATA[对RecyclerView Item做动画]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51794609</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51794609</guid><author>Ru_Zhan</author><pubDate>Fri, 01 Jul 2016 01:40:43 +0800</pubDate><description><![CDATA[对RecyclerView Item做动画对RecyclerView Item做动画，刚刚开始研究的时候一些坑，在这里把一些设计思路分享出去添加动态位移，静态位移，缩放等动画，保证了动画状态的平滑衔接效果图：   
我的Github,Demo下载RecyclerView，ListView这些具有Item复用性的View，想要对其Item做动画，需要注意以下几点： 
 1，如果要一点击，让所有Item]]></description><category></category></item><item><title><![CDATA[Scroller的使用，让View随心所欲的移动]]></title><link>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51723933</link><guid>https://blog.youkuaiyun.com/Ru_Zhan/article/details/51723933</guid><author>Ru_Zhan</author><pubDate>Mon, 20 Jun 2016 23:01:59 +0800</pubDate><description><![CDATA[Scroller的使用，让View随心所欲的移动吧效果图：   
Scroller能控制View自由的移动，相对于其他让View移动的api，例如ViewDragHelper， 
我个人倾向于使用Scroller，因为他使用起来简单，感觉更灵活一些。 
 值得注意的是，在一个View使用Scroller是不能让这个View移动的， 
需要在ViewGroup或者他的子类里使用Scroller，才能让]]></description><category></category></item></channel></rss>