<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[乐于分享，乐于讨论，欢迎大家积极讨论]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dmk877</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dmk877]]></copyright><item><title><![CDATA[Andorid WMS完全解析(一)-基础知识]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/154567411</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/154567411</guid><author>dmk877</author><pubDate>Sat, 08 Nov 2025 12:13:16 +0800</pubDate><description><![CDATA[在详细学习WMS之前，先来看几个概念。]]></description><category></category></item><item><title><![CDATA[SOLID-开闭原则]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/144813999</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/144813999</guid><author>dmk877</author><pubDate>Tue, 31 Dec 2024 01:03:04 +0800</pubDate><description><![CDATA[单一职责原则：https://blog.youkuaiyun.com/dmk877/article/details/143447010
在前面我们学习了单一职责原则，今天来一起学习一下SOLID原则中的开闭原则(Open-Closed Principle, OCP)
通过本篇博客你将学到到以下内容
①什么是开闭原则
②如何实现开闭原则
③两个开闭原则的案例首先我们来看下开闭原则的定义:Software entities like classes,modules and functions should be open ]]></description><category></category></item><item><title><![CDATA[setContentView调用流程(二) -将布局添加到mContentParent]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/143654161</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/143654161</guid><author>dmk877</author><pubDate>Sun, 10 Nov 2024 01:57:19 +0800</pubDate><description><![CDATA[到这里关于setContentView的执行流程以及与其相关的知识点就介绍完了，整体的流程不算复杂，我们在阅读源码的时候切记不要每一行代码都搞明白，只了解主流程即可，否则代码会看的头晕目眩，容易放弃，另外关于对源码的学习一定要自己去阅读源码，做笔记这样才能了解更加透彻且复习也快。如果大家有疑问或者发现错误，欢迎在下方留言，我会在第一时间回答！！]]></description><category></category></item><item><title><![CDATA[Android setContentView执行流程(一)-生成DecorView]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/143482733</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/143482733</guid><author>dmk877</author><pubDate>Fri, 08 Nov 2024 23:32:10 +0800</pubDate><description><![CDATA[(1) 我们activity中自定义的xml文件的根布局是DecorView，DecorView是继承自FrameLayout的(2) 在DecorView的子View中有个id为R.id.content的布局，将其转化为mContentParent(3) 最后使用LayoutInflater.from(mContext).inflate(resId, contentParent)将我们定义的xml文件resId添加到mContentParent中篇幅原因第(3)点我们下篇博客讲解。]]></description><category></category></item><item><title><![CDATA[SOLID原则-单一职责原则]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/143447010</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/143447010</guid><author>dmk877</author><pubDate>Sat, 02 Nov 2024 12:53:34 +0800</pubDate><description><![CDATA[关于单一职责原则的定义，也是经过了一些演变，在《架构整洁之道》这本书提到，在历史上，我们曾经这样描述SRP这一原则​定义一：一个模块应该有且仅有一个被修改的原因。在现实生活中，软件系统为了满足用户和所有者的要求，必然要做出这样那样的修改。而该系统的用户或者所有者就是该设计原则中所指的"被修改的原因"。如果一个或多个用户希望对系统进行的变更是相似的，就可以归为一类——一个或多个有共同需求的人。在这里，我们将其称为行为者(actor)。所以对SRP的最终描述就变成了:​。]]></description><category></category></item><item><title><![CDATA[Android Handler消息机制(五)-HandlerThread完全解析]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/143359436</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/143359436</guid><author>dmk877</author><pubDate>Wed, 30 Oct 2024 11:59:47 +0800</pubDate><description><![CDATA[如上所示第16行在主线程声明一个Handler的时候传递了threadA的Looper，这样通过workHandler发送的消息就能在threadA中收到，但是这样有一个问题就是上述threadA.getLooper()这个方法获取不到，因为在实例化handler的时候的Runnable是一个匿名内部类，而外部类不能直接访问匿名内部类的属性和方法，那么怎么办呢？首先定义一个ThreadA它继承自Thread在构造方法中接收一个Object对象用来加锁，并重写run方法，在run方法中调用wait。]]></description><category></category></item><item><title><![CDATA[Android Handler消息机制完全解析-IdleHandler和epoll机制(四)]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/143278166</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/143278166</guid><author>dmk877</author><pubDate>Mon, 28 Oct 2024 18:23:05 +0800</pubDate><description><![CDATA[经过前面的学习相信大家对Handler已经有了比较全面且深入的认识，我在写第一篇的时候就说过Handler相关的知识远比我们想象的要多，到这里大家是不是略有体会呢？今天和大家一起学习的是IdleHandler和epoll机制，这两个可能平时用到的不多，尤其是epoll，但是它的原理以及思想我们要清楚，有些面试可能会问到，有一句话叫"有剑不用和没有剑是两码事"。废话不多说我们开始学习今天的内容，通过本篇博客你将学习到以下内容1.IdleHandler是什么。]]></description><category></category></item><item><title><![CDATA[Android Handler消息机制完全解析-同步屏障(三)]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/142749135</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/142749135</guid><author>dmk877</author><pubDate>Tue, 08 Oct 2024 00:36:12 +0800</pubDate><description><![CDATA[想搞明白这个问题，我们需要对Android的UI刷新有点了解，以电影为例，动画至少要达到24FPS，才能保证动画的流畅性，低于这个值肉眼会感觉到卡顿，在手机上这个值被调整到60FPS，60FPS意思就是每秒播放60帧画面，那么每帧画面的时间间隔为1000 /60=16ms，这也是为什么有个16ms的指标，也就是说一般android中UI刷新的间隔是16ms。UI的刷新也是通过Handler发送消息进行的，并且UI刷新的消息是优先级最高的，否则当消息比较多时手机上的画面就会卡顿，这一点大家应该很容易想明白。]]></description><category></category></item><item><title><![CDATA[Android Handler消息机制完全解析(二)]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/141690289</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/141690289</guid><author>dmk877</author><pubDate>Fri, 30 Aug 2024 00:40:46 +0800</pubDate><description><![CDATA[在阅读本篇博客之前建议先阅读此篇在看Looper源码之前必须要理解ThreadLocal，ThreadLocal在Handler消息机制中起到了至关重要的作用，面试中也经常会被问到，所以我们先来了解下ThreadLocal，通过本篇博客你将学到①ThreadLocal的作用以及原理②Looper方法的源码③Handler的dispatchMessage消息分发流程④几个常见的面试题。]]></description><category></category></item><item><title><![CDATA[Android 消息机制Handler完全解析(一)]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/141528495</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/141528495</guid><author>dmk877</author><pubDate>Sun, 25 Aug 2024 23:02:22 +0800</pubDate><description><![CDATA[Handler是Android消息机制的上层接口，这使得在开发过程中只需要和Handler交互即可。Handler的使用过程很简单，通过它可以轻松地将一个任务切换到Handler所在的线程去执行。很多人认为Handler的作用是更新UI，这的确没错，但是更新UI仅仅是Handler的一个特殊使用场景。]]></description><category></category></item><item><title><![CDATA[Android自定义控件之自定义属性]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/108007322</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/108007322</guid><author>dmk877</author><pubDate>Fri, 14 Aug 2020 17:22:45 +0800</pubDate><description><![CDATA[Android自定义控件之自定义属性
一、自定义控件步骤
1.自定义属性
2.重写onMeasure
3.重写onLayout
4.重写onDraw
今天这篇博客主要介绍第一步自定义属性，通过一个案例来进行讲解
案例的效果如下

即我们通过自定义View画一个圆，其中可以控制圆的半径大小和颜色，具体怎么做的呢？
二、自定义属性步骤
1.首先在res/values/目录下创建attr文件，如下所示
&lt;declare-styleable name="CircleView"&gt;

      &lt;a]]></description><category></category></item><item><title><![CDATA[Android开发之从零开始学RxJava 2.x(一)认识Rxjava]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/80772129</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/80772129</guid><author>dmk877</author><pubDate>Sat, 07 Jul 2018 15:24:09 +0800</pubDate><description><![CDATA[用RxJava已经有一段时间了，一直想写相关的文章但是没来得及如今刚好有时间想和大家一起详细的讨论RxJava的用法，相信通过本篇博客你将对RxJava有个比较系统的理解。

欢迎使用Markdown编辑器写博客

本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：


Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaT...]]></description><category></category></item><item><title><![CDATA[Android属性动画详解(二)，插值器和估值器]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/76231865</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/76231865</guid><author>dmk877</author><pubDate>Thu, 21 Jun 2018 20:05:08 +0800</pubDate><description><![CDATA[在上篇博客中主要和大家讨论了属性动画的用法，相信通过上篇博客大家对属性动画的用法已经不陌生了，那么今天就来大家一起讨论下属性动画的执行流程。

谈到属性动画的执行流程，其实离不开插值器（Interpolator）和估值器(TypeEvaluator)的协同工作，先来看看这两个类的继承关系图分别如下：

欢迎使用Markdown编辑器写博客

本Markdown编辑器使用StackEdit修改而来，]]></description><category></category></item><item><title><![CDATA[Android属性动画详解(一)，属性动画基本用法]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/52011155</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/52011155</guid><author>dmk877</author><pubDate>Tue, 02 Aug 2016 11:24:46 +0800</pubDate><description><![CDATA[相关文章 
Android开发之Frame动画(帧动画) 
Android开发之Tween(补间动画)完全解析(上)——xml文件配置的实现 
Android开发之Tween(补间动画)完全解析(下)——代码实现Hello，大家好，今天又来装逼了，装逼也上瘾啊，最近公司不是特别忙，我想这也就是我出来装逼的最好时机吧!额，，哈哈，进入正题。如有疑问欢迎留言，如有谬误欢迎批评指正。在Tween动画的讨论]]></description><category></category></item><item><title><![CDATA[Android开发之Tween(补间动画)完全解析(下)——代码实现]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/51980734</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/51980734</guid><author>dmk877</author><pubDate>Sun, 24 Jul 2016 20:30:25 +0800</pubDate><description><![CDATA[在上一篇文章中，我们详细讨论了Tween动画的xml的实现以及interpolator的使用，相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解，当然这篇文章也是承接上篇文章，这篇文章将从代码的角度实现上篇文章的效果。]]></description><category></category></item><item><title><![CDATA[Android开发之Tween(补间动画)完全解析(上)——xml文件配置的实现]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/51912104</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/51912104</guid><author>dmk877</author><pubDate>Fri, 22 Jul 2016 23:27:52 +0800</pubDate><description><![CDATA[相信不管做了多长时间开发的人都用用过Tween动画，从刚开始工作到现在我也是用了N次Tween动画，但是每一次使用总感觉掌握的不够全面，所以花了点时间详细的总结了下Tween动画，其实在android中熟练掌握动画，能够帮助我们实现一些非常酷炫的效果从而使我们的app在交互，或者用户体验上有一个更好的效果，鉴于此详细的学习动画还是很有必要的，相信通过本篇的学习大家会对Tween有个详细的了解。]]></description><category></category></item><item><title><![CDATA[Android开发之实现两个手机之间的通讯]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/51685656</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/51685656</guid><author>dmk877</author><pubDate>Sun, 17 Jul 2016 21:35:55 +0800</pubDate><description><![CDATA[在android开发中，我们经常会使用第三方的一些sdk或者一些开源类库，但是我总感觉自己只是停留在了会用的阶段，我公司是做即时通讯的，虽然功能能够完成，但是总感觉对其实现方式的理解还是不够。所以花了点时间，模拟实现了两个android机的通讯，相信大家认真看完会有收获。]]></description><category></category></item><item><title><![CDATA[Android开发之getX，getRawX,getWidth,getTranslationX等的区别]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/51550031</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/51550031</guid><author>dmk877</author><pubDate>Tue, 31 May 2016 23:37:39 +0800</pubDate><description><![CDATA[努力，fighting!!]]></description><category></category></item><item><title><![CDATA[Android开发之网络通讯详解]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/50893635</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/50893635</guid><author>dmk877</author><pubDate>Wed, 16 Mar 2016 21:36:26 +0800</pubDate><description><![CDATA[真正的才智是刚毅的志向]]></description><category></category></item><item><title><![CDATA[Android开发之RecyclerView的使用全解]]></title><link>https://blog.youkuaiyun.com/dmk877/article/details/50816933</link><guid>https://blog.youkuaiyun.com/dmk877/article/details/50816933</guid><author>dmk877</author><pubDate>Mon, 07 Mar 2016 14:21:22 +0800</pubDate><description><![CDATA[人最先衰老的不是容貌，而是那份不顾一切的闯劲。]]></description><category></category></item></channel></rss>