<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dingyi4799的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dingyi4799</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dingyi4799]]></copyright><item><title><![CDATA[RecyclerView（三）——ItemAnimator]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446856</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446856</guid><author>dingyi4799</author><pubDate>Sun, 17 Jul 2016 22:09:00 +0800</pubDate><description><![CDATA[RecyclerView为我们提供了相较于ListView算得上华丽的动画特效。RecyclerView的特效，非常符合Material Design的风格，但有时候，我们也希望能够自定义ItemAnimator。
我们自定义一个类，并承继SimpleItemAnimator。可以得到共9个需要实现的方法。


    @Override
    public boolean...]]></description><category></category></item><item><title><![CDATA[RecyclerView（二）—— ItemDecoration]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446858</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446858</guid><author>dingyi4799</author><pubDate>Sat, 25 Jun 2016 22:10:00 +0800</pubDate><description><![CDATA[Recycler没有直接提供设置item间距的功能，而是提供了一个更强大的基类ItemDecoration。类如其名，这个类是Item的装饰。它既可以作为Item的间距，也可以在item之间绘制分隔线，甚至可以对每个item的边缘都进行不同的绘制。
ItemDecoration本身是一个虚类，我们在使用时，只能继承它。
　　先看一个简单版本，这个版本的ItemDecoration只提...]]></description><category></category></item><item><title><![CDATA[RecyclerView（一）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446853</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446853</guid><author>dingyi4799</author><pubDate>Sat, 25 Jun 2016 16:40:00 +0800</pubDate><description><![CDATA[　　Android系统在5.0版本推出了新控件——RecyclerView。RecyclerView几乎要将我们过去使用的ListView取代掉。因为我们不再需要自己管理一个带有static关键字的ViewHolder，不再需要控制Item的回收，同时，它也为我们提供了Item的添加和减除的动画接口。最后，最重要的是，它为ListView这样的，多项重复布局，提供了更好的解耦。将List...]]></description><category></category></item><item><title><![CDATA[Volley——阅读梳理]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446854</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446854</guid><author>dingyi4799</author><pubDate>Wed, 01 Jun 2016 23:41:00 +0800</pubDate><description><![CDATA[用一个月的下班之后玩耍时间的空余，阅读了Volley的源码，前面也记录了阅读过程，这篇旨在梳理一下Volley的工作流程。
通常，我们使用Volley，流程是很简单的。创建一个Request，再新建一个RequestQueue，最后把Request加入到RequestQueue中，接着我们就可以等待请求的Response了，如果是StringRequest这样的请求，我们可以直接得到S...]]></description><category></category></item><item><title><![CDATA[Volley——（五）ExecutorDelivery]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446847</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446847</guid><author>dingyi4799</author><pubDate>Mon, 30 May 2016 22:40:00 +0800</pubDate><description><![CDATA[　　在的StringRequest中，我们这样一个方法，还没有追踪过。

    @Override
    protected void deliverResponse(String response) {
        mListener.onResponse(response);
    }


　　这个方法，会在我们请求结束后调用，但它是如何工作的，我们还没有...]]></description><category></category></item><item><title><![CDATA[Volley——网络请求（四）Request]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446851</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446851</guid><author>dingyi4799</author><pubDate>Sun, 22 May 2016 14:00:00 +0800</pubDate><description><![CDATA[　　前面分析了Volley初始化的基本流程，下面我们来看一看Volley发送请求的过程。　　

        StringRequest translateRequset = new StringRequest(Dict_Url + word.toLowerCase(), mResponListener, mErrorListener);
        mQueue.add(t...]]></description><category></category></item><item><title><![CDATA[OpenGL学习（一）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446844</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446844</guid><author>dingyi4799</author><pubDate>Thu, 19 May 2016 00:25:00 +0800</pubDate><description><![CDATA[　　OpenGL（全写Open Graphics Library）是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。在游戏和特效领域，使用非常广泛。在移动平台上Android支持了OpenGL ES。今天，我开始学习OpenGL ES 并在此记录学习的过程。
　　Android提供了GLSurfaceView，是一个支持OpenGL ES的控件，封装了OpenGL的复...]]></description><category></category></item><item><title><![CDATA[Volley——网络请求（三）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446848</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446848</guid><author>dingyi4799</author><pubDate>Mon, 16 May 2016 00:42:00 +0800</pubDate><description><![CDATA[上一节，介绍了HurlStack的实现，根据我们外层的代码:

/**
     * Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it.
     *
     * @param context A {@link Context} to use f...]]></description><category></category></item><item><title><![CDATA[Volley——网络请求httpstack（二）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446849</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446849</guid><author>dingyi4799</author><pubDate>Tue, 10 May 2016 00:30:00 +0800</pubDate><description><![CDATA[　　在之前的一篇博文中，我简略记录了，Volley的请求队列和线程管理的实现。这一次来记录一下HttpStack的工作过程
　　

    /**
     * Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it.
     *
     * @p...]]></description><category></category></item><item><title><![CDATA[Volley——网络请求]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446728</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446728</guid><author>dingyi4799</author><pubDate>Mon, 02 May 2016 20:59:00 +0800</pubDate><description><![CDATA[　　Volley作为当年Google在2013年的Google I/O上的重点，是一个相当给力的框架。它从设计模式上来说，非常具有扩展性，也比较轻巧。关于Volley的使用，网上介绍的很多了，不再赘述。现在，我将记录我阅读Volley源码的过程，来学习Volley的设计思想和其中的一些小技巧。
　　值的一提的是，新版的gradle已经支持：　　

compile 'com.andr...]]></description><category></category></item><item><title><![CDATA[来自Google的响应式——Agera]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446845</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446845</guid><author>dingyi4799</author><pubDate>Tue, 26 Apr 2016 23:25:00 +0800</pubDate><description><![CDATA[　　响应式编程越来越符合现在的数据为核心的开发思路。所以，在去年，响应式也越来越火，从RxJava到React(支持了响应式)。如今，为了满足更多开发者的需求，Google也推出了自己的响应式框架——Agera。
　　我之前从来没有进行过相关的开发，Agera算是第一次接触响应式开发，虽说它是一种新的开发思路。但我更习惯于，从它解决了什么问题，开始说起。
　　其实在Android开发...]]></description><category></category></item><item><title><![CDATA[EventBus源码阅读（三）—— 订阅]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446840</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446840</guid><author>dingyi4799</author><pubDate>Thu, 21 Apr 2016 01:32:00 +0800</pubDate><description><![CDATA[　　经过订阅之后的类，才会接受到EventBus，post出来的消息。所以今天我们来看一下订阅的流程。

EventBus.getDefault().register(this);


    /**
     * Registers the given subscriber to receive events. Subscribers must call {@link #u...]]></description><category></category></item><item><title><![CDATA[EventBus源码阅读（二）——Poster]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446842</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446842</guid><author>dingyi4799</author><pubDate>Tue, 19 Apr 2016 23:12:00 +0800</pubDate><description><![CDATA[　　上一节在阅读了EventBus的消息发送后，停在了postToSubscription方法上：

    private void postToSubscription(Subscription subscription, Object event, boolean isMainThread) {
        switch (subscription.subscriberM...]]></description><category></category></item><item><title><![CDATA[EventBus源码阅读（一）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446837</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446837</guid><author>dingyi4799</author><pubDate>Sun, 17 Apr 2016 15:22:00 +0800</pubDate><description><![CDATA[　　EventBus虽然有诸多缺点，但是作为一个经典的事件总线框架，其代码还是有一些学习价值，从他的代码中可以获得一些启发，运用于开发。
　　EventBus有两个入口，一个是订阅，一个是发送事件。今天从发送事件开始阅读。

        EventBus.getDefault().post("11");


　　进入post方法

    /** Posts the...]]></description><category></category></item><item><title><![CDATA[EventBus使用说明]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446835</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446835</guid><author>dingyi4799</author><pubDate>Sat, 16 Apr 2016 00:35:00 +0800</pubDate><description><![CDATA[EventBus使用说明
EventBus因为其使用方便简单，受到了很多Android开发的喜爱。我将从这篇博客开始，学习EventBus。在学习EventBus的原理之前，我先记录一下EventBus的使用方法。
EventBus类似Android中的广播，是标准的观察者模式。因此，我们在使用EventBus时，只需要关注三件事。制作一个消息，注册一个监听者，发送一个消息。
1....]]></description><category></category></item><item><title><![CDATA[简易的拖动——ViewDragHelper]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446833</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446833</guid><author>dingyi4799</author><pubDate>Sun, 10 Apr 2016 23:15:00 +0800</pubDate><description><![CDATA[　　在Android中，要开发一个控件拖动的模块，代码是比较繁琐的。好在Android在support.v4中为我们提供了一个强大的拖动类——ViewDragHelper。
　　我们只需要为它提供一个ViewGroup，这个ViewGroup中的所有childView就可以随意拖动了。同时，它为我们提供了大量的监听方法，可以方便我们进行各种拖动中，拖动后的处理。
　　通常，我们会自定...]]></description><category></category></item><item><title><![CDATA[进程间的对话——aidl（三）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446832</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446832</guid><author>dingyi4799</author><pubDate>Tue, 29 Mar 2016 23:57:00 +0800</pubDate><description><![CDATA[　　之前记录了一个客户端如何跨进程地与一个服务端通信。如果只有一个客户端需要它，那么跨进程的意义也显得不那么大了。所以，我在此再建立了一个客端共同使用这个服务端。
　　客户端的代码与之前的代码几乎一模一样。在此不贴代码了。唯一不同的是，文件结构不同。由于服务端写在之前的工程中，我们需要一套共同的aidl接口，和Book.java。不仅代码相同，包名也要完全相同。所以，建议直接从服务端的...]]></description><category></category></item><item><title><![CDATA[进程间的对话——aidl（二）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446724</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446724</guid><author>dingyi4799</author><pubDate>Mon, 28 Mar 2016 23:36:00 +0800</pubDate><description><![CDATA[　　上一节http://www.cnblogs.com/fishbone-lsy/p/5327500.html 主要记录了一个跨进程的图片管理后台，设计了getBookList和addBook两个方法。但不管哪个方法，其实都是客户端对服务端发消息，然后服务端返回消息。没有服务端主动向客户端发消息的情况。所以，在这一节补充一下这种情况。增加一个新书通知的功能。

所谓服务端给客户...]]></description><category></category></item><item><title><![CDATA[进程间的对话——aidl（一）]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446730</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446730</guid><author>dingyi4799</author><pubDate>Mon, 28 Mar 2016 00:08:00 +0800</pubDate><description><![CDATA[　　众所周知，在Android系统中，系统允许单个app使用的内存是有限的，这个限制因手机而异。但有时候，我们需要一个计算量较大的后台任务，不希望它占用前台太多的内存。此时，我们可以用Service。通常的Service是在本app的内存中的，接下来我们就记录一种方法，为Service新开一个进程。由于是新开的进程，所以系统会为它分配专门的内存空间，缓解了app前台使用内存的压力。
...]]></description><category></category></item><item><title><![CDATA[View 多点触控]]></title><link>https://blog.youkuaiyun.com/dingyi4799/article/details/101446722</link><guid>https://blog.youkuaiyun.com/dingyi4799/article/details/101446722</guid><author>dingyi4799</author><pubDate>Tue, 22 Mar 2016 20:03:00 +0800</pubDate><description><![CDATA[　　电容屏战胜电阻屏的一大胜点就是多点触控。随便智能手机的发展，多点触控在各种模块和控件中运用很多。如地图app，或是大图浏览时，两个指头可以控制图片的大小。这方面，相关的第三方控件很多，今天简略记录一下它们的实现原理。
　　单点触控的方法，相信都已经很熟悉了。　　

view.setOnTouchListener(touchListener);    
View.OnTouch...]]></description><category></category></item></channel></rss>