<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[抽烟的青蛙的专栏]]></title><description><![CDATA[每天进步一点点]]></description><link>https://blog.youkuaiyun.com/u012858313</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012858313]]></copyright><item><title><![CDATA[Dagger2使用]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/77333310</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/77333310</guid><author>u012858313</author><pubDate>Thu, 17 Aug 2017 15:24:57 +0800</pubDate><description><![CDATA[概述依赖注入（Dependency Injection），简称DI，又叫控制反转（Inversion of Control），简称IOC。Dagger2就是DI框架的一个例子。作用将各层的对象以松耦合的方式组织在一起，解耦，各层对象的调用完全面向接口。提供依赖的两种方式使用@Inject注解构造器class Thermosiphon implements Pump {
    private fin]]></description><category></category></item><item><title><![CDATA[RxJava使用入门]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/55811309</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/55811309</guid><author>u012858313</author><pubDate>Sun, 19 Feb 2017 22:39:27 +0800</pubDate><description><![CDATA[简介这篇文章只是记录一下RxJava的使用，不涉及源码分析前言RxJava是做什么的？我们为什么要用Rxjava?就我现在的理解来说，一个作用是发送数据接收数据，二是异步。基本概念
Observable：被观察者。事件的产生者，发送者，是主动的，整个事件的起点。
Observer：观察者。事件的处理者，相应者，是被动的，整个事件的结束点。
Subscriber：Subscriber是实现Observ]]></description><category></category></item><item><title><![CDATA[Android Studio Debug调试]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/54846851</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/54846851</guid><author>u012858313</author><pubDate>Fri, 03 Feb 2017 14:37:13 +0800</pubDate><description><![CDATA[使用断点
Show Execution Point   — 该按钮,光标回到正在debug的断点处
Step Over   — 单步执行，前进到下一行代码（而不进入方法）
Step Into   — 进入自定义的方法，如果是系统的方法，则不会进入方法内部
Force Step Into   — 和Step Into类似，不过可以进入系统方法
Step Out    — 有断点走到下一个断点，如果没有]]></description><category></category></item><item><title><![CDATA[欢迎使用优快云-markdown编辑器]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/54846681</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/54846681</guid><author>u012858313</author><pubDate>Fri, 03 Feb 2017 14:01:32 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗    Ctrl + B 
斜体    Ctrl + I 
引用    Ctrl]]></description><category></category></item><item><title><![CDATA[dispatchTouchEvent源码分析]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/54315091</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/54315091</guid><author>u012858313</author><pubDate>Tue, 10 Jan 2017 17:45:35 +0800</pubDate><description><![CDATA[简介通过对dispatchTouchEvent事件分发的理解，了解android事件的处理机制事件分发流程首先先确认事件由系统传递给当前Activity，然后由Activity开始分发，主要的流程：
  Activity －> PhoneWindow －> DecorView －> ViewGroup －> … －> View
看一下Activity.dispatchTouchEvent()源码]]></description><category></category></item><item><title><![CDATA[JavaScript学习笔记]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/53928713</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/53928713</guid><author>u012858313</author><pubDate>Thu, 29 Dec 2016 15:40:02 +0800</pubDate><description><![CDATA[对象var Persion = {
    age:25,
    name:'fayou147'}javascript中的对象已key-value的形式展现关键字thisthis是函数运行时，自动生成的内部对象，只能在函数内部使用函数使用的场合不同，this的值也不同，原因是this指的是函数调用时所在的对象，eg:function test(){
    this.x = 1;
}var obj]]></description><category></category></item><item><title><![CDATA[Android利用ProGuard进行代码混淆]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/53926005</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/53926005</guid><author>u012858313</author><pubDate>Thu, 29 Dec 2016 11:58:31 +0800</pubDate><description><![CDATA[简介由于Android的代码大都是Java代码，所以挺容易被反编译的，好在Android ADT为我们集成了混淆代码的工具，一来可以混淆我们的代码，让程序被反编译后基本看不懂，另外还能起到代码优化的作用。发布项目前，建议打开Android的代码混淆功能。Android ADT主要通过ProGuard工具来提供代码混淆，网上也有挺多博客文章讲这个的，但感觉很多都介绍得太过于复杂，这里我就以问答的方式来]]></description><category></category></item><item><title><![CDATA[Canvas 基本绘图Api记录]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/53380418</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/53380418</guid><author>u012858313</author><pubDate>Mon, 28 Nov 2016 18:27:50 +0800</pubDate><description><![CDATA[简介Canvas我们可以称之为画布，能够在上面绘制各种东西，是安卓平台2D图形绘制的基础。绘制东西，需要4个元素协同来完成：
位图：Bitmap 来保持（hold）那些像素
画布：Canvas 来响应draw的调用
画笔：paint 描述画画的颜色和样式等
绘图基元：矩形、路径、文字、位图等其他元素
ApidrawColor / drawRGB / drawARGB（绘制颜色） /**
  * 使用]]></description><category></category></item><item><title><![CDATA[compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/53261105</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/53261105</guid><author>u012858313</author><pubDate>Mon, 21 Nov 2016 16:55:47 +0800</pubDate><description><![CDATA[compileSdkVersion指定apk编译时的用的哪个 Android SDK 版本， compileSdkVersion 不会改变apk运行时的行为,不会被编译到 APK 中：它只是在编译的时候使用。minSdkVersionapk只能运行在版本>=minSdkVersion的Android手机上,其中v4和v7包的 minSdkVersion 分别是 4和7 ，也就是说v4包只能在API]]></description><category></category></item><item><title><![CDATA[Sublime Text 3安装指引]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/52998563</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/52998563</guid><author>u012858313</author><pubDate>Tue, 01 Nov 2016 18:39:06 +0800</pubDate><description><![CDATA[前言最近几天在学习使用sublime text，遇到了一些坑，在这里记录一下。简介Sublime Text 是一文本编辑器，可通过包（Package）扩充本身的功能。下载地址：https://www.sublimetext.com/安装下载完成后，一路next下去就可以了。安装插件
按下Ctrl+Shift+P调出命令面板，输入install 调出 Install Package 选项并回车（注：]]></description><category></category></item><item><title><![CDATA[Scroller的学习]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/52875662</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/52875662</guid><author>u012858313</author><pubDate>Thu, 20 Oct 2016 19:43:37 +0800</pubDate><description><![CDATA[前言一直对Scroller这个类不太熟悉，之前老是在网上找着看，但是过不了多长时间后就忘记了，今天来整理一下 
先看一下Scroller里面的方法： 
http://api.apkbus.com/reference/android/widget/Scroller.html说明为了理解方便，拿SlideView来做说明，关于SlideView的demo网上有很多，这里为了讲解主要贴出SlideView]]></description><category></category></item><item><title><![CDATA[Android drawable不同分辨率下的适配]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51447292</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51447292</guid><author>u012858313</author><pubDate>Tue, 18 Oct 2016 12:48:51 +0800</pubDate><description><![CDATA[前言文章基本抄袭郭霖大神的Android drawable微技巧，你所不知道的drawable的那些细节，略做修改，为了自己理解。简介最近做项目的时候遇到一个问题：图片在手机上的显示总是和效果图有差异，UI说是我把图片放大了，看了一下代码没有啊，这是怎么回事？最后发现是把基于1080*1920分辨率下切的图片放到了mipmap-xhdpi目录下面说明 public static Bitmap dec]]></description><category></category></item><item><title><![CDATA[finished with non-zero exit value 3,gradle编译异常小结]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51693337</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51693337</guid><author>u012858313</author><pubDate>Thu, 16 Jun 2016 17:19:11 +0800</pubDate><description><![CDATA[转载自：http://www.jacpy.com/2016/04/22/android-studio-error-collection.html
  在使用android studio过程中，使用gradle编译的时候总会出现一些问题，下面是几个常见问题的解决方法。
被编译的代码或资源有问题（ finished with non-zero exit value 1）：出现这种编译异常表现是 exit]]></description><category></category></item><item><title><![CDATA[Retrofit2.0实践记录]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51330541</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51330541</guid><author>u012858313</author><pubDate>Fri, 06 May 2016 18:50:50 +0800</pubDate><description><![CDATA[前言
  Type-safe HTTP client for Android and Java by Square, Inc.
官网：http://square.github.io/retrofit/API：http://square.github.io/retrofit/2.x/retrofit/参考：http://gank.io/post/56e80c2c677659311bed9841]]></description><category></category></item><item><title><![CDATA[Android Studio生成.so库]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51307275</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51307275</guid><author>u012858313</author><pubDate>Tue, 03 May 2016 20:45:57 +0800</pubDate><description><![CDATA[简介通过android studio生成so库的实践。上一篇记录的是通过eclipse生成so的方法eclipse生成so库实践，这里记录一下通过android studio是怎么生成so库的，参考文章http://www.jianshu.com/p/0c0d37c9a2db，这篇blog主要是参考上面文章实现，自己做了一部分修改，以及实现时遇到了一些坑，这里记录一下。配置NDK
下载ndk]]></description><category></category></item><item><title><![CDATA[JNI实现HelloWorld]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51252381</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51252381</guid><author>u012858313</author><pubDate>Tue, 26 Apr 2016 18:12:23 +0800</pubDate><description><![CDATA[简介jni实现hello world，以及生成so文件的步骤介绍
下载NDK并解压
配置NDK的环境变量
配置生成头文件.h
配置build ndk 步骤下载安装ndk就不说了，网上有很多教程，说一下.h文件和.so文件的生成步骤
生成.h头文件点击External Tools Configurations… 然后，如图所示，点击  接下来，看图操作 最后点击Apply,然后 我们在一个androi]]></description><category></category></item><item><title><![CDATA[Android动态加载—Res文件]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51067909</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51067909</guid><author>u012858313</author><pubDate>Tue, 05 Apr 2016 21:33:14 +0800</pubDate><description><![CDATA[简介动态加载res文件，就是将资源文件打包进一个统一的apk,而在我们的app安装后通过后台下载，然后再写到我们的应用中，将这个含有资源的apk,可以称为插件apk,而我们的app,可以称为宿主apk,在宿主中加载插件中的资源文件的方法。介绍
下载
加载
获取资源文件
对于下载可以参考上一篇so文件的下载，没什么要说的，加载是从你的sdcard目录下复制到你的应用目录下例如：data/data/包名]]></description><category></category></item><item><title><![CDATA[Android动态加载—so文件]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51065673</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51065673</guid><author>u012858313</author><pubDate>Tue, 05 Apr 2016 17:18:01 +0800</pubDate><description><![CDATA[简介前几天做一个视频播放的功能，用到了bilibili开源ijkplayer播放器的（集成ijkplayer），功能确实强大，但就是用到的ffmpeg解码库太大，不得已只能只能将so文件拿出来，通过动态的方式来加载。什么是动态加载？就是讲so文件不打包进apk,在安装完应用打开app的时候通过后台下载so库，将下载下来的so文件再写入到app里面。 
首先我们要知道，Android加载so文件的方式]]></description><category></category></item><item><title><![CDATA[IllegalThreadStateException: Thread already started解决]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/51064924</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/51064924</guid><author>u012858313</author><pubDate>Tue, 05 Apr 2016 15:26:05 +0800</pubDate><description><![CDATA[IllegalThreadStateException的原因解析mThread = new MThread();
mThread.start();
mThread.interrupt();
mThread.start();这段代码运行，就会出现上面的异常，从字面是理解也很容易理解：非法线程状态异常，线程已经start。具体原因也很容易找到,看一下thread.start()里面做了什么：    pu]]></description><category></category></item><item><title><![CDATA[Git使用教程]]></title><link>https://blog.youkuaiyun.com/u012858313/article/details/50670091</link><guid>https://blog.youkuaiyun.com/u012858313/article/details/50670091</guid><author>u012858313</author><pubDate>Mon, 15 Feb 2016 19:53:15 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/tugenhua0707/p/4050072.html




一：Git是什么？

       Git是目前世界上最先进的分布式版本控制系统。

二：SVN与Git的最主要的区别？

      SVN是集中式版本控制系统，版本库是集中放在中央服务器的，而干活的时候，用的都是自己的电脑，所以首先要从中央服务器哪里得到最]]></description><category></category></item></channel></rss>