<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u010859484的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u010859484</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010859484]]></copyright><item><title><![CDATA[Error:Error: Found item Attr/duration more than one time]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/71170314</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/71170314</guid><author>u010859484</author><pubDate>Thu, 04 May 2017 14:36:49 +0800</pubDate><description><![CDATA[从这个错误可以看出是在自定义view的时候 attr下面 duration使用超过一次 因此将这个属性抽出 

name="duration"
format="integer"/>

其他使用这个的属性
name="duration"/>这样引用即可]]></description><category></category></item><item><title><![CDATA[解决viewpager的预加载]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/61918101</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/61918101</guid><author>u010859484</author><pubDate>Mon, 13 Mar 2017 15:11:35 +0800</pubDate><description><![CDATA[viewpager的预加载是很烦人的 因此为了解决这个预加载找了很多方案，在github上面有自定义viewpager实现它的懒加载，我感觉还是挺复杂的，为此我看了一下viewpager的源码，如下

/**
 * Set the number of pages that should be retained to either side of the
 * current page in t]]></description><category></category></item><item><title><![CDATA[viewpager动态改变每一个item的高度]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/61917904</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/61917904</guid><author>u010859484</author><pubDate>Mon, 13 Mar 2017 15:06:22 +0800</pubDate><description><![CDATA[viewpager是几乎每个项目都用的 ，有的时候 页面复杂一些需要动态改变每个item的高度，因此需要进行解决。解决方案如下：
首先如果对其进行wrapcontent需要自定义viewpager重写它的onmeasure方法，在里面进行处理 处理之后重新设置viewpager的高度为0  即可解决。看如下代码

/**
 * Created by longcai:zhangyu on 17]]></description><category></category></item><item><title><![CDATA[安卓中屏幕适配方案]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54971073</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54971073</guid><author>u010859484</author><pubDate>Fri, 10 Feb 2017 15:50:49 +0800</pubDate><description><![CDATA[在安卓中 屏幕适配是每一个项目必不可少的东西，屏幕适配有两种方案，一个是用px适配 另外一个是用dp适配。首先说一下px适配，这种适配比dp适配要方便很多，在网上很多的开源项目都是关于px适配的，这种适配需要加上markman 等工具的一起使用。这种适配的原理是根据UI给的尺寸直接填写px值 方便快捷。在这里推荐一个屏幕适配开源项目
AndroidAutoLayout ：   使用时候直接填写p]]></description><category></category></item><item><title><![CDATA[应用的优雅退出]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54962839</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54962839</guid><author>u010859484</author><pubDate>Fri, 10 Feb 2017 09:55:27 +0800</pubDate><description><![CDATA[开发过程中 需要退出APP，这个时候 就需要对退出进行处理 。我最常用的是两种方式，第一种方式是：建立一个全局容器类将activity都保存起来，退出时候遍历所有的activity
第二种方式是建立广播，当我退出的时候发送一个退出广播。
第一种方式 定义BaseActivity 如下代码：

 @Override
    protected void onCreate(Bundle sav]]></description><category></category></item><item><title><![CDATA[使用TortoiseGit向github上传代码]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54603409</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54603409</guid><author>u010859484</author><pubDate>Wed, 18 Jan 2017 18:33:19 +0800</pubDate><description><![CDATA[我们使用git工具已经很熟悉了，所以还是忍不住写一下git的一些用法，我曾经用github插件分享到github上面上，发现还是很坑的第二次进入之后就忘记密码了每次都得重新配置，所以我就用了TortoiseGit 还是很给力的。首先准备下载TortoiseGit 客户端然后进行安装，这里就不明说了之后
进入如下界面




点击generate 生成key 在这里说明一下 在生成过程中]]></description><category></category></item><item><title><![CDATA[baseactivity实现封装toolbar]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54584186</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54584186</guid><author>u010859484</author><pubDate>Tue, 17 Jan 2017 16:24:44 +0800</pubDate><description><![CDATA[最近看了material design发现toolbar是一个非常好用的东西，以前做项目的时候喜欢写导航条然后baseactivity处理，最后一直include，今天我封装了baseactivity实现全局继承toolbar，下面说一下我的实现思路首先写baseactivity，继承AppCompatActivity 在baseactivity里面封装一些公共用法比如进度加载匡，等等 。此次封装]]></description><category></category></item><item><title><![CDATA[android studio 中读取包出错的解决办法]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54290906</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54290906</guid><author>u010859484</author><pubDate>Mon, 09 Jan 2017 17:26:51 +0800</pubDate><description><![CDATA[今天碰到一个奇葩的问题是读取包出问题了如下图
实际上项目是没问题的这时候百度了没看到明确的解决方案，后来看到它报错的地方知道了 是缓存的问题，所以我看它的目录进入caches目录 直接将缓存目录删除，也可以找到对应目录进行删除，这缓存问题还是很令人头疼的]]></description><category></category></item><item><title><![CDATA[使用事件总线eventbus替代startactivityforresult]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54288862</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54288862</guid><author>u010859484</author><pubDate>Mon, 09 Jan 2017 15:17:11 +0800</pubDate><description><![CDATA[前几天我介绍过带返回值的activity，其中有两种方法一种是startactivityforresult，另一种是接口回调，今天我介绍另一种方法是eventbus事件总线，eventbus是非常火的一种框架这个模式就是事件总线，它比观察者模式要先进很多。我借鉴了这位博主的思路实现替代forresult：http://blog.youkuaiyun.com/crazy__chen/article/detail]]></description><category></category></item><item><title><![CDATA[安卓中使用Fiddler真机抓包]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54286909</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54286909</guid><author>u010859484</author><pubDate>Mon, 09 Jan 2017 11:06:59 +0800</pubDate><description><![CDATA[开发中抓包是一个很重要的流程，为此特意研究了一下Fiddler抓包，首先下载fiddler软件，打开之后是这样的界面


打开Internet连接tools->fiddler options 出现如下界面勾选如下选项




勾选之后选择OK，之后重启Fiddler软件，重启之后配置真机IP地址使得真机IP地址和Fiddler软件处于同一个局域网。
我的电脑是Windows所以c]]></description><category></category></item><item><title><![CDATA[两种方法处理recycleview的点击事件]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54095849</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54095849</guid><author>u010859484</author><pubDate>Thu, 05 Jan 2017 17:53:32 +0800</pubDate><description><![CDATA[我们用recycleview的知道，它并不像listview那样有onitemclicklistener在这里我介绍两种方法实现recycleview的跳转，第一种方法是在每一个item里面写点击事件可以这样处理
 holder.itemView.setOnClickListener 这个itemview是recycleview里面就有的。



另一种用的很广泛是自定义点击事件在ada]]></description><category></category></item><item><title><![CDATA[使用Android studio自带的lint清除项目中的无用资源]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54088417</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54088417</guid><author>u010859484</author><pubDate>Thu, 05 Jan 2017 09:01:36 +0800</pubDate><description><![CDATA[由于APP二次开发或者增加新功能等一些迭代会产生很多无用的资源，因此为了给apk瘦身，很有必要清理一些无用的资源文件。我习惯用studio 本身的lint清除无用资源看一下操作步骤
之后输入UnusedResources


得到以下对话框，可以选择清理哪些无用的文件，这里边我选择的是清理project里面的无用文件




点击OK得到以下列表
这是我清理之后的效果，如果没有]]></description><category></category></item><item><title><![CDATA[startactivityforresult与接口回调]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54022189</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54022189</guid><author>u010859484</author><pubDate>Wed, 04 Jan 2017 18:01:00 +0800</pubDate><description><![CDATA[startactivityforresult我们已经很熟悉了，带返回值的跳转，今天我介绍一下接口回调，这个也是一种带返回值跳转，实现界面之间的交互，看startactivityforresult
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);]]></description><category></category></item><item><title><![CDATA[materialdesign下拉刷新控件MaterialRefreshLayout的使用]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54020811</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54020811</guid><author>u010859484</author><pubDate>Wed, 04 Jan 2017 16:38:09 +0800</pubDate><description><![CDATA[自materialdesign出世以来 ，很受开发者的欢迎，对于 它的默认刷新控件应用非常广泛，我们用的网易云音乐 知乎 钉钉之类的都是用改控件，非常简洁方便。


使用步骤： 第一步依赖materialrefresh 库 ： compile 'com.cjj.materialrefeshlayout:library:1.3.0' 这个库在github上面地址为https://github.]]></description><category></category></item><item><title><![CDATA[安卓中动态设置控件的宽度和高度]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/54015560</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/54015560</guid><author>u010859484</author><pubDate>Wed, 04 Jan 2017 09:08:26 +0800</pubDate><description><![CDATA[我们做项目的时候 需要动态设置控件的高度，因此该功能是很重要的，下面我介绍一下动态设置控件的高度。     LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) password_layout.getLayoutParams();


其中password_layout.是获取线性布局中的当前控件
    ]]></description><category></category></item><item><title><![CDATA[安卓中键盘输入事件的实现]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/53996705</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/53996705</guid><author>u010859484</author><pubDate>Tue, 03 Jan 2017 18:06:10 +0800</pubDate><description><![CDATA[键盘的处理有几种方式，其中看需求情况，有的是回收键盘进行事件处理，有的是正在输入时候进行键盘处理，今天我实现键盘输入时进行事件的处理




                        et01.addTextChangedListener(new TextWatcher() {
                            @Override
            ]]></description><category></category></item><item><title><![CDATA[EventBus实现fragment之间的跳转]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/53996577</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/53996577</guid><author>u010859484</author><pubDate>Tue, 03 Jan 2017 18:00:57 +0800</pubDate><description><![CDATA[在我们做项目的时候 很多时候回碰到fragment跳转到fragment，在网上查了一些，其中有三种方法，这些还是不难的，但是不同需求需要实现的功能不同，
这是第二模块的fragment，如果我从点击首页的一个控件跳转到第二个模块的fragment中的定期理财这个模块，因此我想了一下解决方案，后来发现EventBus 这个东西非常的强大，所以就采用它了，一行代码即可解决这么复杂的问题]]></description><category></category></item><item><title><![CDATA[Android studio如何快速导入项目以及提高编译速度]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/53907428</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/53907428</guid><author>u010859484</author><pubDate>Wed, 28 Dec 2016 12:45:10 +0800</pubDate><description><![CDATA[安卓开发者都知道 studio是采用gradle构建项目的，我们很多时候都需要向其中导入项目，其中有在github上面导入的还有的是接手别人的项目，因此快速构建项目是必须的，不用下载不必要的东西，看以下操作，我从github上面下载supertextview这个开源库，我需要给它run起来，下载成功之后
可以看到项目结构是这样的，这个时候我需要将它导入我的studio中，这个时候就需要修改里面的]]></description><category></category></item><item><title><![CDATA[SpannableString的用法]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/53907239</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/53907239</guid><author>u010859484</author><pubDate>Wed, 28 Dec 2016 12:25:50 +0800</pubDate><description><![CDATA[在安卓开发中 SpannableString用途非常广泛，它节省了布局的复用，比如一个字符串可以搞定的事情就不需要布局嵌套布局了，
比如这个布局 这是一个列表，其中的每一个item是这样的 我可以这么处理，整体是线性布局熟悉为竖直，标题那一行 是一个线性布局 标题和投资时间平分这个水平布局 里面为2个textview，借款者也是一个线性布局  里面有两个textview平分这个布局。 操作这个是]]></description><category></category></item><item><title><![CDATA[textview实现自由复制]]></title><link>https://blog.youkuaiyun.com/u010859484/article/details/53907210</link><guid>https://blog.youkuaiyun.com/u010859484/article/details/53907210</guid><author>u010859484</author><pubDate>Wed, 28 Dec 2016 11:52:08 +0800</pubDate><description><![CDATA[在很多APP中这个功能应用非常广泛 最近项目需要这个需求 所以做了一个简单的复制粘贴功能看如下代码


我有一个textview控件 实现它的点击事件 在点击事件中进行如下处理即可实现该功能



ClipboardManager cmb = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SER]]></description><category></category></item></channel></rss>