<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HelloTu的博客]]></title><description><![CDATA[学Android的那点儿事儿]]></description><link>https://blog.youkuaiyun.com/TMACADAI</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TMACADAI]]></copyright><item><title><![CDATA[一步步搞懂Handler的工作原理（源码分析）]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/90633952</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/90633952</guid><author>TMACADAI</author><pubDate>Mon, 03 Jun 2019 16:08:58 +0800</pubDate><description><![CDATA[在前一篇文章中简单介绍了下Handler的使用方式，大致概括了Handler实现线程通信的流程，这篇文章将结合Handler的使用，一步步结合源码分析下具体做了什么操作，彻底搞清楚Handler，Message，ＭessageQueue，Looper到底是什么关系。
平时我们用的最多的都是在主线程创建一个Handler，然后在子线程利用Handler发送消息到主线程处理。现在我们尝试下在子线程创建...]]></description><category></category></item><item><title><![CDATA[搞懂Handler的使用与工作流程]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/90268472</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/90268472</guid><author>TMACADAI</author><pubDate>Tue, 21 May 2019 10:29:11 +0800</pubDate><description><![CDATA[Handler在Android开发中基本上少不了,本文主要结合自己的理解,从Handler的作用,使用方式以及工作原理上解读Handler.
Handler的作用
线程间通信,这就是Handler的主要作用. 平时我们用的最多的场景就是在子线程获取数据,然后利用Handler将数据发送到主线程进行UI更新.
handler

...]]></description><category></category></item><item><title><![CDATA[Java文件输入输出流]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/89926633</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/89926633</guid><author>TMACADAI</author><pubDate>Wed, 08 May 2019 16:28:05 +0800</pubDate><description><![CDATA[在Android开发中，文件操作还是比较频繁的，本文主要记录下文件的加载，写入等相关操作的使用。
流的分类
在Java程序中操作文件，都是以流的形式来操作

首先按照流向可以分为输入流与输出流两种，这里的输入输出是站在内存的角度而言的，流向内存的为输入流，流出内存的为输出流
按照传输的单位可以分为字节流与字符流，字节流传输的是二进制字节，可操作任何类型的文件，字符流传输的是字符，只能用来读取文本文...]]></description><category></category></item><item><title><![CDATA[Retrofit实现重试机制（自定义Interceptor或封装callback）]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/89250190</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/89250190</guid><author>TMACADAI</author><pubDate>Fri, 12 Apr 2019 18:32:57 +0800</pubDate><description><![CDATA[最近在一个项目需求中，涉及到网络请求能有重试机制，而我们项目中网络请求使用的是Retrofit框架，以前也没做过这种，老大提示了下说可以用拦截器Interceptor或者封装Callback实现。
自定义Interceptor
废话少说，直接上代码
public class OkHttpRetryInterceptor implements Interceptor{

    private in...]]></description><category></category></item><item><title><![CDATA[Java设计模式——单例模式]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/88838419</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/88838419</guid><author>TMACADAI</author><pubDate>Wed, 27 Mar 2019 10:34:17 +0800</pubDate><description><![CDATA[单例模式应该是日常开发中用得最多的设计模式了，它的思想就是保证在应用中一个类的实例只能有一个。
什么情形下需要用到单例模式？
在程序中我们经常会遇到有类似配置文件的需求，一般在整个应用中配置信息应该都是需要共享同一份的，这时可以利用单例模式，保证在程序中用到此配置类的实例时，都是同一个实例，保证程序运行的正确。
类似于这种情形还有很多，比如数据库，线程池等。针对这种共享的情形有人可能就会有疑问，那...]]></description><category></category></item><item><title><![CDATA[利用gradle生成jar包]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/88540082</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/88540082</guid><author>TMACADAI</author><pubDate>Thu, 14 Mar 2019 19:07:48 +0800</pubDate><description><![CDATA[公司的项目主要是做sdk，之前打jar包都是通过写shell脚本手动编译生成，那样效率低而且维护起来也很麻烦。最近把项目中jar包的构建方式通过gradle进行了重构，在此简单记录下。
gradle
Gradle主要是用Groovy语言编写，如果还不太清楚gradle是什么，或者想了解gradle的一些基础知识点可以参考下面大神的文章。Groovy是一门jvm语言，如果只是为了进一步学习Gradl...]]></description><category></category></item><item><title><![CDATA[搞懂Java内部类]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/88243898</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/88243898</guid><author>TMACADAI</author><pubDate>Wed, 06 Mar 2019 18:14:42 +0800</pubDate><description><![CDATA[搞懂Java内部类为什么会有内部类内部类的分类静态内部类和非静态内部类的使用和区别局部内部类匿名内部类为什么局部和匿名内部类在使用局部变量时，该局部变量需要被声明为final
Java内部类一直是我感觉很生疏的地方，但是这个知识点在面试中被问到的几率还是很高，而且在最近的需求中也用到了静态内部类，索性就把这一块又好好学习了下，趁热打铁，写一篇博客巩固下
为什么会有内部类
开始学习内部类的时候，最让...]]></description><category></category></item><item><title><![CDATA[2018届校招Andoid开发工程师总结--笔经面经]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/78772153</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/78772153</guid><author>TMACADAI</author><pubDate>Tue, 12 Dec 2017 19:30:02 +0800</pubDate><description><![CDATA[分享在秋季校园招聘中印象比较深刻的笔经面经]]></description><category></category></item><item><title><![CDATA[2018届校招Andoid开发工程师总结--准备工作]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/77859425</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/77859425</guid><author>TMACADAI</author><pubDate>Tue, 28 Nov 2017 10:56:48 +0800</pubDate><description><![CDATA[2018届校招Andoid开发工程师总结，介绍校招前期的简历准备、简历投递、刷题复习等]]></description><category></category></item><item><title><![CDATA[一步步做Android自定义圆环百分比控件]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/76223112</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/76223112</guid><author>TMACADAI</author><pubDate>Fri, 28 Jul 2017 15:50:00 +0800</pubDate><description><![CDATA[一个android中经常用到的带动画效果的圆环百分比显示View，可自己设置圆环宽度，浅变色颜色，字体大小等...]]></description><category></category></item><item><title><![CDATA[Android自定义加载等待Dialog弹窗控件(仿ios效果实现)]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/73612120</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/73612120</guid><author>TMACADAI</author><pubDate>Thu, 22 Jun 2017 23:32:57 +0800</pubDate><description><![CDATA[仿ios效果的自定义加载弹窗，通过Builder模式实现，使用起来很简单]]></description><category></category></item><item><title><![CDATA[Android 点击View实现前后翻转动画]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/72841912</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/72841912</guid><author>TMACADAI</author><pubDate>Fri, 02 Jun 2017 10:22:30 +0800</pubDate><description><![CDATA[我最近做的一个小项目中的效果，其实就是很多个相似的可点击的view，点击之后在3D空间前后翻转，有翻牌子的效果]]></description><category></category></item><item><title><![CDATA[Retrofit的基本使用（Get请求）]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/71306559</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/71306559</guid><author>TMACADAI</author><pubDate>Sun, 07 May 2017 00:20:19 +0800</pubDate><description><![CDATA[最近一直在重构毕设的项目，再加上实验室最近手头上有两个项目要写，事情稍微有点儿多。最近的项目中做的最多的就是网络请求，以前都是用的okhttp，但是看现在主流的模式都是Retrofit+okhttp+Rxjava，所以，学习了一下Retrofit]]></description><category></category></item><item><title><![CDATA[Android自定义底部弹窗]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/70217300</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/70217300</guid><author>TMACADAI</author><pubDate>Mon, 17 Apr 2017 23:04:03 +0800</pubDate><description><![CDATA[在很多APP特别是ios系统的App中会经常看到从底部弹出而且也停留在底部位置的弹窗，这种交互设计感觉很好，所以我也想在我写的一个天气App中用上，其实自定义Dialog很简单，无非就是给Dialog设置一个自定义的布局，样式以及动画等。]]></description><category></category></item><item><title><![CDATA[Fragment的应用之底部导航栏的实现（二）之应用ViewPager]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/70148653</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/70148653</guid><author>TMACADAI</author><pubDate>Wed, 12 Apr 2017 22:56:20 +0800</pubDate><description><![CDATA[在Fragment的应用之底部导航栏的实现（一）的基础上应用了ViewPager。使得底部导航栏的切换有了滑动的效果，同时支持了页面的手势滑动切换。]]></description><category></category></item><item><title><![CDATA[Fragment的应用之底部导航栏的实现（一）]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/69950480</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/69950480</guid><author>TMACADAI</author><pubDate>Mon, 10 Apr 2017 15:58:04 +0800</pubDate><description><![CDATA[这篇博客主要是一周前写的Fragment的后续，都知道现在主流APP基本都会有底部导航栏，比如微信，微博，虎扑什么的无一例外使用了底部导航的设计。 
本博客所记录的底部导航的实现可能在目前的实际应用中的应用价值不大，这里主要是为了巩固Fragment的使用。]]></description><category></category></item><item><title><![CDATA[Fragment的基本使用]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/68949305</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/68949305</guid><author>TMACADAI</author><pubDate>Sun, 02 Apr 2017 00:18:57 +0800</pubDate><description><![CDATA[记录下平时没怎用的Fragment的使用吧。作为一个菜鸟级的android开发，在目前做的实验室的项目都比较小，为了简单就统统只使用Activity，Fragment基本上没有用过，所以写了这篇文章记录下学习过程，熟悉巩固一下它的用法。]]></description><category></category></item><item><title><![CDATA[Android自定义标题栏控件(二)]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/65449244</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/65449244</guid><author>TMACADAI</author><pubDate>Thu, 23 Mar 2017 21:10:31 +0800</pubDate><description><![CDATA[Android 自定义复合控件之通用标题栏控件发布到jitpack仓库，本文主要讲述该控件的使用方法]]></description><category></category></item><item><title><![CDATA[Android 自定义复合控件之通用标题栏]]></title><link>https://blog.youkuaiyun.com/TMACADAI/article/details/64219879</link><guid>https://blog.youkuaiyun.com/TMACADAI/article/details/64219879</guid><author>TMACADAI</author><pubDate>Mon, 20 Mar 2017 23:40:49 +0800</pubDate><description><![CDATA[作为Android的菜鸟一枚，一直觉得能够写自定义控件是一个很炫酷的技能，最近看了徐宜生老师的群英传之后，感觉收获还是挺多的。这篇文章就主要记录的是学习自定义控件中最简单的复合控件的过程。虽然现在MD中Toolbar已经完全满足各种各样的需求，但对于我这种菜鸟来说自己动手写一个还是能学到很多东西的！]]></description><category></category></item></channel></rss>