<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[浅浅清风的博客]]></title><description><![CDATA[Android开发]]></description><link>https://blog.youkuaiyun.com/Fancy_xty</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Fancy_xty]]></copyright><item><title><![CDATA[AmazonS3 android sdk接入]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/110646607</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/110646607</guid><author>Fancy_xty</author><pubDate>Fri, 04 Dec 2020 15:31:23 +0800</pubDate><description><![CDATA[AmazonS3 android sdk接入

前段时间接了iOS的AmazonS3，用于上传及访问大文件和图片。过程比较坎坷，Android总的来说顺利很多，不过也碰到一些问题，在此记录一下

官方的示例代码
示例代码挺好的，不过不是太符合我的要求，我们服务端给的AWS凭证是动态的，每2小时更新一次。看官方的教程好像是写死在配置里的。
而且我也没找到符合我需求的示例代码。
集成方式和官网描述一样，不嫌我废话的话，我就贴一下吧。
dependencies {
    def aws_version = "2]]></description><category></category></item><item><title><![CDATA[IOS Realm使用小记]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/101531905</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/101531905</guid><author>Fancy_xty</author><pubDate>Fri, 27 Sep 2019 15:18:08 +0800</pubDate><description><![CDATA[Swift Realm 使用

之前写过一篇Android的Realm的使用小记，后来接触IOS开发了，现在写一篇在IOS中使用Realm数据库的记录
本文使用的是'RealmSwift','= 3.13.1'

导入
在podfile 文件中加入以下代码
  pod 'RealmSwift','= 3.13.1'

执行pod install命令
使用
基本配置
在AppDelegate文件中加...]]></description><category></category></item><item><title><![CDATA[Android代码布局-工具封装]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/79978737</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/79978737</guid><author>Fancy_xty</author><pubDate>Tue, 17 Apr 2018 18:18:21 +0800</pubDate><description><![CDATA[Android代码布局-工具封装


  android中的xml十分方便，在大部分时候xml基本上都能解决问题了，不过有的时候还是不得不用上代码布局，比如动态布局， 或者是通过代码布局来获得更好的复用性。实际上代码布局是相对比较麻烦，因为设置View的属性的时候， 我们需要关心父布局到底是什么布局，才能设置相应的Param，本文讲讲，如何封装代码，让代码布局和xml布局变得一样简单。


效果图...]]></description><category></category></item><item><title><![CDATA[Realm异步查询的三种方式]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/67639713</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/67639713</guid><author>Fancy_xty</author><pubDate>Fri, 07 Jul 2017 11:46:52 +0800</pubDate><description><![CDATA[阅读过Realm文档的童鞋们应该都知道Realm、RealmObject 和RealmResults 实例都是不可以跨线程使用的。 
虽然Realm查询数据的速度非常快，但有些时候我们还是不得不用上异步查询。

在Realm中，从子线程查询到的数据到主线程中是不可以使用的，会报Realm accessed from incorrect thread. 
所以我们如果希望通过我们熟悉的方式去创建异步]]></description><category></category></item><item><title><![CDATA[Kotlin for Android - 实战记录<一>]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/73649822</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/73649822</guid><author>Fancy_xty</author><pubDate>Fri, 23 Jun 2017 16:47:03 +0800</pubDate><description><![CDATA[·在应用任意类中获取Application(没有context时，获取Application)
·在应用任意类中获取SharedPreference(没有context时，获SharedPreference)
·在Fragment中直接使用布局文件的id作为控件使用
·监听EditText内容变化，更优雅的方式
·是用kotlin定义一个Dialog模板]]></description><category></category></item><item><title><![CDATA[Kotlin for Android - 常用关键字]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/73123966</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/73123966</guid><author>Fancy_xty</author><pubDate>Fri, 23 Jun 2017 15:36:23 +0800</pubDate><description><![CDATA[kotlin中与java用法一致的关键字包括:override ,while 等声明· open 在kotlin一个类需要被另一个类继承的话，需要用到open关键字open class OpenClass {}· is 判断类型    fun testIs() {
        var a: Any? = null;
        a = 3L
        if (a is Int) {]]></description><category></category></item><item><title><![CDATA[Kotlin for Android - 基础语法（类 函数 空检查）]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/73116573</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/73116573</guid><author>Fancy_xty</author><pubDate>Mon, 12 Jun 2017 16:09:17 +0800</pubDate><description><![CDATA[基础语法提要· 在kotlin中用法与java基本一致时，本文均省略描述，如：定义包，注释，if else,while等· 在Kotlin中代码不需要分号结尾，所以一行也不能写两行代码。如：print(1)print(2) 放在同一行是无法编译通过的。· kotlin中变量是var，常量是val，可以指定类型，也可以系统推断类型    var a: String = "指定类型变量"
    var]]></description><category></category></item><item><title><![CDATA[Kotlin for Android - Hello world]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/72975522</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/72975522</guid><author>Fancy_xty</author><pubDate>Sat, 10 Jun 2017 10:03:54 +0800</pubDate><description><![CDATA[使用Kotlin进行Android开发Kotlin非常适合开发Android应用程序，将现代语言的所有优势带入Android平台，无需引入任何新的限制：
兼容性: Kotlin与JDK 6完全兼容，确保Kotlin应用程序可以在较旧的Android设备上运行，无任何问题。Kotlin工具在Android Studio中完全支持，与Android构建系统兼容。
性能: Kotlin应用程序运行速度与J]]></description><category></category></item><item><title><![CDATA[在onCreate中正确获取View的宽高]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/55509888</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/55509888</guid><author>Fancy_xty</author><pubDate>Fri, 17 Feb 2017 14:31:02 +0800</pubDate><description><![CDATA[前言在Activity/Fragment 的onCreate 方法中，我们时常需要获取组件的宽高，但此时View并未绘制完成，直接获取到的宽和高都是0，那如何在绘制组件之前能获取到该组件的尺寸大小呢？ 
方法方法一 ：//测量方法int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int heigh]]></description><category></category></item><item><title><![CDATA[Android 按键防止过快点击（防抖），在ButterKnife中的简单解决方案。]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/53100471</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/53100471</guid><author>Fancy_xty</author><pubDate>Wed, 09 Nov 2016 16:03:03 +0800</pubDate><description><![CDATA[其实自己也在网上找了一些防抖的方案，比如RxBinding啊，NoDoubleClickListener啊，原始解决方案啊等等，不过那都不是我想要的。 
因为项目中使用了ButterKnife绑定控件和为控件注册点击事件。所以上面搜到的那些方案都不太好使，原始的又过于臃肿。 
最后还是只能自己动手丰衣足食了。 
其实想要防抖无非就是判断一下时间差，但每次写一堆代码，或者说每次复制一堆代码，很臃肿，我]]></description><category></category></item><item><title><![CDATA[使用SimpleXml解析xml数据<三>]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52814184</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52814184</guid><author>Fancy_xty</author><pubDate>Fri, 14 Oct 2016 11:05:21 +0800</pubDate><description><![CDATA[使用SimpleXml解析xml数据<三>前两篇博客介绍了一些基本xml解析。 
不过在使用过程中我们有可能也会遇到比较变态的xml，这篇博客主要讲讲怎么解析稍微不正常一点的xml。第一种：<Bean xmlns:soap="http://www.w3.org/2001/XMLSchema-instance">
    <soap:value>123</soap:value>
</Bean>这种相对]]></description><category></category></item><item><title><![CDATA[Rxlifecycle使用详解，解决RxJava内存泄露问题]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52290807</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52290807</guid><author>Fancy_xty</author><pubDate>Tue, 23 Aug 2016 14:48:46 +0800</pubDate><description><![CDATA[原文  http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1122/3711.html随着Android第三库的普及， RxJava 和 RxAndroid ( https://github.com/ReactiveX/RxAndroid )越来越被人熟知，简洁的语法，配合Java8 Lambda表达式，使代码的结构更加清晰，通过线]]></description><category></category></item><item><title><![CDATA[Realm使用小记]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52277161</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52277161</guid><author>Fancy_xty</author><pubDate>Mon, 22 Aug 2016 17:34:58 +0800</pubDate><description><![CDATA[最近有点空闲时间，就记录一下以前忘记记录的内容。 
Realm是一个能够代替SQLite和Core Data的手机数据库。使用 C++ 内核，所以效率非常的高，是 sqlite 的近几倍。 
其实我们自己也可以写demo测试一下存储相同数据，两个数据库所消耗的时间。 
Realm在多个平台上都可以使用，据说数据库文件可以在多个平台上通用。 
添加依赖,在工程目录下的build.gradle中加上cl]]></description><category></category></item><item><title><![CDATA[Rxjava操作符（defer，compose，retryWhen）]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52275735</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52275735</guid><author>Fancy_xty</author><pubDate>Mon, 22 Aug 2016 14:24:37 +0800</pubDate><description><![CDATA[上一篇博客讲了Retrofit的简单使用，应该看过的都基本了解我们公司这个服务器请求网络数据的流程，我来简单梳理一下： 
 第一次登录，创建cookiejar，请求服务器数据，保存accesstoken到本地
 请求其他网络数据，使用已存在的cookiejar，传入本地保存的accesstoken基本上是这样，但是在实际操作中，用户可能登录之后，过了很久才去请求其他数据，这时候cookie已经失效就]]></description><category></category></item><item><title><![CDATA[Retrofit、Okhttp使用小记（cookie，accesstoken，POST）]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52275610</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52275610</guid><author>Fancy_xty</author><pubDate>Mon, 22 Aug 2016 11:55:40 +0800</pubDate><description><![CDATA[博主在项目中用RxJava也差不多几个月了，但是结合Retrofit使用经验还不是太多。恰好新项目的后台是http+json的，就打算尝试一把。 
刚开始由于Retrofit还不太熟，但是后台接口急着测试，所以只好先用okhttp把接口测试成功先。 
最最简单的测试方法就是http在线测试啦，相信很多小伙伴都知道啦，不过还是给不知道的小伙伴科普一下吧，http://www.atool.org/htt]]></description><category></category></item><item><title><![CDATA[如何写自定义Activity、Fragment模板]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52154256</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52154256</guid><author>Fancy_xty</author><pubDate>Mon, 08 Aug 2016 18:52:59 +0800</pubDate><description><![CDATA[因为在项目中使用MVP模式，所以每次新建一个Activity、Fragment的时候都要写一大堆的类，接口和Presenter。如果加上Dagger2，那酸爽，简直了。上篇有提到MVP+Rx的结构，这篇博客就基于上篇博客来自定义一个模板文件， 如果不想自己重头开始写的， 可以把我发在github上的模板稍微改改就可以用了（需要掌握一些基本规则，文章会穿插着讲如何修改）博客写的比较急，内容有些乱，耐心]]></description><category></category></item><item><title><![CDATA[RxJava+MVP]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/52149548</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/52149548</guid><author>Fancy_xty</author><pubDate>Mon, 08 Aug 2016 11:54:55 +0800</pubDate><description><![CDATA[在公司项目中使用RxJava和MVP已经很久了，从一开始使用到不断完善这个结构，最近也看到很多QQ好友有类似这方面的问题，就想着把这个抽出来放到github上面，供大家参考。先说说这个mvp把， mvp我自己的理解就是通过一个中间类，做一个View和Model之间的一个联系类，view和Model不再直接联系，达到程序解耦的目的。MVP是一种设计模式，是一种思想，没有一个标准的实现过程，但是也要遵循]]></description><category></category></item><item><title><![CDATA[像使用插件一样为listview添加侧滑，上拉加载等功能]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/51958087</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/51958087</guid><author>Fancy_xty</author><pubDate>Wed, 03 Aug 2016 16:10:41 +0800</pubDate><description><![CDATA[像使用插件一样为recyclerView/listview添加侧滑，上拉加载等功能（几乎无需改动原有代码）RecyclerView 和Listview在项目中算是非常常用的了，不过在博客的开头，我还是要重申一下这个库的特点，几乎无需修改原有代码，而且所有功能全都独立。RecyclerView 和Listview用法大家都非常清楚，有时候我们经常在编写好listview和Recyclerview中的内]]></description><category></category></item><item><title><![CDATA[使用SpanableString实现textview部分字体点击事件（不同颜色）]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/51996233</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/51996233</guid><author>Fancy_xty</author><pubDate>Fri, 22 Jul 2016 16:32:33 +0800</pubDate><description><![CDATA[使用SpanableString实现textview部分字体点击事件（不同颜色）之前看到qq那种文本里面带@好友的，点击@XX就可以出发点击事件的效果很是好奇，后来无意间发现这个SpanableString，话说这个东东，功能还真是蛮强大的。这篇博客只讲一下ClickableSpan 
今天尝试学习了下， 记录一下学习过程。 
先上效果图吧： 
 
感觉是不是还不错。 
怎么实现的呢， 其实非常简单]]></description><category></category></item><item><title><![CDATA[在WebService中使用Retrofit+RxJava]]></title><link>https://blog.youkuaiyun.com/Fancy_xty/article/details/51837011</link><guid>https://blog.youkuaiyun.com/Fancy_xty/article/details/51837011</guid><author>Fancy_xty</author><pubDate>Wed, 06 Jul 2016 10:48:37 +0800</pubDate><description><![CDATA[最近Retrofit+RxJava还是非常火的，搭配一下MVP那开发简直就一个字爽。 
但是现在很多比较老一点的公司还在使用WebService+xml，真的很让人感到忧伤。不过真的想使用Retrofit替代ksoap也不是不行的，至于效率到底高不高，还是要亲测才知道。 
首先说一下WebService其实也是基于http的，也是同样可以用http去请求的。由于每个公司的协议都不同，所以在请求的时候]]></description><category></category></item></channel></rss>