<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[listen2code的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/listen2code</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; listen2code]]></copyright><item><title><![CDATA[性能优化（一）堆内存分析]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/69938911</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/69938911</guid><author>listen2code</author><pubDate>Sun, 09 Apr 2017 23:02:42 +0800</pubDate><description><![CDATA[前言
  通过Android Studio的Memory Monitor工具，对各种数据类型，如：boolean，int，float，long，SparseArray，HashMap等在内存的占用情况进行分析；对一些特定场景下的代码编写，如：String拼接，OnClickListener等所消耗的内存情况进行分析；分析方式很简单，只是为了确切的验证以往的诸多代码经验，并更好的实践。
Memory]]></description><category></category></item><item><title><![CDATA[6.0运行时权限的总结与实践]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/57111981</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/57111981</guid><author>listen2code</author><pubDate>Sat, 25 Feb 2017 20:13:04 +0800</pubDate><description><![CDATA[为什么需要6.0运行时权限
更友好  6.0以前的安装时权限，会在应用安装时列出所有需要的权限，当列出一些危险权限时，用户不知每个权限的具体用途，可能因为这些权限警告而放弃安装应用。对于一些非装不可的应用，用户则不得不被迫接受所有权限，很容易安装了一些流氓APP，体验不佳。 
  6.0以后的运行时权限，可以在调用相关功能之前判断权限授权状态，并自定义提示弹框告知用户权限用途，使用户清楚了解之后，再]]></description><category></category></item><item><title><![CDATA[Android源码中的一种单例实现]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/54359768</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/54359768</guid><author>listen2code</author><pubDate>Thu, 12 Jan 2017 01:16:17 +0800</pubDate><description><![CDATA[单例模式的实现方式有懒汉，饿汉，双重校验锁，枚举，内部类等等，写法就不全部列举了。在读Android源码的时候无意间发现一个单例辅助类类类/frameworks/base/core/java/android/util/Singleton.java，可以实现懒汉式单例，写法挺奇特的，虽然是个hide类，不过拷贝出来就可以用了。
package android.util;/**
 * Singleton]]></description><category></category></item><item><title><![CDATA[高仿蘑菇街欢迎页]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/53704594</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/53704594</guid><author>listen2code</author><pubDate>Sat, 17 Dec 2016 10:17:10 +0800</pubDate><description><![CDATA[蘑菇街欢迎页高仿效果这里这里…Demo下载地址前言
  本文将介绍如何对蘑菇街欢迎页效果进行分析，拆分，并一步步实现1个高仿版本，最重要的设计思路包括以下2点： 
  1.ViewPager切换时，通过offset偏移量动态修改View元素属性 
  2.canvas上精细化的控制旋，移，缩，透明等view属性变化，进行动态绘制
效果拆解
  首先可以把整体效果拆分为静态，动态2部分。静态：1个支持]]></description><category></category></item><item><title><![CDATA[MVC，MVP，MVPVM（二）提升效率之Templates]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/53447772</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/53447772</guid><author>listen2code</author><pubDate>Sat, 03 Dec 2016 21:23:57 +0800</pubDate><description><![CDATA[文章目录1.MVC，MVP，MVPVM（一）实践之路 
2.MVC，MVP，MVPVM（二）提升效率之Templates遗留问题
  《MVC，MVP，MVPVM（一）实践之路》中讲到如何从MVC到MVPVM的转变，将各个模块分离，职责划清。不过有个缺点，就是类爆炸，为什么代码写着写着就MVC了，就是因为一个Activity搞定，写着爽。但是，如果要实现解耦，就一定意味着会有很多不同的职能类。如果采]]></description><category></category></item><item><title><![CDATA[MVC，MVP，MVPVM（一）实践之路]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/53418515</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/53418515</guid><author>listen2code</author><pubDate>Thu, 01 Dec 2016 09:44:59 +0800</pubDate><description><![CDATA[简介
  分别使用MVC，MVP，MVP+VM，实践具体需求，对比优劣，逐步优化。
需求
  实现我的押金页面，包含未缴纳，已缴纳，免押金3种状态 
  1.顶部title：3种状态展示不同文案； 
  2.金额：已缴纳，未缴纳状态金额字号，色值不同；免押金状态不展示； 
  3.底部tips：已缴纳，免押金状态展示不同文案；已缴纳状态，不展示； 
  4.按钮：未缴纳，已缴纳状态，文案，及点击事件]]></description><category></category></item><item><title><![CDATA[DataBinding学习笔记（一）源码分析]]></title><link>https://blog.youkuaiyun.com/listen2code/article/details/53401461</link><guid>https://blog.youkuaiyun.com/listen2code/article/details/53401461</guid><author>listen2code</author><pubDate>Tue, 29 Nov 2016 22:35:38 +0800</pubDate><description><![CDATA[DataBinding整体使用流程开发阶段UserModel.javapublic class UserModel {
    public String name;
    public String nickName;
    public int age;    public UserModel(String name, String nickName, int age) {]]></description><category></category></item></channel></rss>