<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yide55的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yide55</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yide55]]></copyright><item><title><![CDATA[todomvp 谷歌的MVP实例]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51299144</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51299144</guid><author>yide55</author><pubDate>Mon, 02 May 2016 23:49:52 +0800</pubDate><description><![CDATA[MVP模式讲了很久了，自己实际中也运用过，但总觉得运用的不够优雅跟简洁。这次终于等到官方出MVP的例子了，有了一个借鉴模仿的模板todomvp系列。这次先来讲一下todomvp的基础版。todomvp代码可以分为两块 
一块是公共类和基类： 
 
一块是具体页面的实现类，比如： 
先分析公共部分：BasePresenter和BaseView很简单，主要还是作为P和V的一个类型标记作用：public]]></description><category></category></item><item><title><![CDATA[华丽丽的GridLayout－使用案例]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51262329</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51262329</guid><author>yide55</author><pubDate>Wed, 27 Apr 2016 16:41:02 +0800</pubDate><description><![CDATA[最近在阅读一份开源代码时，发现有一个页面中并不是明显的网格样式，但layout里的根控件用的是GridLayout，才发现原来它是可以这样用的，原来不一定拘泥于页面布局是明显的网格形式，而是需要我们来把明显不是网格样式的布局来当成网格看待。–这里大家可能不一定立马理解，不急，先继续看看后面的内容。因为RelativeLayout和加了weight的Linearlayout都存的onMeasure两次]]></description><category></category></item><item><title><![CDATA[postInvalidate postInvalidateOnAnimation 区别]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51199942</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51199942</guid><author>yide55</author><pubDate>Wed, 20 Apr 2016 13:09:52 +0800</pubDate><description><![CDATA[1.先看postInvalidate方法执行过程    public void postInvalidate() {
        postInvalidateDelayed(0);
    }    public void postInvalidateDelayed(long delayMilliseconds) {
        // We try only with the AttachI]]></description><category></category></item><item><title><![CDATA[安卓开发小知识 -  3]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51169843</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51169843</guid><author>yide55</author><pubDate>Sat, 16 Apr 2016 20:14:26 +0800</pubDate><description><![CDATA[内容来源：Android Development Tidbits // No. 3 
这是第三次分享安卓开发中的一些小知识点。我们很高兴有这么多人知道了这个有趣的系列，并且对你们通过评论和邮件表达的支持表示感谢。最近我们开始利用开发的间歇时间在博客上分享我们知道的一些知识点。前两篇文章链接为1和2。这一周我们可能会分享一些比较老的知识点。好了，开始这次的内容。知识点一 
如果你使用ZXing 的QR]]></description><category></category></item><item><title><![CDATA[Google Play服务中的人脸检测]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51164000</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51164000</guid><author>yide55</author><pubDate>Fri, 15 Apr 2016 18:53:46 +0800</pubDate><description><![CDATA[资料来源：Face Detection in Google Play services 
从Google Play服务版本7.8开始，提供一套更快更优秀的人脸检测的接口。这套接口在各种角度及各表情的脸部识别技术方面更加优秀。Face Detection对于之前的FaceDetector接口来说是一次很大的技术更新。它被设计用于更好的从图片或视频中检测出人脸。Face Detection足够智能来去从]]></description><category></category></item><item><title><![CDATA[Google Play服务中的条码扫描识别]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/51163472</link><guid>https://blog.youkuaiyun.com/yide55/article/details/51163472</guid><author>yide55</author><pubDate>Fri, 15 Apr 2016 17:33:40 +0800</pubDate><description><![CDATA[资料来源：Reading QR Codes Using the Mobile Vision API 
最近的Google Play services SDK版本使得安卓开发者能创建识别二维码的app。 
这个文章，将说明怎么来使用它。必要环境： 
最新版本的android studio 
带相册的安卓设备1.安装Google Play Services SDK 
在项目的配件文件build.grad]]></description><category></category></item><item><title><![CDATA[图示aidl原理]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/50951376</link><guid>https://blog.youkuaiyun.com/yide55/article/details/50951376</guid><author>yide55</author><pubDate>Mon, 21 Mar 2016 23:43:42 +0800</pubDate><description><![CDATA[aidl是android ipc的一种实现，理解起来其实很简单。 
画了一个简单的图来说明一下整个过程，不需要再长篇大论了。 
省略了图中的Binder驱动层，理解其中的关键点，即可当成本地方法的调用与返回来看待。]]></description><category></category></item><item><title><![CDATA[gradle多工程打包冲突问题]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/50905598</link><guid>https://blog.youkuaiyun.com/yide55/article/details/50905598</guid><author>yide55</author><pubDate>Wed, 16 Mar 2016 15:37:31 +0800</pubDate><description><![CDATA[将一个项目由eclipse转android studio时，由于该项目引用lib多达6、7个，一上手就碰到了引用包冲突的问题，问题描述如下UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/acce
ssibilityservice/Ac]]></description><category></category></item><item><title><![CDATA[实用ListView加载提示工具类]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/50848916</link><guid>https://blog.youkuaiyun.com/yide55/article/details/50848916</guid><author>yide55</author><pubDate>Thu, 10 Mar 2016 18:15:57 +0800</pubDate><description><![CDATA[优秀的用户体验中，ListView应该包括这几个状态： 
正在加载数据 
加载完成但无数据 
加载失败平常使用诸多不便大家应该都有体会，为了开发方便，所以我写了这样一个工具类，不需要修改xml文件，仅需类似下面几行代码即可将上面三种状态呈现出来（在listview所占空间的中间位置显示）：//加载状态时
LswLoader loader = new LswLoader(mContentLsw);]]></description><category></category></item><item><title><![CDATA[Android Hanlder综合]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/50775950</link><guid>https://blog.youkuaiyun.com/yide55/article/details/50775950</guid><author>yide55</author><pubDate>Tue, 01 Mar 2016 21:49:15 +0800</pubDate><description><![CDATA[首先强调，handler不是线程，很多初学者甚至有点经验的都把handler当成线程来看待，以为用上handler就开启线程操作了，这是不对的。还有一种用法是，用上handler就以为一定是在UI线程中操作了，也不是完全对。 
那么Handler是什么？ 
Handler是一个事件操作的处理对象，在命令模式中是充当命令处理者的角色。它是一个任务的执行者，依附在线程中进行具体的任务处理。它是一个普通的]]></description><category></category></item><item><title><![CDATA[GreenDao自带异步操作类简析]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/50601504</link><guid>https://blog.youkuaiyun.com/yide55/article/details/50601504</guid><author>yide55</author><pubDate>Thu, 28 Jan 2016 16:17:47 +0800</pubDate><description><![CDATA[AsyncSession： 
GreenDao提供一个异步操作的统一接口类AsyncSession，它提供了你所需要的所有异步操作方法。 
你可以通过调用DaoSession#startAsyncSession()来获得一个AsyncSession实例。  public AsyncSession startAsyncSession() {
        return new AsyncSessio]]></description><category></category></item><item><title><![CDATA[Android EventBus使用与思路总结]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/49332905</link><guid>https://blog.youkuaiyun.com/yide55/article/details/49332905</guid><author>yide55</author><pubDate>Thu, 22 Oct 2015 14:12:56 +0800</pubDate><description><![CDATA[首先说说为什么要用它： 
平常开发中免不了要进行各种aci或frgm之间的通信，其实aci之间相对还好，必竟可以通过intent方式，也不会觉得耦合性太强，但frgm之间就麻烦了，除了设置各种接口listener，将frgm做为参数传给另一个frgm外，确实没有其它能满足多种需求的方法。但这种监听器的方式，明显的感觉是这两个frgm是有关系的，代码跟逻辑上很容易混乱，无法成为优质的代码。 
 我趋向]]></description><category></category></item><item><title><![CDATA[Android代码规范]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/48969767</link><guid>https://blog.youkuaiyun.com/yide55/article/details/48969767</guid><author>yide55</author><pubDate>Thu, 08 Oct 2015 10:48:09 +0800</pubDate><description><![CDATA[遵守字段命名惯例· 非public的、非static的字段名称以m开头。· static字段名称以s开头。· 其它字段以小写字母开头。· public static final字段（常量）全部字母大写并用下划线分隔。· 全局变量尽量为private，如果需暴露该变量，建议使用get/set方法，不要直接设成public,另activity中尽量不要随意暴露内部变量，好的方式是用监听器的方式（或广播）]]></description><category></category></item><item><title><![CDATA[App启动闪屏黑屏问题]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47982629</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47982629</guid><author>yide55</author><pubDate>Tue, 25 Aug 2015 20:19:50 +0800</pubDate><description><![CDATA[App的启动方式，有两种较好的方式： 
一种是设置Application的android:windowBackground为启动图 
另一种是设置android:windowIsTranslucent=true先说下第一种，这种方法在启动App时基本不会有一点延迟卡顿，点击启动图片即能显示App背景。但这种方式会造成每一个activity的背景都将是启动图，也就是你在启动aci的时候首先看到的是启动]]></description><category></category></item><item><title><![CDATA[Android左边有固定文字的EditText]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47909563</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47909563</guid><author>yide55</author><pubDate>Sun, 23 Aug 2015 20:10:20 +0800</pubDate><description><![CDATA[这个很简单，但如果做项目时临时写出来，也得花几分钟去调试一下实际的效果。相信大家临时因这个小问题打断也不好。所以放出来，供大家即用。
文字输入从光标处开始： 
package com.idroid.widget;import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSe]]></description><category></category></item><item><title><![CDATA[替代TabActivity，底部菜单主框架搭建]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47704001</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47704001</guid><author>yide55</author><pubDate>Sun, 16 Aug 2015 17:38:26 +0800</pubDate><description><![CDATA[看到还有些人在使用TabActvity，这个已经被Google废弃了的类，为了大家方便，写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装，标准的底部菜单自定义控件已经写好，如果有另外的需求扩展底部菜单控件即可（继承BindPagerAdapterView）。先上个效果图： 
使用方式见代码：package com.example.tabtest;i]]></description><category></category></item><item><title><![CDATA[Android登录拦截器实现方式（一）]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47443435</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47443435</guid><author>yide55</author><pubDate>Wed, 12 Aug 2015 13:50:57 +0800</pubDate><description><![CDATA[Android登录拦截器实现方式（一）

2015-08-04 22:12:01
标签：Android登录 拦截器 Interceptor


  对于App端来说，如果能保证用户在登录后能自动延续登录前的操作，将是非常不错的用户体验。所以专门花了点时间，想了两种方式来实现该种需求。

   这篇文章先讲第一种方式，这种方式实现的思路大致是这样：
   在执行需要登陆状态的操作时]]></description><category></category></item><item><title><![CDATA[Android登录拦截器实现方式（二）]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47443403</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47443403</guid><author>yide55</author><pubDate>Wed, 12 Aug 2015 13:49:09 +0800</pubDate><description><![CDATA[第二种方式主要思路是，启动一条专门用于等待登陆结果的线程，在登陆的过程中处于挂起状态，在登陆有结果后由其它线程来唤醒该条等待线程，继续之前的工作。    抽空写了个简单的类来实现上面的方式LogonRequireTask，后期再进行扩展及修复。    使用时类似于以下代码，直接使用execute方法执行你要做的事情，可以是跳转至个人信息页，可以是做收藏功能，这样的处理方式就很简单明了了。但是别忘记]]></description><category></category></item><item><title><![CDATA[Android自定义流式布局-FlowLayout]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47443275</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47443275</guid><author>yide55</author><pubDate>Wed, 12 Aug 2015 13:42:43 +0800</pubDate><description><![CDATA[很多App在搜索页时都有对热门标签的一个排列，而Android官方没有对应的布局控件，所以自己写了一个流式布局(也称标签布局)--FlowLayout。
    为了大家使用的方便，没有添加自定义属性，所以需要在代码中设置下列两个属性值：]]></description><category></category></item><item><title><![CDATA[LruDiskCache要点--不可不用的磁盘缓存工具类]]></title><link>https://blog.youkuaiyun.com/yide55/article/details/47443217</link><guid>https://blog.youkuaiyun.com/yide55/article/details/47443217</guid><author>yide55</author><pubDate>Wed, 12 Aug 2015 13:38:39 +0800</pubDate><description><![CDATA[LruDiskCache是使用Lru算法的磁盘缓存类，它的功能是将LruCache中缓存位置由内存改为磁盘，一般两者结合使用，用于对处理小文件，图片的缓存。


下面记录下阅读过程中几个比较重要的点：


Get
获取缓存数据时，LruDiskCache会使用LinkedHashmap的算法，也就是最常使用的放在尾部，最少使用的首先被遍历到. 
当你需要获取缓存数据时，首先会得到是]]></description><category></category></item></channel></rss>