-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
255 lines (232 loc) · 41.6 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title><![CDATA[国外推送方案的调研]]></title>
<url>http://yoursite.com/2017/02/27/%E5%9B%BD%E5%A4%96%E6%8E%A8%E9%80%81%E6%96%B9%E6%A1%88%E8%B0%83%E7%A0%94/</url>
<content type="html"><![CDATA[<p> 解决的问题:国外推送无法推送到指定的手机<br> 问题的原因:由于在国内GFW原因,国内网络推送无法到达。目前采用的Umeng推送方案存在到达率问题。</p>
<p> 对现有主流的推送方案进行评估:<br> (一)友盟推送:<br> (1)原理:<br> Umeng的推送机制是采用独立进程运行,兄弟App共享长连接方式。【手机中采用Umeng推送的APP可以共享Service】收取推送。</p>
<p> (2)存在的问题:<br> 1.国外用户收不到推送:实际查看Umeng后台分析,发现国外用户推送到达率不高。可能由于Umeng服务器未覆盖到一些国家和相应的地区引起的原因。<br> 2.相关的测试结果来看,部分手机由于系统问题导致Service存活率情况不高。<br> 3.在service被杀死后有一定概率丢失消息,有一定延时率。</p>
<p> (二)小米推送:<br> 之前在确定需求时,有提出第三世界的国家,例如:印度,他可能购买了中国的手机比如小米手机,还有一个情况:国产手机在国外使用的情况【Umeng解决】<br> (1)原理:采用系统长连接方式推送。只要系统不死,可以保证90%的推送到达率,原生和MIUI系统上有良好的存活率。<br> (2)此方案使用时候,需要看小米用户的数量来决定是否采用。</p>
<p> (三)Google原生服务GCM【现已升级为FCM】<br> (1)原理:App服务器向GCM连接服务器发送HTTP/XMPP请求,GCM存储相关推送信息,并通过一个Token作为表示,并向注册了GCM服务的客户端推送特定消息。<br> (2)存在问题:FCM服务必须是在安装了googleplayServer才能正常运行。</p>
<p> 综上分析:采用Umeng和Google FCM作为方案。针对国外的渠道,采用FCM推送,国内的渠道,采用Umeng推送。</p>
<p> 有一个基于FCM的方案OneSignal[<a href="https://documentation.onesignal.com" target="_blank" rel="external">https://documentation.onesignal.com</a>] 他提供了一个管理后台,对APP对达到率,推送的延迟率,用户量等的数据统计服务。<br> 根据实际需求:后台单独会做相关的数据统计,所以不考虑此方案。<br> 需要思考的几个问题:<br> 1.FCM是否可以进行群推【查看相应的API】<br> 2.需要对推送的方案进行单独模块划分并配置<br> 3.客户端原先旧版升级到新版推送方案切换的问题。</p>
<p> 客户端需要评估方案的集成:<br> 1.将推送部分分模块进行集成:其中涉及到,各个不同的模块对进行推送相关操作时候,需要添加相关的权限。单独在AndroidManifest.xml中配置会导致权限混乱。<br> 添加相关的权限时候,指定渠道名称,通过代码动态写入的方式。<br> 2.当然采用两种推送方案的时候,需要写一个管理类PushManager对推送方案进行判断:国外的手机并且安装了google play server的手机采用FCM的推送方式 </p>
]]></content>
</entry>
<entry>
<title><![CDATA[关于项目中时间分配的问题]]></title>
<url>http://yoursite.com/2017/02/12/%E5%85%B3%E4%BA%8E%E9%A1%B9%E7%9B%AE%E4%B8%AD%E6%97%B6%E9%97%B4%E5%88%86%E9%85%8D%E7%9A%84%E9%97%AE%E9%A2%98/</url>
<content type="html"><![CDATA[<p> 今天我体验了一把关于项目中时间分配的问题。整个项目的需求其实还是很满的,而且时间很紧张,在时间紧任务重的时候,任务的优先级和合理的分配就显得尤为重要了。<br>比如这次春节一回来,就要开始改版了,改版的内容其实还挺多的,主题风格的样式修改,做成可配置的模式,<br>界面的样式各种文字的修改,智能场景整个逻辑修改外界集成界面动画。周四确定下来整个任务需求,周五还在探讨需求中的不合理部分,<br>下周三就要提测,也就是说完整的开发时间就4天,包括中间还有部分知识和业务逻辑不清晰,也许会花去1天的时间学习。总的来说,开发时间就3天。</p>
<p> 那么,任务重,外加时间紧的时候,什么是最重要的?保持自己稳定的情绪,碰到事情不要慌,当任务重的时候,时时刻刻感觉来不及,会有焦躁的情绪,情绪稳定好这是必然。<br>2.要学会沟通,要学会拒绝,我在项目执行中就碰到,自己很难做人。项目负责人的意思是你要把整个需求确定下来沟通好,产品这边说UI没有设计完整,UI又把产品的逻辑推给了产品。<br>这个时候作为开发人员,被挤在中间很难受。当然有问题的地方一定是有机会的地方,记住.</p>
<p> 首先,要分清楚UI开发过程中,哪些属于UI的逻辑和交互,哪些属于UI的细节。交互和逻辑方面就应该和产品沟通,UI细节方面就应该和UI去沟通。<br>当然沟通过程中肯定会碰到很多的问题。比如说:实现困难,这个时候应该去做需求评估,找解决方案,要和同事交流自己解决问题的想法和思路,因为这些细节点没有做到位,可能会delay 2天哦,千万别小看细节,细节不注意,2天时间过去了,你剩下的时间是100%来不及的。当然细节确定了以后,要赶紧去实现,写DEMO,DEMO出来了未必就代表集成没有任何问题。<br>DEMO我也写好了,发现1天过去了,剩下的时间我就只有2天多点了。如何分配好2天多的时间,首先:业务逻辑是最重要的,理清逻辑比UI实现来的更加重要,这部分的时间应该花下去,UI细节可以微调,微调需要花很长的时间,而且要涉及到和UI同事的合作,合作中不断的微调既耽误时间,又没有明显效果,而且别人也不一定有空,在最后第二天的时候,抽2小时找时间一起沟通,一起联调。优先级应该往下降。<br>当然,最后再剩下测试的时间估进去,你也要花1/4天。所以主流程走通是1天半。时间很紧,前期最重要的是理清逻辑,逻辑理不清楚越来越乱,外加慌乱的情绪只会无限制delay.一定要相信前期投入对正确的时间,后期才会事半功倍。最后才能达到封包的稳定性和质量。</p>
<p>整个页面可能分三大板块:首页的Title,这部分最简单,中间的列表,此次修改也是涉及到样式。难点是样式可配置。但是也要分,这个版本可以写的不那么完美。<br>在时间紧的时候可以挪到第二优先级。第三:场景的业务逻辑修改外加UI动画:重点中的重点:前两块时间可以压缩,最后一块必须要分:业务逻辑流程,当你画出整个流程图,<br>说明你已经弄懂了。UI的动画,这块可以先写DEMO,集成时候将逻辑和DEMO一并集成,可以花一些时间微调。再和UI同事确认相关的效果。这一块需要花1天时间。<br>当然,所有的需求拟定和任务确定其实都是在上班以外的时间整理的,周六周日你任务应该是已经建立好思维导图了,TODOList列表应该很清楚了,周一要看到行动了,这样才能在工作中游刃有余,当然刚刚评估中还有半天,那应该留下来应对突发状况,谁也不知道哪天需求改了,当然前提的前提,你在做调研的时候,应该把整体的大方向确定完毕了,不应该在执行的时候大需求还没明白清楚,这样是大忌。</p>
<p>我觉得有一点:不要害怕问问题,要敢于问,当然不是不经过大脑的问题,该拒绝的拒绝,你要让别人知道自己是一个聪明的开发者,而不是碰到问题不思考到处BIBI,错了没关系,要及时改进。</p>
<p>整个过程执行下来有两点感悟还是挺深的:<br>1.在执行过程中,前期还没有UI需求的时候,先搞清楚业务逻辑,可以看一下整个代码。不熟悉的时候可以打断点,理清整个逻辑,理解的越到位,对后期的进度越有利。<br>2.在UI的开发中浪费了太多时间:1.Sketch工具不熟练。2.后期和UI的微调花了太多时间,将近有1.5天。第一:是对整个UI测量工具的不熟悉。第二:前期没有和UI约定好,大家抽取一个都有空的时间,<br>一起联调,会省下太多的时间,原先1.5天可能只需要半天就搞定了。那这个时候可以留下更多的时间处理紧急问题。前期UI还未设计出来的时候,就应该对整个APP有自己的理解。这样沟通起来也会顺畅很多。</p>
<p>第一点我做的还算到位,所以发现:涉及到逻辑的整合比较顺利,第二点还做的不够。</p>
]]></content>
</entry>
<entry>
<title><![CDATA[AndroidStudio工具学习]]></title>
<url>http://yoursite.com/2017/02/05/AndroidStudio%E5%B7%A5%E5%85%B7%E5%AD%A6%E4%B9%A0%E7%AF%87/</url>
<content type="html"><![CDATA[<h1 id="选中"><a href="#选中" class="headerlink" title="选中"></a>选中</h1><ul>
<li>三击改行可以选中一整行 </li>
<li>Shift + 向上和向下箭头可以选中相邻文本 </li>
<li><p>Cmd + , 激活设置菜单 </p>
<h1 id="查找最近的文件"><a href="#查找最近的文件" class="headerlink" title="查找最近的文件"></a>查找最近的文件</h1></li>
<li>使用Command + E 可以查找最近的文件 </li>
<li>Command+ B 跳转至定义</li>
<li><p>Cmd + N 查找类 或者按两次shift </p>
<h1 id="便捷操作"><a href="#便捷操作" class="headerlink" title="便捷操作"></a>便捷操作</h1></li>
<li><p>Cmd + J 打开代码模板,可以使用常用的代码模板 </p>
<h1 id="Git相关"><a href="#Git相关" class="headerlink" title="Git相关"></a>Git相关</h1></li>
<li>按下Cmd + 9 打开git的日志显示窗口 </li>
<li><p>Git代码比较 show diff的时候按下左上角的向下向上的箭头查看比较 </p>
<h1 id="对特定条件的断点进行调试"><a href="#对特定条件的断点进行调试" class="headerlink" title="对特定条件的断点进行调试"></a>对特定条件的断点进行调试</h1></li>
<li><p>单击附着在左侧的红色端点 然后会出现对话框,点击Condition输入框中填写相关的调试的条件即可。</p>
<h1 id="SDK扩展工具"><a href="#SDK扩展工具" class="headerlink" title="SDK扩展工具"></a>SDK扩展工具</h1></li>
<li>Android设备监控器 Android Device Monitor:<h2 id="1-分配跟踪器"><a href="#1-分配跟踪器" class="headerlink" title="1.分配跟踪器"></a>1.分配跟踪器</h2><h2 id="2-层次查看器"><a href="#2-层次查看器" class="headerlink" title="2.层次查看器"></a>2.层次查看器</h2><h3 id="3-内存监视器"><a href="#3-内存监视器" class="headerlink" title="3.内存监视器"></a>3.内存监视器</h3><h3 id="4"><a href="#4" class="headerlink" title="4."></a>4.</h3></li>
</ul>
]]></content>
</entry>
<entry>
<title><![CDATA[我的书单]]></title>
<url>http://yoursite.com/2017/02/05/%E6%88%91%E7%9A%84%E4%B9%A6%E5%8D%95/</url>
<content type="html"><![CDATA[<h1 id="1月份"><a href="#1月份" class="headerlink" title="1月份"></a>1月份</h1><ul>
<li>黑客与画家 {已读完}</li>
</ul>
<h1 id="2月份"><a href="#2月份" class="headerlink" title="2月份"></a>2月份</h1><ul>
<li>穷爸爸富爸爸 {已读完}</li>
<li>当呼吸化为空气 {已读完}</li>
<li>Java特种兵</li>
<li>Android开发高手进阶 </li>
<li>Android艺术开发探索 {已读完}</li>
<li>软件调试艺术</li>
</ul>
]]></content>
</entry>
<entry>
<title><![CDATA[1月总结]]></title>
<url>http://yoursite.com/2017/02/02/1%E6%9C%88%E6%80%BB%E7%BB%93/</url>
<content type="html"><![CDATA[<p> 又到了回顾上个月的总结和目标完成的情况了。1月参与了公司涂鸦智能2.0项目的研发。在开发的过程中,发现自己踩了很多的坑,周边的大牛也给了很多的指点,走了很多弯路,在走弯路的过程中,有些地方还是值得引起重视的。1.个人习惯问题:在使用工具的时候,不熟练:1.AndroidStudio相关的快捷键没有形成体系化。2.研发过程中有些基础相关的知识还需要巩固:例如Android5.0新推出的组件:CoordnatorLayout,RecyclerView的使用,封装通用的RecyclerView的Adapter。在主页开发中,探索使用了两种方案:使用NestedScrollView嵌套RecyclerView的方式去实现。熟悉和掌握了MVP设计模式中的一些基本原理,开发中又学习了动画相关的内容。使用了CardView,碰到了很多低版本手机的兼容性问题。幸好在同事的帮助下,在复杂的布局中,通过查看源代码方式去一步步分析问题的原因,曲曲折折走了很多弯路,结果还算是整出了一个产品,可以提测,发现效果和预计的相差较大。 最后整理了一些文案,简单的回顾了一些LInux命令,拾起了将近1年未碰的LInux命令。总之一句话:后期回顾整个过程,发现很零散,自己前期在开发中,没有一个很明确的目标,我要做成什么样子,最终达到什么样的目标。再向目标靠近的时候,需要什么样的知识,如何去整理归纳这些知识,达到系统化,让自己在工作中 游刃有余。后来和领导交流了许多,发现自己在定制目标之前,应该有一个很详细的时间安排计划,让自己落实到每个细小点,然后采用todolist的方式,各个击破,在开始做项目之前,就应该做到了解自己,自己还有什么知识是欠缺的,需要恶补一下。最最重要的一点是:需要把学习的时间也纳入到计划中去。也许在项目未开始之前,知道自己欠缺的情况下,我可以单独的拿出一整天时间去学习这些知识,然后就会发现:实际开发中,因为之前自己做了充足的准备,碰到问题解决问题的时候才会游刃有余。这样也就不会有慌乱的感觉了。所以,知道了自己的不足,就应该立刻行动起来。在2月份的时候,应该让自己有个完整的规划。否则当deadline到来的时候,发现自己精力和体力已经不足以维持最后的研发任务,整个项目质量下降不说,还会让自己陷入了无限的恶性循环中。<br> 本月自己根据项目的需求,自己回顾了自定义组件相关的基础知识,结合动画和RecyclerView,自己写了一个运用自定义组件和动画知识加载RecyclerView头部动画的案例,有些简陋,但是整个练习的过程,对数学知识,Canvas绘画机制,RecyclerView如何在不破坏原有Adapter基础上添加扩展性能的知识有了整体的运用。本月将继续维护此项目:添加如下支持:和风api的集成,Retrofit网络访问库的集成,使用RxJava做相关线程切换。使用MVP设计模式对业务逻辑进行剥离。动画流畅性优化。[<a href="https://github.com/weipingQin/RecyclerViewProject" target="_blank" rel="external">https://github.com/weipingQin/RecyclerViewProject</a>]<br>总之,来到了涂鸦,我发现一点:每天进步一点点,要让自己快速成长,就必须知道自己的不足,对自己有更高的要求,哪块知识不足就补充哪块的短板。实践才能出真知,在实际开发中,不要对碰到的问题心存恐惧,要学会踩坑,踩过的坑要整理要总结。1月的终点应该要是2月目标的起点,每个月都让自己不断的进步,一年下来你发现:你也会慢慢的有所收获。</p>
]]></content>
</entry>
<entry>
<title><![CDATA[Android动画学习]]></title>
<url>http://yoursite.com/2017/01/29/Android%E5%8A%A8%E7%94%BB%E5%AD%A6%E4%B9%A0/</url>
<content type="html"><![CDATA[<p>1月的工作中有涉及到动画方面的知识,项目上线了,现在回顾和总结一下涉及到的动画知识和实际解决问题方面的经验。</p>
<p>首先拿到两个小的需求:实现一个Wifi扫描效果动画和一个按钮动画。<br>效果如下图所示:</p>
<p>首先分析一下这个动画的组成:<br>动画分两层:外层是一个放大的动画,内层是一个逐帧动画。外部不断的放大然后复原,内部是一个图片的轮换变化,内部的动画还包含一个渐变的过程。<br>内部的逐帧动画是由若干张图片构成,可以采用SVG的方式来进行加载,放到一个xml文件中去实现 </p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div></pre></td><td class="code"><pre><div class="line"><?xml version="1.0" encoding="utf-8"?></div><div class="line"><animation-list xmlns:android="http://schemas.android.com/apk/res/android"</div><div class="line"> android:oneshot="false"></div><div class="line"></div><div class="line"> <item</div><div class="line"> android:drawable="@drawable/wifi_1"</div><div class="line"> android:duration="400" /></div><div class="line"> <item</div><div class="line"> android:drawable="@drawable/wifi_2"</div><div class="line"> android:fromAlpha = "0.2"</div><div class="line"> android:toAlpha = "0.0"</div><div class="line"> android:duration="400" /></div><div class="line"> <item</div><div class="line"> android:drawable="@drawable/wifi_3"</div><div class="line"> android:fromAlpha = "0.2"</div><div class="line"> android:toAlpha = "0.0"</div><div class="line"> android:duration="400" /></div><div class="line"></div><div class="line"> <item</div><div class="line"> android:drawable="@drawable/wifi_4"</div><div class="line"> android:fromAlpha = "0.2"</div><div class="line"> android:toAlpha = "0.0"</div><div class="line"> android:duration="400" /></div><div class="line"></div><div class="line"></animation-list></div></pre></td></tr></table></figure>]]></content>
</entry>
<entry>
<title></title>
<url>http://yoursite.com/2017/01/25/Gradle%E5%B7%A5%E5%85%B7%E5%AD%A6%E4%B9%A0/</url>
<content type="html"></content>
</entry>
<entry>
<title><![CDATA[开发经验汇总]]></title>
<url>http://yoursite.com/2017/01/22/%E5%BC%80%E5%8F%91%E7%BB%8F%E9%AA%8C/</url>
<content type="html"><![CDATA[<p>1.时间转化中的一个小细节 传入的值是int 需要转化成long类型不能直接修改相应的函数<br>也是一个习惯 理解的到位<br>比如 a * 1000L 转化成long类型 </p>
<p>2.分支合并和创建的时候需要注意 符合git-flow的规范。比如我在/release_版本号/下需要修改某个bug 那可以在改分支的底部再去建立一个debug分支,需要你把你的debug分支merge到release下的某一个版本号下去。然后去删除掉该版本下对应的debug子分支。这样做的一个好处是也使得代码更加的规范化 </p>
<p>3.开发中遇到的问题和解决方案:<br>今天开发中遇到比较多的问题<br>1.在开发相关滑动的折叠ToolBar的问题时,使用了ToolBarLayout和CoordinatorLayout应该是一个控制器,用来控制他内部的相关子View。作为顶层布局。协调子布局的相关联动。<br>在使用的时候使用字符串app:layout_behavior=”@string/appbar_scrolling_view_behavior”该字符串对应的是 AppBarLayout.ScrollingViewBehavior.<br>Layout behavor<br>一般的情况都是ToolBar需要进行相应的折叠,但是我自己的项目中遇到的问题是如何让ToollBar固定,但是下面的那一个List进行滑动。后来我想折叠的是上面的那块Toolbar,于是可以反过来,设置layout_behavior为滚动。参考资料:[<a href="http://www.jianshu.com/p/7caa5f4f49bd" target="_blank" rel="external">http://www.jianshu.com/p/7caa5f4f49bd</a>] </p>
<p>解决Toolbar固定不动的问题:解决这个问题的时候 只要设置下面的View的 layout_behavor<br>app:layout_scrollFlags=”scroll|exitUntilCollapsed”设置成滚动状态就OK了</p>
<p>4.设置app:layout_behavor的时候应该注意,只有是CoordinatorLayout的直接子View才能启到相应的作用否则设置滚动事没有任何作用的。</p>
<p>5.在设置布局的时候 ,需要让RecycleView进行滚动,这个时候需要在RecycleView的外面包ScrollView。当然还有一个下来刷新的SwipeRefreshLayout 需要嵌套在ScrollView的外面。当然这一堆是事件冲突处理也是很麻烦的。所以最好使用NestedScrollView 谷歌已经帮你处理好了相应的事件</p>
<p>6.参考资料:[<a href="http://crazyandcoder.github.io/2016/07/18/android%20%E7%96%91%E9%9A%BE%E6%9D%82%E7%97%87%E2%80%94NestedScrollView%20%E5%B5%8C%E5%A5%97%20RecyclerView%E6%BB%91%E5%8A%A8%E5%8D%A1%E9%A1%BF%E9%97%AE%E9%A2%98/]NestedScrollView嵌套RecycleView滑动卡顿问题" target="_blank" rel="external">http://crazyandcoder.github.io/2016/07/18/android%20%E7%96%91%E9%9A%BE%E6%9D%82%E7%97%87%E2%80%94NestedScrollView%20%E5%B5%8C%E5%A5%97%20RecyclerView%E6%BB%91%E5%8A%A8%E5%8D%A1%E9%A1%BF%E9%97%AE%E9%A2%98/]NestedScrollView嵌套RecycleView滑动卡顿问题</a> </p>
<p>7.今天还有一个问题:我将RecycleView放到NestedScrollView里面去之后,发现RecycleView只显示了其中的第一条数据。于是你可以将LayoutManager进行重写,指定一个LayoutManager放到RecycleView去。[<a href="http://www.cnblogs.com/woaixingxing/p/6098726.html" target="_blank" rel="external">http://www.cnblogs.com/woaixingxing/p/6098726.html</a>]</p>
<p>8 重写布局的过程中还碰到了崩溃 Java.lang.IndexOutOfBoundsException.这是由于SwipeRefreshLayout嵌套在RecycleView里面导致的问题。</p>
<p>9项目中碰到了很多的事件冲突导致的问题:我自己自定义写了一个可以折叠的GridView。折叠的时候发现,当我点击加载更多的时候,发现:这个GridView无法折叠了。原因是GridView嵌套在NestedScrollView 事件是由他的父容器向子容器去传递的,现在父容器消费掉了这个滑动的事件,子容器也就得不到相应了。那就必须把这个事件拦截处理掉。</p>
<p>=======================</p>
<p>2017-1-10<br>今日开发总结 今天主要在开发NestedScrollView 嵌套RecycleView的时候碰到了一些事件点击问题<br>1.当自己写的一个自定义的组件的UI和RecycleView组合起来嵌套在NestedScrollView里,发现点击不了RecycleView的每一个item。后来查找原因找到了原来点击事件有问题:不应该在onCreateViewHolder中 应该在onBindViewHolder中注册 </p>
<p>2.使用cardView来代替直接写一个带有shape.xml做背景的View。这样的好处显而易见:shae.xml要写一堆很难管理和维护,但是cardView直接可以设置圆角而且又是系统推荐的方式,那何乐而不为呢。当然用一个组件他有优点肯定也有缺点。</p>
<p>3.注意:RecycleView进行监听每一个item的注册事件的时候,需要单独的去写一个监听的接口来实现,而并不能像ListView那样setOnItemClickListener。</p>
<p>4.设置透明的Toolbar的时候,其实需要注意的一点是:其实自定义来写整个Layout的时候 可以在外包一层AppLayout然后设置这个layout的backgroud就可以了 </p>
<p>5.还有一个小的细节点:我从别人那边合并分支了之后,碰到RecyleView的那个包导入了但是没法编译了,其实是工具的使用问题:在顶部有一个try-again 然后点击菜单中的run-make model 再make project 就好了。</p>
<p>6.今天同事有提到:在做UI开发的时候应该需要按照标准去实施,然后让UI的同事去提测。不要自己去用自己的标准去做。这样以后调试会很麻烦。看不懂Sketch就要问。然后测试的时候千万别忘记用低分辨率的手机也去测试一下,不要留下任何的问题。把事情做的完美。</p>
<p>7.图片的资源文件应该压缩一下[<a href="https://tinypng.com/" target="_blank" rel="external">https://tinypng.com/</a>] 压缩的时候要注意这个工具只能传20张图片,不要重复压缩或者这个细节没注意到压缩了两次或者漏掉压缩</p>
<p>8.其实每天都可以发现 做了很多重复的劳动:将RecycleView做成一个模板 参考资料:<br>[<a href="http://www.jianshu.com/p/e8ac0c284601" target="_blank" rel="external">http://www.jianshu.com/p/e8ac0c284601</a>]</p>
<p>9.RecycleView资料[<a href="http://blog.csdn.net/dl10210950/article/details/52918019" target="_blank" rel="external">http://blog.csdn.net/dl10210950/article/details/52918019</a>]</p>
<p>============================================================================</p>
<p>2017-1-12 开发经验汇总<br>1.今天遇到在ScrollView里面嵌套一个View和RecycleView的时候,下面的RecycleView会把上面的View枪战掉,导致把整块View上推。原因:因为RecycleView把ScollView的焦点抢占掉了。导致RecycleView获取了焦点。这个问题和一个EditText获取了焦点会自动弹出软键盘一样的道理:当时是让EditText的父容器获取焦点。<br>【解决方案】:当使用EditText的时候 会自动弹出软键盘 影响客户体验 这个时候让父容器获得焦点就可以完美解决这个问题<br>android:focusable=”true”<br>android:focusableInTouchMode=”true” </p>
<p>2.开发技巧:每次类很多的情况下一个个找非常繁琐:可以按2下Shift键,然后查找,再在左侧的菜单栏去选择那个小圆圈的按钮。可以直接定位到相关的页面上去。</p>
<p>==============================================================================</p>
<p>2017-1-13 开发经验汇总 </p>
<p>1.整理资源包的时候:首先去master上去更新代码,更新到最新的代码。然后在新建一个teststring分支,将Master上的代码合并上去,接着将最新的资源文件去替换,删除掉多余的别的国家的语言资源包,如果少了文字将编译不通过。然后补充。接着再切换到master分支补充完整,将teststring分支删除掉 </p>
<p>2.资源打包:打开build菜单栏———>选择Select Build Variants 其中打包tuyasmart 里的有一个 Build Variant 选择 onLineRelease Debug和Release的区别就是证书不一样 点击build生成apk文件 apk的路径在项目名称下—-build —-outputs </p>
<p>===============================================================================</p>
<p>2017-1-14 开发经验总结 </p>
<p>1.实现一个功能:显示离线设备的数量,可以在MVP的View接口上定义一个方法,然后以回调的形式去拿到他,刷新UI。不要去定义一个全局变量,这样会导致很多问题。不要以设置变量,将逻辑处理完之后,主页Fragment或者Activity直接拿到回调,然后刷新UI。</p>
<p>2.AppBarLayout会出现阴影的效果,影响UI的开发体验。在AppBarLayout中增加标签:<br>app:elevation = “0dp”达到了适配的效果。<br>参考资料[<a href="http://blog.csdn.net/dreamsever/article/details/52672739" target="_blank" rel="external">http://blog.csdn.net/dreamsever/article/details/52672739</a>]</p>
<p>3.可以将变量用%d一串字符来表示 使用String.format()的方式 注意占位符是在后面的 不要搞错 %d表示的是数字 %s是字符 </p>
<p>===============================================================================</p>
<p>2017-1-16开发经验总结<br>1.今天发现在NestedScrollView中嵌套RecycleView导致了滑动的冲突,效率很低。这个时候需要去实现另外一套解决方案。发现在Adapter扩展</p>
<p>===============================================================================</p>
<p>2017-1-19开发经验<br>1.开发中有遇到RecycleView的headView设置的时候会出现布局设置了match_parent,实际在放到headView中的时候会遇到问题<br>[<a href="http://stackoverflow.com/questions/30691150/match-parent-width-does-not-work-in-recyclerview" target="_blank" rel="external">http://stackoverflow.com/questions/30691150/match-parent-width-does-not-work-in-recyclerview</a>]</p>
<p>2017-1-21 开发经验<br>1.今天发现首页需要改一个布局的需求:首页在更改布局的时候,居然出现用CardView 在低版本上有个色块,需要去掉。找布局的原因不是很好找。有一个Android的工具AndroidMonitor。工具的不会使用导致了效率的下降。</p>
<p>2.每次修改程序之后,都要编译会很慢。这个时候应该选择debug模式。在Android buildVariants里选择 Build Variant中的 PreviewDebug。这样每次都不会重新编译了。</p>
<p>3.今天和领导聊到工作效率的问题:1.专业技能只能靠自己去提升基本功。包括数据结构,Java基础,自己去看thinking in java. 2.时间评估:将学习的时间也要评估进去。而且每一个细节都要抓的很紧,时间点的落实应该是落实到每一个细节中。整理归纳。时间的评估和需求的整理也是一个迭代的过程。本项目结束之后,需要总结整理,时间的漏洞在哪里。<br>下次制定目标时候,作为参考。当然自己在执行中严格把控好时间,若是到了第三个节点发现一个问题卡住了,应该及时去沟通交流。每月目标定制的时候,需要交流想法,执行中所遇到的坑多踩,多去总结。3.客户体验这一块,参考谷歌原生的APP,去做一次调研,APP的设计好处,交互流程。需要自定义组件。4.知识的提前储备:明年公司的业务主要偏向于摄像头和蓝牙两块重点知识提前储备。</p>
]]></content>
</entry>
<entry>
<title><![CDATA[Hexo博客搭建常见问题]]></title>
<url>http://yoursite.com/2017/01/15/hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/</url>
<content type="html"><![CDATA[<p>1.今天碰到了一个问题:hexo博客搭建的时候需要在:后面加一个空格[<a href="https://xuanwo.org/2014/08/14/hexo-usual-problem/" target="_blank" rel="external">https://xuanwo.org/2014/08/14/hexo-usual-problem/</a></p>
<h2 id="2-给文章添加标题"><a href="#2-给文章添加标题" class="headerlink" title="2.给文章添加标题:"></a>2.给文章添加标题:</h2><h2 id="title-XXX"><a href="#title-XXX" class="headerlink" title="title:XXX"></a>title:XXX</h2><p>设置标题 </p>
<p>注意:别忘记 title: 冒号后面有空格 </p>
<p>3.hexo博客如何插入图片:<br>使用markdown语法:<br>(1) 使用本地路径:在hexo/source目录下新建一个img文件夹,将图片放入该文件夹下,插入图片时链接即为/img/图片名称。<br>(2) 使用微博图床,地址<a href="http://weibotuchuang.sinaapp.com/,将图片拖入区域中,会生成图片的URL,这就是链接地址。" target="_blank" rel="external">http://weibotuchuang.sinaapp.com/,将图片拖入区域中,会生成图片的URL,这就是链接地址。</a></p>
<p>test:<br><img src="/img/test.png" alt="test"></p>
]]></content>
</entry>
<entry>
<title><![CDATA[Hello World]]></title>
<url>http://yoursite.com/2017/01/15/hello-world/</url>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="external">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="external">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="external">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="external">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo new <span class="string">"My New Post"</span></div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="external">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo server</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="external">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo generate</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="external">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo deploy</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/deployment.html" target="_blank" rel="external">Deployment</a></p>
]]></content>
</entry>
<entry>
<title><![CDATA[代码规范]]></title>
<url>http://yoursite.com/2017/01/14/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/</url>
<content type="html"><![CDATA[<p>同事在项目中指出了很多代码规范的问题,很值得引起重视:</p>
<p>有些逻辑是业务模块的话,不要写在公共的utils里面,另外变量命名也要规范起来,不要随意命名。1、全局变量首字母已m开头,数据bean除外。<br>2、静态变量全部大写已S开头,单词间采用下划线分隔。<br>3、局部变量首字母小写。<br>4、全局变量和局部变量变量采用驼峰法,尽量简洁功能明确。</p>
]]></content>
</entry>
<entry>
<title><![CDATA[VIM使用技巧]]></title>
<url>http://yoursite.com/2017/01/12/VIM%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/</url>
<content type="html"><![CDATA[<p>1.插入字符 {i a o O I A}<br>{i 在光标左侧插入正文<br> a 在光标右侧插入正文<br> o 在光标所在行的下一行添加新行<br> O 在光标所在行的上一行添加新行<br> I 在光标所在行的开头插入<br> A 在光标所在行的末尾插入}</p>
<p>2.退出模式: ESC </p>
<p>3.搜索模式: / 【使用/进行搜索】</p>
<p>相关资料补充:使用VIM打造IDE[<a href="http://blog.csdn.net/wooin/article/details/1858917" target="_blank" rel="external">http://blog.csdn.net/wooin/article/details/1858917</a>]</p>
<p>4.跳转到文章的最后一行操作:shift+G 跳转最后一行,按下O在最后一行的下一行插入 </p>
]]></content>
</entry>
<entry>
<title><![CDATA[使用freeline增快AndroidStudio的编译速度]]></title>
<url>http://yoursite.com/2017/01/07/%E4%BD%BF%E7%94%A8Freeline%E6%8F%90%E9%AB%98%E7%BC%96%E8%AF%91%E6%95%88%E7%8E%87/</url>
<content type="html"><![CDATA[<p>现在用AndroidStudio的时候 用Gradle进行项目构建实在是太慢了,据说蚂蚁金服出了一个freeline的构建会使得项目构建速度快很多,于是今天尝试了一下。</p>
<p>1.首先很重要的是你必须要去配置你的AndroidSDK,千万不要忘记了,今天配置SDK的时候遇到了很坑的问题。<br>出现了问题:<br><code>mac 配置环境变量出现export</code>=’ not a valid identifier<code>`解决方法:很简单,原来是配置SDK的时候 = 左右两边多了空格</code><br>2.freeline首先要进行初始化 freeline init 提示配置失败需要升级到./gradlew initFreeline<br>3.<code>编译找不到project_description.json文件</code><br><code>解决方法:执行 ./gradlew checkBeforeCleanBuild</code><br>4.<code>下载更新的时候一直显示0%</code><br><code>使用命令 gradle initFreeline -Pmirror (建议直接使用这个) 加上这个参数 -Pmirror优先访问国内的镜像</code><br>5.第一次编译的时候全量编译<br><code>python freeline.py -f</code><br>6.调试应用的时候 使用<br><code>python freeline.py -d</code><br>7.参考资料[<a href="http://www.jianshu.com/p/46418dd38218" target="_blank" rel="external">http://www.jianshu.com/p/46418dd38218</a>]</p>
]]></content>
</entry>
<entry>
<title><![CDATA[开发中的小习惯]]></title>
<url>http://yoursite.com/2017/01/05/%E5%BC%80%E5%8F%91%E4%B8%AD%E7%94%9F%E6%B4%BB%E4%B8%AD%E7%9A%84%E5%B0%8F%E4%B9%A0%E6%83%AF/</url>
<content type="html"><![CDATA[<p>开发中养成一些小的习惯可以节省很多的时间<br>1.比如我们在发送代码文件的时候,把build文件删除掉再发给别人,这样可以使得安装包边的很小 很容易传输 而且不会造成编中不兼容的问题</p>
<p>2.</p>
]]></content>
</entry>
<entry>
<title><![CDATA[Markdown常用语法]]></title>
<url>http://yoursite.com/2017/01/05/markdown%E5%B8%B8%E7%94%A8%E8%AF%AD%E6%B3%95%E5%9B%9E%E9%A1%BE/</url>
<content type="html"><![CDATA[<p>由于现在公司要主导推技术分享和相关博客的整理,所以就回顾一下markdown语言 </p>
<ol>
<li>标题的定义 # 一级标题 ## 二级标题 ### 三级标题 </li>
<li><blockquote>
<p>表示引用文字 </p>
</blockquote>
</li>
<li>图片与链接【重点】 <img src="{ImgCap}{/ImgCap}" alt=""><br>链接 <a href=""></a> 比如插入一个图片 <img src="http://mouapp.com/Mou_128.png" alt="Mou icon"><br>4.表格比较麻烦<br>| Tables | Are | Cool |<br>| ————- |:————-:| —–:|<br>| col 3 is | right-aligned | $1600 |<br>| col 2 is | centered | $12 |<br>| zebra stripes | are neat | $1 |</li>
</ol>
<p>5代码框去引用代码,使用`` 包含起来就OK<br>6.使用<em>表示列表,例如 </em><a href="http://baidu.com" target="_blank" rel="external">小众软件</a> 其实对应的HTML语法就是 <li><a href="www.baidu.com">小众软件</a></li></p>
]]></content>
</entry>
<entry>
<title><![CDATA[搭建Hexo博客中遇到的问题]]></title>
<url>http://yoursite.com/2017/01/04/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BAgithub%E5%8D%9A%E5%AE%A2/</url>
<content type="html"><![CDATA[<p>搭建github博客采用hexo来搭建静态博客</p>
<p>参考资料[<a href="https://wsgzao.github.io/post/hexo-guide/#了解Hexo" target="_blank" rel="external">https://wsgzao.github.io/post/hexo-guide/#了解Hexo</a>]</p>
<p>2.安装Hexo<br>npm install hexo-cli -g<br>npm install hexo hexo –save</p>
<p>3.初始化hexo<br>$ hexo init <folder><br>$ cd <folder><br>$ npm install</folder></folder></p>
<p>4.预览 hexo server 成功之后可以登录 localhost:4000</p>
<p>5.简写命令<br> hexo n 生成文章<br> hexo s 本地发布预览效果<br> hexo g 生成public 静态文件</p>
<p>6.我喜欢用我自己觉得喜欢的样式来进行装饰<br> 使用方法参考[<a href="http://moxfive.coding.me/yelee/1.Getting-Started/i18n.html" target="_blank" rel="external">http://moxfive.coding.me/yelee/1.Getting-Started/i18n.html</a>]</p>
<p>要点:1.首先 git clone 下来主题<br>2.重点的重点:需要配置 _config.yml 需要指定theme的来源<br>然后要执行 这个命令 hexo clean && hexo s 不要忘记</p>
<p>在github上建立一个仓库 username.github.io为仓库名<br>然后切换到所在的博客的目录下使用命令hexo g 生成public文件夹 </p>
<p>【重点】特别注意生成了public文件夹之后 你需要将public文件夹下面的所有的静态资源文件放入到刚才建立的仓库下去 然后提交到github仓库上去<br>访问的URL[weipingQin.github.io]</p>
<p><a href="http://moxfive.coding.me/yelee/1.Getting-Started/i18n.html" target="_blank" rel="external">http://moxfive.coding.me/yelee/1.Getting-Started/i18n.html</a></p>
]]></content>
</entry>
<entry>
<title><![CDATA[React_Native环境搭建]]></title>
<url>http://yoursite.com/2017/01/04/React_native%E5%AD%A6%E4%B9%A0/</url>
<content type="html"></content>
</entry>
<entry>
<title><![CDATA[配置Github博客]]></title>
<url>http://yoursite.com/2017/01/04/%E9%85%8D%E7%BD%AEgithub%E7%8E%AF%E5%A2%83%E5%91%BD%E4%BB%A4/</url>
<content type="html"><![CDATA[<p>1.配置github: 先设置用户名和信息<br>git config –global user.name “weipingQin”<br>git config –global user.email “995308963@qq.com”</p>
<p>2.生成key命令<br>ssh-keygen -t rsa -C “995308963@qq.com”</p>
<p>3.非常重要的一点:将本地的密钥识别<br>ssh-add ~/.ssh/id_github_rsa</p>
<p>4.执行命令 看是否识别<br>ssh -T git@github.com</p>
<p>5.出现 welcome to Git@github 表示成功 </p>
<p>6.其他资料[<a href="http://www.jianshu.com/p/fbbf6efb50ba" target="_blank" rel="external">http://www.jianshu.com/p/fbbf6efb50ba</a>]</p>
]]></content>
</entry>
</search>