参考GitHub 中
RESideMenu
https://github.com/romaonthego/RESideMenu
https://github.com/kyze8439690/ResideLayout
https://github.com/SpecialCyCi/AndroidResideMenu
Android仿QQ5.0侧滑菜单ResideMenu
最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异。想必大家都已经见识过了。
为了不重复发明轮子,先去github上面搜索了一番。
发现了几个类似的,但是还是有一些不同。
下面是搜索到的类似的开源项目。
RESideMenu(ios项目)
https://github.com/romaonthego/RESideMenu
AndroidResideMenu
https://github.com/SpecialCyCi/AndroidResideMenu
ResideLayout
https://github.com/kyze8439690/ResideLayout
研究了一下这些开源项目的源代码。感觉并不是特别适用于我们自己的项目。所以,我自己又研究了一下。最后的效果如下。当然了,还有很多可以优化的地方,后续再慢慢优化。
我是基于SlidingMenu库进行的二次修改,增加了一些转场动画。
大家对这个库应该比较熟悉,下面是SlidingMenu的github地址。非常感谢Jeremy Feinstein提供的这个库,让广大Android Developers省去了非常多的麻烦。
https://github.com/jfeinstein10/SlidingMenu
备注:SlidingMenu使用了SherlockActionBar这个库,配置起来会比较麻烦,在文章的最后我会把demo上传,供大家下载,减去了大家自己配置项目的麻烦。
我主要修改了2个类,SlidingMenu.java和CustonViewAbove.java,只是增加了一些功能,并没有修改原本的功能。
做了修改的地方,我做了中文注释,其实实现很简单,几行代码而已。推荐大家下载Demo,然后自己调试一下。Demo的下载地址在文章的末尾。
废话不多说,直接上代码,略微有点长。
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1
</div>
<div class="line number2 index1 alt1">
2
</div>
<div class="line number3 index2 alt2">
3
</div>
<div class="line number4 index3 alt1">
4
</div>
<div class="line number5 index4 alt2">
5
</div>
<div class="line number6 index5 alt1">
6
</div>
<div class="line number7 index6 alt2">
7
</div>
<div class="line number8 index7 alt1">
8
</div>
<div class="line number9 index8 alt2">
9
</div>
<div class="line number10 index9 alt1">
10
</div>
<div class="line number11 index10 alt2">
11
</div>
<div class="line number12 index11 alt1">
12
</div>
<div class="line number13 index12 alt2">
13
</div>
<div class="line number14 index13 alt1">
14
</div>
<div class="line number15 index14 alt2">
15
</div>
<div class="line number16 index15 alt1">
16
</div>
<div class="line number17 index16 alt2">
17
</div>
<div class="line number18 index17 alt1">
18
</div>
<div class="line number19 index18 alt2">
19
</div>
<div class="line number20 index19 alt1">
20
</div>
<div class="line number21 index20 alt2">
21
</div>
<div class="line number22 index21 alt1">
22
</div>
<div class="line number23 index22 alt2">
23
</div>
<div class="line number24 index23 alt1">
24
</div>
<div class="line number25 index24 alt2">
25
</div>
<div class="line number26 index25 alt1">
26
</div>
<div class="line number27 index26 alt2">
27
</div>
<div class="line number28 index27 alt1">
28
</div>
<div class="line number29 index28 alt2">
29
</div>
<div class="line number30 index29 alt1">
30
</div>
<div class="line number31 index30 alt2">
31
</div>
<div class="line number32 index31 alt1">
32
</div>
<div class="line number33 index32 alt2">
33
</div>
<div class="line number34 index33 alt1">
34
</div>
<div class="line number35 index34 alt2">
35
</div>
<div class="line number36 index35 alt1">
36
</div>
<div class="line number37 index36 alt2">
37
</div>
<div class="line number38 index37 alt1">
38
</div>
<div class="line number39 index38 alt2">
39
</div>
<div class="line number40 index39 alt1">
40
</div>
<div class="line number41 index40 alt2">
41
</div>
<div class="line number42 index41 alt1">
42
</div>
<div class="line number43 index42 alt2">
43
</div>
<div class="line number44 index43 alt1">
44
</div>
<div class="line number45 index44 alt2">
45
</div>
<div class="line number46 index45 alt1">
46
</div>
<div class="line number47 index46 alt2">
47
</div>
<div class="line number48 index47 alt1">
48
</div>
<div class="line number49 index48 alt2">
49
</div>
<div class="line number50 index49 alt1">
50
</div>
<div class="line number51 index50 alt2">
51
</div>
<div class="line number52 index51 alt1">
52
</div>
<div class="line number53 index52 alt2">
53
</div>
<div class="line number54 index53 alt1">
54
</div>
<div class="line number55 index54 alt2">
55
</div>
<div class="line number56 index55 alt1">
56
</div>
<div class="line number57 index56 alt2">
57
</div>
<div class="line number58 index57 alt1">
58
</div>
<div class="line number59 index58 alt2">
59
</div>
<div class="line number60 index59 alt1">
60
</div>
<div class="line number61 index60 alt2">
61
</div>
<div class="line number62 index61 alt1">
62
</div>
<div class="line number63 index62 alt2">
63
</div>
<div class="line number64 index63 alt1">
64
</div>
<div class="line number65 index64 alt2">
65
</div>
<div class="line number66 index65 alt1">
66
</div>
<div class="line number67 index66 alt2">
67
</div>
<div class="line number68 index67 alt1">
68
</div>
<div class="line number69 index68 alt2">
69
</div>
<div class="line number70 index69 alt1">
70
</div>
<div class="line number71 index70 alt2">
71
</div>
<div class="line number72 index71 alt1">
72
</div>
<div class="line number73 index72 alt2">
73
</div>
<div class="line number74 index73 alt1">
74
</div>
<div class="line number75 index74 alt2">
75
</div>
<div class="line number76 index75 alt1">
76
</div>
<div class="line number77 index76 alt2">
77
</div>
<div class="line number78 index77 alt1">
78
</div>
<div class="line number79 index78 alt2">
79
</div>
<div class="line number80 index79 alt1">
80
</div>
<div class="line number81 index80 alt2">
81
</div>
<div class="line number82 index81 alt1">
82
</div>
<div class="line number83 index82 alt2">
83
</div>
<div class="line number84 index83 alt1">
84
</div>
<div class="line number85 index84 alt2">
85
</div>
<div class="line number86 index85 alt1">
86
</div>
<div class="line number87 index86 alt2">
87
</div>
<div class="line number88 index87 alt1">
88
</div>
<div class="line number89 index88 alt2">
89
</div>
<div class="line number90 index89 alt1">
90
</div>
<div class="line number91 index90 alt2">
91
</div>
<div class="line number92 index91 alt1">
92
</div>
<div class="line number93 index92 alt2">
93
</div>
<div class="line number94 index93 alt1">
94
</div>
<div class="line number95 index94 alt2">
95
</div>
<div class="line number96 index95 alt1">
96
</div>
<div class="line number97 index96 alt2">
97
</div>
<div class="line number98 index97 alt1">
98
</div>
<div class="line number99 index98 alt2">
99
</div>
<div class="line number100 index99 alt1">
100
</div>
<div class="line number101 index100 alt2">
101
</div>
<div class="line number102 index101 alt1">
102
</div>
<div class="line number103 index102 alt2">
103
</div>
<div class="line number104 index103 alt1">
104
</div>
<div class="line number105 index104 alt2">
105
</div>
<div class="line number106 index105 alt1">
106
</div>
<div class="line number107 index106 alt2">
107
</div>
<div class="line number108 index107 alt1">
108
</div>
<div class="line number109 index108 alt2">
109
</div>
<div class="line number110 index109 alt1">
110
</div>
<div class="line number111 index110 alt2">
111
</div>
<div class="line number112 index111 alt1">
112
</div>
<div class="line number113 index112 alt2">
113
</div>
<div class="line number114 index113 alt1">
114
</div>
<div class="line number115 index114 alt2">
115
</div>
<div class="line number116 index115 alt1">
116
</div>
<div class="line number117 index116 alt2">
117
</div>
<div class="line number118 index117 alt1">
118
</div>
<div class="line number119 index118 alt2">
119
</div>
<div class="line number120 index119 alt1">
120
</div>
<div class="line number121 index120 alt2">
121
</div>
<div class="line number122 index121 alt1">
122
</div>
<div class="line number123 index122 alt2">
123
</div>
<div class="line number124 index123 alt1">
124
</div>
<div class="line number125 index124 alt2">
125
</div>
<div class="line number126 index125 alt1">
126
</div>
<div class="line number127 index126 alt2">
127
</div>
<div class="line number128 index127 alt1">
128
</div>
<div class="line number129 index128 alt2">
129
</div>
<div class="line number130 index129 alt1">
130
</div>
<div class="line number131 index130 alt2">
131
</div>
<div class="line number132 index131 alt1">
132
</div>
<div class="line number133 index132 alt2">
133
</div>
<div class="line number134 index133 alt1">
134
</div>
<div class="line number135 index134 alt2">
135
</div>
<div class="line number136 index135 alt1">
136
</div>
<div class="line number137 index136 alt2">
137
</div>
<div class="line number138 index137 alt1">
138
</div>
<div class="line number139 index138 alt2">
139
</div>
<div class="line number140 index139 alt1">
140
</div>
<div class="line number141 index140 alt2">
141
</div>
<div class="line number142 index141 alt1">
142
</div>
<div class="line number143 index142 alt2">
143
</div>
<div class="line number144 index143 alt1">
144
</div>
<div class="line number145 index144 alt2">
145
</div>
<div class="line number146 index145 alt1">
146
</div>
<div class="line number147 index146 alt2">
147
</div>
<div class="line number148 index147 alt1">
148
</div>
<div class="line number149 index148 alt2">
149
</div>
<div class="line number150 index149 alt1">
150
</div>
<div class="line number151 index150 alt2">
151
</div>
<div class="line number152 index151 alt1">
152
</div>
<div class="line number153 index152 alt2">
153
</div>
<div class="line number154 index153 alt1">
154
</div>
<div class="line number155 index154 alt2">
155
</div>
<div class="line number156 index155 alt1">
156
</div>
<div class="line number157 index156 alt2">
157
</div>
<div class="line number158 index157 alt1">
158
</div>
<div class="line number159 index158 alt2">
159
</div>
<div class="line number160 index159 alt1">
160
</div>
<div class="line number161 index160 alt2">
161
</div>
<div class="line number162 index161 alt1">
162
</div>
<div class="line number163 index162 alt2">
163
</div>
<div class="line number164 index163 alt1">
164
</div>
<div class="line number165 index164 alt2">
165
</div>
<div class="line number166 index165 alt1">
166
</div>
<div class="line number167 index166 alt2">
167
</div>
<div class="line number168 index167 alt1">
168
</div>
<div class="line number169 index168 alt2">
169
</div>
<div class="line number170 index169 alt1">
170
</div>
<div class="line number171 index170 alt2">
171
</div>
<div class="line number172 index171 alt1">
172
</div>
<div class="line number173 index172 alt2">
173
</div>
<div class="line number174 index173 alt1">
174
</div>
<div class="line number175 index174 alt2">
175
</div>
<div class="line number176 index175 alt1">
176
</div>
<div class="line number177 index176 alt2">
177
</div>
<div class="line number178 index177 alt1">
178
</div>
<div class="line number179 index178 alt2">
179
</div>
<div class="line number180 index179 alt1">
180
</div>
<div class="line number181 index180 alt2">
181
</div>
<div class="line number182 index181 alt1">
182
</div>
<div class="line number183 index182 alt2">
183
</div>
<div class="line number184 index183 alt1">
184
</div>
<div class="line number185 index184 alt2">
185
</div>
<div class="line number186 index185 alt1">
186
</div>
<div class="line number187 index186 alt2">
187
</div>
<div class="line number188 index187 alt1">
188
</div>
<div class="line number189 index188 alt2">
189
</div>
<div class="line number190 index189 alt1">
190
</div>
<div class="line number191 index190 alt2">
191
</div>
<div class="line number192 index191 alt1">
192
</div>
<div class="line number193 index192 alt2">
193
</div>
<div class="line number194 index193 alt1">
194
</div>
<div class="line number195 index194 alt2">
195
</div>
<div class="line number196 index195 alt1">
196
</div>
<div class="line number197 index196 alt2">
197
</div>
<div class="line number198 index197 alt1">
198
</div>
<div class="line number199 index198 alt2">
199
</div>
<div class="line number200 index199 alt1">
200
</div>
<div class="line number201 index200 alt2">
201
</div>
<div class="line number202 index201 alt1">
202
</div>
<div class="line number203 index202 alt2">
203
</div>
<div class="line number204 index203 alt1">
204
</div>
<div class="line number205 index204 alt2">
205
</div>
<div class="line number206 index205 alt1">
206
</div>
<div class="line number207 index206 alt2">
207
</div>
<div class="line number208 index207 alt1">
208
</div>
<div class="line number209 index208 alt2">
209
</div>
<div class="line number210 index209 alt1">
210
</div>
<div class="line number211 index210 alt2">
211
</div>
<div class="line number212 index211 alt1">
212
</div>
<div class="line number213 index212 alt2">
213
</div>
<div class="line number214 index213 alt1">
214
</div>
<div class="line number215 index214 alt2">
215
</div>
<div class="line number216 index215 alt1">
216
</div>
<div class="line number217 index216 alt2">
217
</div>
<div class="line number218 index217 alt1">
218
</div>
<div class="line number219 index218 alt2">
219
</div>
<div class="line number220 index219 alt1">
220
</div>
<div class="line number221 index220 alt2">
221
</div>
<div class="line number222 index221 alt1">
222
</div>
<div class="line number223 index222 alt2">
223
</div>
<div class="line number224 index223 alt1">
224
</div>
<div class="line number225 index224 alt2">
225
</div>
<div class="line number226 index225 alt1">
226
</div>
<div class="line number227 index226 alt2">
227
</div>
<div class="line number228 index227 alt1">
228
</div>
<div class="line number229 index228 alt2">
229
</div>
<div class="line number230 index229 alt1">
230
</div>
<div class="line number231 index230 alt2">
231
</div>
<div class="line number232 index231 alt1">
232
</div>
<div class="line number233 index232 alt2">
233
</div>
<div class="line number234 index233 alt1">
234
</div>
<div class="line number235 index234 alt2">
235
</div>
<div class="line number236 index235 alt1">
236
</div>
<div class="line number237 index236 alt2">
237
</div>
<div class="line number238 index237 alt1">
238
</div>
<div class="line number239 index238 alt2">
239
</div>
<div class="line number240 index239 alt1">
240
</div>
<div class="line number241 index240 alt2">
241
</div>
<div class="line number242 index241 alt1">
242
</div>
<div class="line number243 index242 alt2">
243
</div>
<div class="line number244 index243 alt1">
244
</div>
<div class="line number245 index244 alt2">
245
</div>
<div class="line number246 index245 alt1">
246
</div>
<div class="line number247 index246 alt2">
247
</div>
<div class="line number248 index247 alt1">
248
</div>
<div class="line number249 index248 alt2">
249
</div>
<div class="line number250 index249 alt1">
250
</div>
<div class="line number251 index250 alt2">
251
</div>
<div class="line number252 index251 alt1">
252
</div>
<div class="line number253 index252 alt2">
253
</div>
<div class="line number254 index253 alt1">
254
</div>
<div class="line number255 index254 alt2">
255
</div>
<div class="line number256 index255 alt1">
256
</div>
<div class="line number257 index256 alt2">
257
</div>
<div class="line number258 index257 alt1">
258
</div>
<div class="line number259 index258 alt2">
259
</div>
<div class="line number260 index259 alt1">
260
</div>
<div class="line number261 index260 alt2">
261
</div>
<div class="line number262 index261 alt1">
262
</div>
<div class="line number263 index262 alt2">
263
</div>
<div class="line number264 index263 alt1">
264
</div>
<div class="line number265 index264 alt2">
265
</div>
<div class="line number266 index265 alt1">
266
</div>
<div class="line number267 index266 alt2">
267
</div>
<div class="line number268 index267 alt1">
268
</div>
<div class="line number269 index268 alt2">
269
</div>
<div class="line number270 index269 alt1">
270
</div>
<div class="line number271 index270 alt2">
271
</div>
<div class="line number272 index271 alt1">
272
</div>
<div class="line number273 index272 alt2">
273
</div>
<div class="line number274 index273 alt1">
274
</div>
<div class="line number275 index274 alt2">
275
</div>
<div class="line number276 index275 alt1">
276
</div>
<div class="line number277 index276 alt2">
277
</div>
<div class="line number278 index277 alt1">
278
</div>
<div class="line number279 index278 alt2">
279
</div>
<div class="line number280 index279 alt1">
280
</div>
<div class="line number281 index280 alt2">
281
</div>
<div class="line number282 index281 alt1">
282
</div>
<div class="line number283 index282 alt2">
283
</div>
<div class="line number284 index283 alt1">
284
</div>
<div class="line number285 index284 alt2">
285
</div>
<div class="line number286 index285 alt1">
286
</div>
<div class="line number287 index286 alt2">
287
</div>
<div class="line number288 index287 alt1">
288
</div>
<div class="line number289 index288 alt2">
289
</div>
<div class="line number290 index289 alt1">
290
</div>
<div class="line number291 index290 alt2">
291
</div>
<div class="line number292 index291 alt1">
292
</div>
<div class="line number293 index292 alt2">
293
</div>
<div class="line number294 index293 alt1">
294
</div>
<div class="line number295 index294 alt2">
295
</div>
<div class="line number296 index295 alt1">
296
</div>
<div class="line number297 index296 alt2">
297
</div>
<div class="line number298 index297 alt1">
298
</div>
<div class="line number299 index298 alt2">
299
</div>
<div class="line number300 index299 alt1">
300
</div>
<div class="line number301 index300 alt2">
301
</div>
<div class="line number302 index301 alt1">
302
</div>
<div class="line number303 index302 alt2">
303
</div>
<div class="line number304 index303 alt1">
304
</div>
<div class="line number305 index304 alt2">
305
</div>
<div class="line number306 index305 alt1">
306
</div>
<div class="line number307 index306 alt2">
307
</div>
<div class="line number308 index307 alt1">
308
</div>
<div class="line number309 index308 alt2">
309
</div>
<div class="line number310 index309 alt1">
310
</div>
<div class="line number311 index310 alt2">
311
</div>
<div class="line number312 index311 alt1">
312
</div>
<div class="line number313 index312 alt2">
313
</div>
<div class="line number314 index313 alt1">
314
</div>
<div class="line number315 index314 alt2">
315
</div>
<div class="line number316 index315 alt1">
316
</div>
<div class="line number317 index316 alt2">
317
</div>
<div class="line number318 index317 alt1">
318
</div>
<div class="line number319 index318 alt2">
319
</div>
<div class="line number320 index319 alt1">
320
</div>
<div class="line number321 index320 alt2">
321
</div>
<div class="line number322 index321 alt1">
322
</div>
<div class="line number323 index322 alt2">
323
</div>
<div class="line number324 index323 alt1">
324
</div>
<div class="line number325 index324 alt2">
325
</div>
<div class="line number326 index325 alt1">
326
</div>
<div class="line number327 index326 alt2">
327
</div>
<div class="line number328 index327 alt1">
328
</div>
<div class="line number329 index328 alt2">
329
</div>
<div class="line number330 index329 alt1">
330
</div>
<div class="line number331 index330 alt2">
331
</div>
<div class="line number332 index331 alt1">
332
</div>
<div class="line number333 index332 alt2">
333
</div>
<div class="line number334 index333 alt1">
334
</div>
<div class="line number335 index334 alt2">
335
</div>
<div class="line number336 index335 alt1">
336
</div>
<div class="line number337 index336 alt2">
337
</div>
<div class="line number338 index337 alt1">
338
</div>
<div class="line number339 index338 alt2">
339
</div>
<div class="line number340 index339 alt1">
340
</div>
<div class="line number341 index340 alt2">
341
</div>
<div class="line number342 index341 alt1">
342
</div>
<div class="line number343 index342 alt2">
343
</div>
<div class="line number344 index343 alt1">
344
</div>
<div class="line number345 index344 alt2">
345
</div>
<div class="line number346 index345 alt1">
346
</div>
<div class="line number347 index346 alt2">
347
</div>
<div class="line number348 index347 alt1">
348
</div>
<div class="line number349 index348 alt2">
349
</div>
<div class="line number350 index349 alt1">
350
</div>
<div class="line number351 index350 alt2">
351
</div>
<div class="line number352 index351 alt1">
352
</div>
<div class="line number353 index352 alt2">
353
</div>
<div class="line number354 index353 alt1">
354
</div>
<div class="line number355 index354 alt2">
355
</div>
<div class="line number356 index355 alt1">
356
</div>
<div class="line number357 index356 alt2">
357
</div>
<div class="line number358 index357 alt1">
358
</div>
<div class="line number359 index358 alt2">
359
</div>
<div class="line number360 index359 alt1">
360
</div>
<div class="line number361 index360 alt2">
361
</div>
<div class="line number362 index361 alt1">
362
</div>
<div class="line number363 index362 alt2">
363
</div>
<div class="line number364 index363 alt1">
364
</div>
<div class="line number365 index364 alt2">
365
</div>
<div class="line number366 index365 alt1">
366
</div>
<div class="line number367 index366 alt2">
367
</div>
<div class="line number368 index367 alt1">
368
</div>
<div class="line number369 index368 alt2">
369
</div>
<div class="line number370 index369 alt1">
370
</div>
<div class="line number371 index370 alt2">
371
</div>
<div class="line number372 index371 alt1">
372
</div>
<div class="line number373 index372 alt2">
373
</div>
<div class="line number374 index373 alt1">
374
</div>
<div class="line number375 index374 alt2">
375
</div>
<div class="line number376 index375 alt1">
376
</div>
<div class="line number377 index376 alt2">
377
</div>
<div class="line number378 index377 alt1">
378
</div>
<div class="line number379 index378 alt2">
379
</div>
<div class="line number380 index379 alt1">
380
</div>
<div class="line number381 index380 alt2">
381
</div>
<div class="line number382 index381 alt1">
382
</div>
<div class="line number383 index382 alt2">
383
</div>
<div class="line number384 index383 alt1">
384
</div>
<div class="line number385 index384 alt2">
385
</div>
<div class="line number386 index385 alt1">
386
</div>
<div class="line number387 index386 alt2">
387
</div>
<div class="line number388 index387 alt1">
388
</div>
<div class="line number389 index388 alt2">
389
</div>
<div class="line number390 index389 alt1">
390
</div>
<div class="line number391 index390 alt2">
391
</div>
<div class="line number392 index391 alt1">
392
</div>
<div class="line number393 index392 alt2">
393
</div>
<div class="line number394 index393 alt1">
394
</div>
<div class="line number395 index394 alt2">
395
</div>
<div class="line number396 index395 alt1">
396
</div>
<div class="line number397 index396 alt2">
397
</div>
<div class="line number398 index397 alt1">
398
</div>
<div class="line number399 index398 alt2">
399
</div>
<div class="line number400 index399 alt1">
400
</div>
<div class="line number401 index400 alt2">
401
</div>
<div class="line number402 index401 alt1">
402
</div>
<div class="line number403 index402 alt2">
403
</div>
<div class="line number404 index403 alt1">
404
</div>
<div class="line number405 index404 alt2">
405
</div>
<div class="line number406 index405 alt1">
406
</div>
<div class="line number407 index406 alt2">
407
</div>
<div class="line number408 index407 alt1">
408
</div>
<div class="line number409 index408 alt2">
409
</div>
<div class="line number410 index409 alt1">
410
</div>
<div class="line number411 index410 alt2">
411
</div>
<div class="line number412 index411 alt1">
412
</div>
<div class="line number413 index412 alt2">
413
</div>
<div class="line number414 index413 alt1">
414
</div>
<div class="line number415 index414 alt2">
415
</div>
<div class="line number416 index415 alt1">
416
</div>
<div class="line number417 index416 alt2">
417
</div>
<div class="line number418 index417 alt1">
418
</div>
<div class="line number419 index418 alt2">
419
</div>
<div class="line number420 index419 alt1">
420
</div>
<div class="line number421 index420 alt2">
421
</div>
<div class="line number422 index421 alt1">
422
</div>
<div class="line number423 index422 alt2">
423
</div>
<div class="line number424 index423 alt1">
424
</div>
<div class="line number425 index424 alt2">
425
</div>
<div class="line number426 index425 alt1">
426
</div>
<div class="line number427 index426 alt2">
427
</div>
<div class="line number428 index427 alt1">
428
</div>
<div class="line number429 index428 alt2">
429
</div>
<div class="line number430 index429 alt1">
430
</div>
<div class="line number431 index430 alt2">
431
</div>
<div class="line number432 index431 alt1">
432
</div>
<div class="line number433 index432 alt2">
433
</div>
<div class="line number434 index433 alt1">
434
</div>
<div class="line number435 index434 alt2">
435
</div>
<div class="line number436 index435 alt1">
436
</div>
<div class="line number437 index436 alt2">
437
</div>
<div class="line number438 index437 alt1">
438
</div>
<div class="line number439 index438 alt2">
439
</div>
<div class="line number440 index439 alt1">
440
</div>
<div class="line number441 index440 alt2">
441
</div>
<div class="line number442 index441 alt1">
442
</div>
<div class="line number443 index442 alt2">
443
</div>
<div class="line number444 index443 alt1">
444
</div>
<div class="line number445 index444 alt2">
445
</div>
<div class="line number446 index445 alt1">
446
</div>
<div class="line number447 index446 alt2">
447
</div>
<div class="line number448 index447 alt1">
448
</div>
<div class="line number449 index448 alt2">
449
</div>
<div class="line number450 index449 alt1">
450
</div>
<div class="line number451 index450 alt2">
451
</div>
<div class="line number452 index451 alt1">
452
</div>
<div class="line number453 index452 alt2">
453
</div>
<div class="line number454 index453 alt1">
454
</div>
<div class="line number455 index454 alt2">
455
</div>
<div class="line number456 index455 alt1">
456
</div>
<div class="line number457 index456 alt2">
457
</div>
<div class="line number458 index457 alt1">
458
</div>
<div class="line number459 index458 alt2">
459
</div>
<div class="line number460 index459 alt1">
460
</div>
<div class="line number461 index460 alt2">
461
</div>
<div class="line number462 index461 alt1">
462
</div>
<div class="line number463 index462 alt2">
463
</div>
<div class="line number464 index463 alt1">
464
</div>
<div class="line number465 index464 alt2">
465
</div>
<div class="line number466 index465 alt1">
466
</div>
<div class="line number467 index466 alt2">
467
</div>
<div class="line number468 index467 alt1">
468
</div>
<div class="line number469 index468 alt2">
469
</div>
<div class="line number470 index469 alt1">
470
</div>
<div class="line number471 index470 alt2">
471
</div>
<div class="line number472 index471 alt1">
472
</div>
<div class="line number473 index472 alt2">
473
</div>
<div class="line number474 index473 alt1">
474
</div>
<div class="line number475 index474 alt2">
475
</div>
<div class="line number476 index475 alt1">
476
</div>
<div class="line number477 index476 alt2">
477
</div>
<div class="line number478 index477 alt1">
478
</div>
<div class="line number479 index478 alt2">
479
</div>
<div class="line number480 index479 alt1">
480
</div>
<div class="line number481 index480 alt2">
481
</div>
<div class="line number482 index481 alt1">
482
</div>
<div class="line number483 index482 alt2">
483
</div>
<div class="line number484 index483 alt1">
484
</div>
<div class="line number485 index484 alt2">
485
</div>
<div class="line number486 index485 alt1">
486
</div>
<div class="line number487 index486 alt2">
487
</div>
<div class="line number488 index487 alt1">
488
</div>
<div class="line number489 index488 alt2">
489
</div>
<div class="line number490 index489 alt1">
490
</div>
<div class="line number491 index490 alt2">
491
</div>
<div class="line number492 index491 alt1">
492
</div>
<div class="line number493 index492 alt2">
493
</div>
<div class="line number494 index493 alt1">
494
</div>
<div class="line number495 index494 alt2">
495
</div>
<div class="line number496 index495 alt1">
496
</div>
<div class="line number497 index496 alt2">
497
</div>
<div class="line number498 index497 alt1">
498
</div>
<div class="line number499 index498 alt2">
499
</div>
<div class="line number500 index499 alt1">
500
</div>
<div class="line number501 index500 alt2">
501
</div>
<div class="line number502 index501 alt1">
502
</div>
<div class="line number503 index502 alt2">
503
</div>
<div class="line number504 index503 alt1">
504
</div>
<div class="line number505 index504 alt2">
505
</div>
<div class="line number506 index505 alt1">
506
</div>
<div class="line number507 index506 alt2">
507
</div>
<div class="line number508 index507 alt1">
508
</div>
<div class="line number509 index508 alt2">
509
</div>
<div class="line number510 index509 alt1">
510
</div>
<div class="line number511 index510 alt2">
511
</div>
<div class="line number512 index511 alt1">
512
</div>
<div class="line number513 index512 alt2">
513
</div>
<div class="line number514 index513 alt1">
514
</div>
<div class="line number515 index514 alt2">
515
</div>
<div class="line number516 index515 alt1">
516
</div>
<div class="line number517 index516 alt2">
517
</div>
<div class="line number518 index517 alt1">
518
</div>
<div class="line number519 index518 alt2">
519
</div>
<div class="line number520 index519 alt1">
520
</div>
<div class="line number521 index520 alt2">
521
</div>
<div class="line number522 index521 alt1">
522
</div>
<div class="line number523 index522 alt2">
523
</div>
<div class="line number524 index523 alt1">
524
</div>
<div class="line number525 index524 alt2">
525
</div>
<div class="line number526 index525 alt1">
526
</div>
<div class="line number527 index526 alt2">
527
</div>
<div class="line number528 index527 alt1">
528
</div>
<div class="line number529 index528 alt2">
529
</div>
<div class="line number530 index529 alt1">
530
</div>
<div class="line number531 index530 alt2">
531
</div>
<div class="line number532 index531 alt1">
532
</div>
<div class="line number533 index532 alt2">
533
</div>
<div class="line number534 index533 alt1">
534
</div>
<div class="line number535 index534 alt2">
535
</div>
<div class="line number536 index535 alt1">
536
</div>
<div class="line number537 index536 alt2">
537
</div>
<div class="line number538 index537 alt1">
538
</div>
<div class="line number539 index538 alt2">
539
</div>
<div class="line number540 index539 alt1">
540
</div>
<div class="line number541 index540 alt2">
541
</div>
<div class="line number542 index541 alt1">
542
</div>
<div class="line number543 index542 alt2">
543
</div>
<div class="line number544 index543 alt1">
544
</div>
<div class="line number545 index544 alt2">
545
</div>
<div class="line number546 index545 alt1">
546
</div>
<div class="line number547 index546 alt2">
547
</div>
<div class="line number548 index547 alt1">
548
</div>
<div class="line number549 index548 alt2">
549
</div>
<div class="line number550 index549 alt1">
550
</div>
<div class="line number551 index550 alt2">
551
</div>
<div class="line number552 index551 alt1">
552
</div>
<div class="line number553 index552 alt2">
553
</div>
<div class="line number554 index553 alt1">
554
</div>
<div class="line number555 index554 alt2">
555
</div>
<div class="line number556 index555 alt1">
556
</div>
<div class="line number557 index556 alt2">
557
</div>
<div class="line number558 index557 alt1">
558
</div>
<div class="line number559 index558 alt2">
559
</div>
<div class="line number560 index559 alt1">
560
</div>
<div class="line number561 index560 alt2">
561
</div>
<div class="line number562 index561 alt1">
562
</div>
<div class="line number563 index562 alt2">
563
</div>
<div class="line number564 index563 alt1">
564
</div>
<div class="line number565 index564 alt2">
565
</div>
<div class="line number566 index565 alt1">
566
</div>
<div class="line number567 index566 alt2">
567
</div>
<div class="line number568 index567 alt1">
568
</div>
<div class="line number569 index568 alt2">
569
</div>
<div class="line number570 index569 alt1">
570
</div>
<div class="line number571 index570 alt2">
571
</div>
<div class="line number572 index571 alt1">
572
</div>
<div class="line number573 index572 alt2">
573
</div>
<div class="line number574 index573 alt1">
574
</div>
<div class="line number575 index574 alt2">
575
</div>
<div class="line number576 index575 alt1">
576
</div>
<div class="line number577 index576 alt2">
577
</div>
<div class="line number578 index577 alt1">
578
</div>
<div class="line number579 index578 alt2">
579
</div>
<div class="line number580 index579 alt1">
580
</div>
<div class="line number581 index580 alt2">
581
</div>
<div class="line number582 index581 alt1">
582
</div>
<div class="line number583 index582 alt2">
583
</div>
<div class="line number584 index583 alt1">
584
</div>
<div class="line number585 index584 alt2">
585
</div>
<div class="line number586 index585 alt1">
586
</div>
<div class="line number587 index586 alt2">
587
</div>
<div class="line number588 index587 alt1">
588
</div>
<div class="line number589 index588 alt2">
589
</div>
<div class="line number590 index589 alt1">
590
</div>
<div class="line number591 index590 alt2">
591
</div>
<div class="line number592 index591 alt1">
592
</div>
<div class="line number593 index592 alt2">
593
</div>
<div class="line number594 index593 alt1">
594
</div>
<div class="line number595 index594 alt2">
595
</div>
<div class="line number596 index595 alt1">
596
</div>
<div class="line number597 index596 alt2">
597
</div>
<div class="line number598 index597 alt1">
598
</div>
<div class="line number599 index598 alt2">
599
</div>
<div class="line number600 index599 alt1">
600
</div>
<div class="line number601 index600 alt2">
601
</div>
<div class="line number602 index601 alt1">
602
</div>
<div class="line number603 index602 alt2">
603
</div>
<div class="line number604 index603 alt1">
604
</div>
<div class="line number605 index604 alt2">
605
</div>
<div class="line number606 index605 alt1">
606
</div>
<div class="line number607 index606 alt2">
607
</div>
<div class="line number608 index607 alt1">
608
</div>
<div class="line number609 index608 alt2">
609
</div>
<div class="line number610 index609 alt1">
610
</div>
<div class="line number611 index610 alt2">
611
</div>
<div class="line number612 index611 alt1">
612
</div>
<div class="line number613 index612 alt2">
613
</div>
<div class="line number614 index613 alt1">
614
</div>
<div class="line number615 index614 alt2">
615
</div>
<div class="line number616 index615 alt1">
616
</div>
<div class="line number617 index616 alt2">
617
</div>
<div class="line number618 index617 alt1">
618
</div>
<div class="line number619 index618 alt2">
619
</div>
<div class="line number620 index619 alt1">
620
</div>
<div class="line number621 index620 alt2">
621
</div>
<div class="line number622 index621 alt1">
622
</div>
<div class="line number623 index622 alt2">
623
</div>
<div class="line number624 index623 alt1">
624
</div>
<div class="line number625 index624 alt2">
625
</div>
<div class="line number626 index625 alt1">
626
</div>
<div class="line number627 index626 alt2">
627
</div>
<div class="line number628 index627 alt1">
628
</div>
<div class="line number629 index628 alt2">
629
</div>
<div class="line number630 index629 alt1">
630
</div>
<div class="line number631 index630 alt2">
631
</div>
<div class="line number632 index631 alt1">
632
</div>
<div class="line number633 index632 alt2">
633
</div>
<div class="line number634 index633 alt1">
634
</div>
<div class="line number635 index634 alt2">
635
</div>
<div class="line number636 index635 alt1">
636
</div>
<div class="line number637 index636 alt2">
637
</div>
<div class="line number638 index637 alt1">
638
</div>
<div class="line number639 index638 alt2">
639
</div>
<div class="line number640 index639 alt1">
640
</div>
<div class="line number641 index640 alt2">
641
</div>
<div class="line number642 index641 alt1">
642
</div>
<div class="line number643 index642 alt2">
643
</div>
<div class="line number644 index643 alt1">
644
</div>
<div class="line number645 index644 alt2">
645
</div>
<div class="line number646 index645 alt1">
646
</div>
<div class="line number647 index646 alt2">
647
</div>
<div class="line number648 index647 alt1">
648
</div>
<div class="line number649 index648 alt2">
649
</div>
<div class="line number650 index649 alt1">
650
</div>
<div class="line number651 index650 alt2">
651
</div>
<div class="line number652 index651 alt1">
652
</div>
<div class="line number653 index652 alt2">
653
</div>
<div class="line number654 index653 alt1">
654
</div>
<div class="line number655 index654 alt2">
655
</div>
<div class="line number656 index655 alt1">
656
</div>
<div class="line number657 index656 alt2">
657
</div>
<div class="line number658 index657 alt1">
658
</div>
<div class="line number659 index658 alt2">
659
</div>
<div class="line number660 index659 alt1">
660
</div>
<div class="line number661 index660 alt2">
661
</div>
<div class="line number662 index661 alt1">
662
</div>
<div class="line number663 index662 alt2">
663
</div>
<div class="line number664 index663 alt1">
664
</div>
<div class="line number665 index664 alt2">
665
</div>
<div class="line number666 index665 alt1">
666
</div>
<div class="line number667 index666 alt2">
667
</div>
<div class="line number668 index667 alt1">
668
</div>
<div class="line number669 index668 alt2">
669
</div>
<div class="line number670 index669 alt1">
670
</div>
<div class="line number671 index670 alt2">
671
</div>
<div class="line number672 index671 alt1">
672
</div>
<div class="line number673 index672 alt2">
673
</div>
<div class="line number674 index673 alt1">
674
</div>
<div class="line number675 index674 alt2">
675
</div>
<div class="line number676 index675 alt1">
676
</div>
<div class="line number677 index676 alt2">
677
</div>
<div class="line number678 index677 alt1">
678
</div>
<div class="line number679 index678 alt2">
679
</div>
<div class="line number680 index679 alt1">
680
</div>
<div class="line number681 index680 alt2">
681
</div>
<div class="line number682 index681 alt1">
682
</div>
<div class="line number683 index682 alt2">
683
</div>
<div class="line number684 index683 alt1">
684
</div>
<div class="line number685 index684 alt2">
685
</div>
<div class="line number686 index685 alt1">
686
</div>
<div class="line number687 index686 alt2">
687
</div>
<div class="line number688 index687 alt1">
688
</div>
<div class="line number689 index688 alt2">
689
</div>
<div class="line number690 index689 alt1">
690
</div>
<div class="line number691 index690 alt2">
691
</div>
<div class="line number692 index691 alt1">
692
</div>
<div class="line number693 index692 alt2">
693
</div>
<div class="line number694 index693 alt1">
694
</div>
<div class="line number695 index694 alt2">
695
</div>
<div class="line number696 index695 alt1">
696
</div>
<div class="line number697 index696 alt2">
697
</div>
<div class="line number698 index697 alt1">
698
</div>
<div class="line number699 index698 alt2">
699
</div>
<div class="line number700 index699 alt1">
700
</div>
<div class="line number701 index700 alt2">
701
</div>
<div class="line number702 index701 alt1">
702
</div>
<div class="line number703 index702 alt2">
703
</div>
<div class="line number704 index703 alt1">
704
</div>
<div class="line number705 index704 alt2">
705
</div>
<div class="line number706 index705 alt1">
706
</div>
<div class="line number707 index706 alt2">
707
</div>
<div class="line number708 index707 alt1">
708
</div>
<div class="line number709 index708 alt2">
709
</div>
<div class="line number710 index709 alt1">
710
</div>
<div class="line number711 index710 alt2">
711
</div>
<div class="line number712 index711 alt1">
712
</div>
<div class="line number713 index712 alt2">
713
</div>
<div class="line number714 index713 alt1">
714
</div>
<div class="line number715 index714 alt2">
715
</div>
<div class="line number716 index715 alt1">
716
</div>
<div class="line number717 index716 alt2">
717
</div>
<div class="line number718 index717 alt1">
718
</div>
<div class="line number719 index718 alt2">
719
</div>
<div class="line number720 index719 alt1">
720
</div>
<div class="line number721 index720 alt2">
721
</div>
<div class="line number722 index721 alt1">
722
</div>
<div class="line number723 index722 alt2">
723
</div>
<div class="line number724 index723 alt1">
724
</div>
<div class="line number725 index724 alt2">
725
</div>
<div class="line number726 index725 alt1">
726
</div>
<div class="line number727 index726 alt2">
727
</div>
<div class="line number728 index727 alt1">
728
</div>
<div class="line number729 index728 alt2">
729
</div>
<div class="line number730 index729 alt1">
730
</div>
<div class="line number731 index730 alt2">
731
</div>
<div class="line number732 index731 alt1">
732
</div>
<div class="line number733 index732 alt2">
733
</div>
<div class="line number734 index733 alt1">
734
</div>
<div class="line number735 index734 alt2">
735
</div>
<div class="line number736 index735 alt1">
736
</div>
<div class="line number737 index736 alt2">
737
</div>
<div class="line number738 index737 alt1">
738
</div>
<div class="line number739 index738 alt2">
739
</div>
<div class="line number740 index739 alt1">
740
</div>
<div class="line number741 index740 alt2">
741
</div>
<div class="line number742 index741 alt1">
742
</div>
<div class="line number743 index742 alt2">
743
</div>
<div class="line number744 index743 alt1">
744
</div>
<div class="line number745 index744 alt2">
745
</div>
<div class="line number746 index745 alt1">
746
</div>
<div class="line number747 index746 alt2">
747
</div>
<div class="line number748 index747 alt1">
748
</div>
<div class="line number749 index748 alt2">
749
</div>
<div class="line number750 index749 alt1">
750
</div>
<div class="line number751 index750 alt2">
751
</div>
<div class="line number752 index751 alt1">
752
</div>
<div class="line number753 index752 alt2">
753
</div>
<div class="line number754 index753 alt1">
754
</div>
<div class="line number755 index754 alt2">
755
</div>
<div class="line number756 index755 alt1">
756
</div>
<div class="line number757 index756 alt2">
757
</div>
<div class="line number758 index757 alt1">
758
</div>
<div class="line number759 index758 alt2">
759
</div>
<div class="line number760 index759 alt1">
760
</div>
<div class="line number761 index760 alt2">
761
</div>
<div class="line number762 index761 alt1">
762
</div>
<div class="line number763 index762 alt2">
763
</div>
<div class="line number764 index763 alt1">
764
</div>
<div class="line number765 index764 alt2">
765
</div>
<div class="line number766 index765 alt1">
766
</div>
<div class="line number767 index766 alt2">
767
</div>
<div class="line number768 index767 alt1">
768
</div>
<div class="line number769 index768 alt2">
769
</div>
<div class="line number770 index769 alt1">
770
</div>
<div class="line number771 index770 alt2">
771
</div>
<div class="line number772 index771 alt1">
772
</div>
<div class="line number773 index772 alt2">
773
</div>
<div class="line number774 index773 alt1">
774
</div>
<div class="line number775 index774 alt2">
775
</div>
<div class="line number776 index775 alt1">
776
</div>
<div class="line number777 index776 alt2">
777
</div>
<div class="line number778 index777 alt1">
778
</div>
<div class="line number779 index778 alt2">
779
</div>
<div class="line number780 index779 alt1">
780
</div>
<div class="line number781 index780 alt2">
781
</div>
<div class="line number782 index781 alt1">
782
</div>
<div class="line number783 index782 alt2">
783
</div>
<div class="line number784 index783 alt1">
784
</div>
<div class="line number785 index784 alt2">
785
</div>
<div class="line number786 index785 alt1">
786
</div>
<div class="line number787 index786 alt2">
787
</div>
<div class="line number788 index787 alt1">
788
</div>
<div class="line number789 index788 alt2">
789
</div>
<div class="line number790 index789 alt1">
790
</div>
<div class="line number791 index790 alt2">
791
</div>
<div class="line number792 index791 alt1">
792
</div>
<div class="line number793 index792 alt2">
793
</div>
<div class="line number794 index793 alt1">
794
</div>
<div class="line number795 index794 alt2">
795
</div>
<div class="line number796 index795 alt1">
796
</div>
<div class="line number797 index796 alt2">
797
</div>
<div class="line number798 index797 alt1">
798
</div>
<div class="line number799 index798 alt2">
799
</div>
<div class="line number800 index799 alt1">
800
</div>
<div class="line number801 index800 alt2">
801
</div>
<div class="line number802 index801 alt1">
802
</div>
<div class="line number803 index802 alt2">
803
</div>
<div class="line number804 index803 alt1">
804
</div>
<div class="line number805 index804 alt2">
805
</div>
<div class="line number806 index805 alt1">
806
</div>
<div class="line number807 index806 alt2">
807
</div>
<div class="line number808 index807 alt1">
808
</div>
<div class="line number809 index808 alt2">
809
</div>
<div class="line number810 index809 alt1">
810
</div>
<div class="line number811 index810 alt2">
811
</div>
<div class="line number812 index811 alt1">
812
</div>
<div class="line number813 index812 alt2">
813
</div>
<div class="line number814 index813 alt1">
814
</div>
<div class="line number815 index814 alt2">
815
</div>
<div class="line number816 index815 alt1">
816
</div>
<div class="line number817 index816 alt2">
817
</div>
<div class="line number818 index817 alt1">
818
</div>
<div class="line number819 index818 alt2">
819
</div>
<div class="line number820 index819 alt1">
820
</div>
<div class="line number821 index820 alt2">
821
</div>
<div class="line number822 index821 alt1">
822
</div>
<div class="line number823 index822 alt2">
823
</div>
<div class="line number824 index823 alt1">
824
</div>
<div class="line number825 index824 alt2">
825
</div>
<div class="line number826 index825 alt1">
826
</div>
<div class="line number827 index826 alt2">
827
</div>
<div class="line number828 index827 alt1">
828
</div>
<div class="line number829 index828 alt2">
829
</div>
<div class="line number830 index829 alt1">
830
</div>
<div class="line number831 index830 alt2">
831
</div>
<div class="line number832 index831 alt1">
832
</div>
<div class="line number833 index832 alt2">
833
</div>
<div class="line number834 index833 alt1">
834
</div>
<div class="line number835 index834 alt2">
835
</div>
<div class="line number836 index835 alt1">
836
</div>
<div class="line number837 index836 alt2">
837
</div>
<div class="line number838 index837 alt1">
838
</div>
<div class="line number839 index838 alt2">
839
</div>
<div class="line number840 index839 alt1">
840
</div>
<div class="line number841 index840 alt2">
841
</div>
<div class="line number842 index841 alt1">
842
</div>
<div class="line number843 index842 alt2">
843
</div>
<div class="line number844 index843 alt1">
844
</div>
<div class="line number845 index844 alt2">
845
</div>
<div class="line number846 index845 alt1">
846
</div>
<div class="line number847 index846 alt2">
847
</div>
<div class="line number848 index847 alt1">
848
</div>
<div class="line number849 index848 alt2">
849
</div>
<div class="line number850 index849 alt1">
850
</div>
<div class="line number851 index850 alt2">
851
</div>
<div class="line number852 index851 alt1">
852
</div>
<div class="line number853 index852 alt2">
853
</div>
<div class="line number854 index853 alt1">
854
</div>
<div class="line number855 index854 alt2">
855
</div>
<div class="line number856 index855 alt1">
856
</div>
<div class="line number857 index856 alt2">
857
</div>
<div class="line number858 index857 alt1">
858
</div>
<div class="line number859 index858 alt2">
859
</div>
<div class="line number860 index859 alt1">
860
</div>
<div class="line number861 index860 alt2">
861
</div>
<div class="line number862 index861 alt1">
862
</div>
<div class="line number863 index862 alt2">
863
</div>
<div class="line number864 index863 alt1">
864
</div>
<div class="line number865 index864 alt2">
865
</div>
<div class="line number866 index865 alt1">
866
</div>
<div class="line number867 index866 alt2">
867
</div>
<div class="line number868 index867 alt1">
868
</div>
<div class="line number869 index868 alt2">
869
</div>
<div class="line number870 index869 alt1">
870
</div>
<div class="line number871 index870 alt2">
871
</div>
<div class="line number872 index871 alt1">
872
</div>
<div class="line number873 index872 alt2">
873
</div>
<div class="line number874 index873 alt1">
874
</div>
<div class="line number875 index874 alt2">
875
</div>
<div class="line number876 index875 alt1">
876
</div>
<div class="line number877 index876 alt2">
877
</div>
<div class="line number878 index877 alt1">
878
</div>
<div class="line number879 index878 alt2">
879
</div>
<div class="line number880 index879 alt1">
880
</div>
<div class="line number881 index880 alt2">
881
</div>
<div class="line number882 index881 alt1">
882
</div>
<div class="line number883 index882 alt2">
883
</div>
<div class="line number884 index883 alt1">
884
</div>
<div class="line number885 index884 alt2">
885
</div>
<div class="line number886 index885 alt1">
886
</div>
<div class="line number887 index886 alt2">
887
</div>
<div class="line number888 index887 alt1">
888
</div>
<div class="line number889 index888 alt2">
889
</div>
<div class="line number890 index889 alt1">
890
</div>
<div class="line number891 index890 alt2">
891
</div>
<div class="line number892 index891 alt1">
892
</div>
<div class="line number893 index892 alt2">
893
</div>
<div class="line number894 index893 alt1">
894
</div>
<div class="line number895 index894 alt2">
895
</div>
<div class="line number896 index895 alt1">
896
</div>
<div class="line number897 index896 alt2">
897
</div>
<div class="line number898 index897 alt1">
898
</div>
<div class="line number899 index898 alt2">
899
</div>
<div class="line number900 index899 alt1">
900
</div>
<div class="line number901 index900 alt2">
901
</div>
<div class="line number902 index901 alt1">
902
</div>
<div class="line number903 index902 alt2">
903
</div>
<div class="line number904 index903 alt1">
904
</div>
<div class="line number905 index904 alt2">
905
</div>
<div class="line number906 index905 alt1">
906
</div>
<div class="line number907 index906 alt2">
907
</div>
<div class="line number908 index907 alt1">
908
</div>
<div class="line number909 index908 alt2">
909
</div>
<div class="line number910 index909 alt1">
910
</div>
<div class="line number911 index910 alt2">
911
</div>
<div class="line number912 index911 alt1">
912
</div>
<div class="line number913 index912 alt2">
913
</div>
<div class="line number914 index913 alt1">
914
</div>
<div class="line number915 index914 alt2">
915
</div>
<div class="line number916 index915 alt1">
916
</div>
<div class="line number917 index916 alt2">
917
</div>
<div class="line number918 index917 alt1">
918
</div>
<div class="line number919 index918 alt2">
919
</div>
<div class="line number920 index919 alt1">
920
</div>
<div class="line number921 index920 alt2">
921
</div>
<div class="line number922 index921 alt1">
922
</div>
<div class="line number923 index922 alt2">
923
</div>
<div class="line number924 index923 alt1">
924
</div>
<div class="line number925 index924 alt2">
925
</div>
<div class="line number926 index925 alt1">
926
</div>
<div class="line number927 index926 alt2">
927
</div>
<div class="line number928 index927 alt1">
928
</div>
<div class="line number929 index928 alt2">
929
</div>
<div class="line number930 index929 alt1">
930
</div>
<div class="line number931 index930 alt2">
931
</div>
<div class="line number932 index931 alt1">
932
</div>
<div class="line number933 index932 alt2">
933
</div>
<div class="line number934 index933 alt1">
934
</div>
<div class="line number935 index934 alt2">
935
</div>
<div class="line number936 index935 alt1">
936
</div>
<div class="line number937 index936 alt2">
937
</div>
<div class="line number938 index937 alt1">
938
</div>
<div class="line number939 index938 alt2">
939
</div>
<div class="line number940 index939 alt1">
940
</div>
<div class="line number941 index940 alt2">
941
</div>
<div class="line number942 index941 alt1">
942
</div>
<div class="line number943 index942 alt2">
943
</div>
<div class="line number944 index943 alt1">
944
</div>
<div class="line number945 index944 alt2">
945
</div>
<div class="line number946 index945 alt1">
946
</div>
<div class="line number947 index946 alt2">
947
</div>
<div class="line number948 index947 alt1">
948
</div>
<div class="line number949 index948 alt2">
949
</div>
<div class="line number950 index949 alt1">
950
</div>
<div class="line number951 index950 alt2">
951
</div>
<div class="line number952 index951 alt1">
952
</div>
<div class="line number953 index952 alt2">
953
</div>
<div class="line number954 index953 alt1">
954
</div>
<div class="line number955 index954 alt2">
955
</div>
<div class="line number956 index955 alt1">
956
</div>
<div class="line number957 index956 alt2">
957
</div>
<div class="line number958 index957 alt1">
958
</div>
<div class="line number959 index958 alt2">
959
</div>
<div class="line number960 index959 alt1">
960
</div>
<div class="line number961 index960 alt2">
961
</div>
<div class="line number962 index961 alt1">
962
</div>
<div class="line number963 index962 alt2">
963
</div>
<div class="line number964 index963 alt1">
964
</div>
<div class="line number965 index964 alt2">
965
</div>
<div class="line number966 index965 alt1">
966
</div>
<div class="line number967 index966 alt2">
967
</div>
<div class="line number968 index967 alt1">
968
</div>
<div class="line number969 index968 alt2">
969
</div>
<div class="line number970 index969 alt1">
970
</div>
<div class="line number971 index970 alt2">
971
</div>
<div class="line number972 index971 alt1">
972
</div>
<div class="line number973 index972 alt2">
973
</div>
<div class="line number974 index973 alt1">
974
</div>
<div class="line number975 index974 alt2">
975
</div>
<div class="line number976 index975 alt1">
976
</div>
<div class="line number977 index976 alt2">
977
</div>
<div class="line number978 index977 alt1">
978
</div>
<div class="line number979 index978 alt2">
979
</div>
<div class="line number980 index979 alt1">
980
</div>
<div class="line number981 index980 alt2">
981
</div>
<div class="line number982 index981 alt1">
982
</div>
<div class="line number983 index982 alt2">
983
</div>
<div class="line number984 index983 alt1">
984
</div>
<div class="line number985 index984 alt2">
985
</div>
<div class="line number986 index985 alt1">
986
</div>
<div class="line number987 index986 alt2">
987
</div>
<div class="line number988 index987 alt1">
988
</div>
<div class="line number989 index988 alt2">
989
</div>
<div class="line number990 index989 alt1">
990
</div>
<div class="line number991 index990 alt2">
991
</div>
<div class="line number992 index991 alt1">
992
</div>
<div class="line number993 index992 alt2">
993
</div>
<div class="line number994 index993 alt1">
994
</div>
<div class="line number995 index994 alt2">
995
</div>
<div class="line number996 index995 alt1">
996
</div>
<div class="line number997 index996 alt2">
997
</div>
<div class="line number998 index997 alt1">
998
</div>
<div class="line number999 index998 alt2">
999
</div>
<div class="line number1000 index999 alt1">
1000
</div>
<div class="line number1001 index1000 alt2">
1001
</div>
<div class="line number1002 index1001 alt1">
1002
</div>
<div class="line number1003 index1002 alt2">
1003
</div>
<div class="line number1004 index1003 alt1">
1004
</div>
<div class="line number1005 index1004 alt2">
1005
</div>
<div class="line number1006 index1005 alt1">
1006
</div>
<div class="line number1007 index1006 alt2">
1007
</div>
<div class="line number1008 index1007 alt1">
1008
</div>
<div class="line number1009 index1008 alt2">
1009
</div>
<div class="line number1010 index1009 alt1">
1010
</div>
<div class="line number1011 index1010 alt2">
1011
</div>
<div class="line number1012 index1011 alt1">
1012
</div>
<div class="line number1013 index1012 alt2">
1013
</div>
<div class="line number1014 index1013 alt1">
1014
</div>
<div class="line number1015 index1014 alt2">
1015
</div>
<div class="line number1016 index1015 alt1">
1016
</div>
<div class="line number1017 index1016 alt2">
1017
</div>
<div class="line number1018 index1017 alt1">
1018
</div>
<div class="line number1019 index1018 alt2">
1019
</div>
<div class="line number1020 index1019 alt1">
1020
</div>
<div class="line number1021 index1020 alt2">
1021
</div>
<div class="line number1022 index1021 alt1">
1022
</div>
<div class="line number1023 index1022 alt2">
1023
</div>
<div class="line number1024 index1023 alt1">
1024
</div>
<div class="line number1025 index1024 alt2">
1025
</div>
<div class="line number1026 index1025 alt1">
1026
</div>
<div class="line number1027 index1026 alt2">
1027
</div>
<div class="line number1028 index1027 alt1">
1028
</div>
<div class="line number1029 index1028 alt2">
1029
</div>
<div class="line number1030 index1029 alt1">
1030
</div>
<div class="line number1031 index1030 alt2">
1031
</div>
<div class="line number1032 index1031 alt1">
1032
</div>
<div class="line number1033 index1032 alt2">
1033
</div>
<div class="line number1034 index1033 alt1">
1034
</div>
<div class="line number1035 index1034 alt2">
1035
</div>
<div class="line number1036 index1035 alt1">
1036
</div>
<div class="line number1037 index1036 alt2">
1037
</div>
<div class="line number1038 index1037 alt1">
1038
</div>
<div class="line number1039 index1038 alt2">
1039
</div>
<div class="line number1040 index1039 alt1">
1040
</div>
<div class="line number1041 index1040 alt2">
1041
</div>
<div class="line number1042 index1041 alt1">
1042
</div>
<div class="line number1043 index1042 alt2">
1043
</div>
<div class="line number1044 index1043 alt1">
1044
</div>
<div class="line number1045 index1044 alt2">
1045
</div>
<div class="line number1046 index1045 alt1">
1046
</div>
<div class="line number1047 index1046 alt2">
1047
</div>
<div class="line number1048 index1047 alt1">
1048
</div>
<div class="line number1049 index1048 alt2">
1049
</div>
<div class="line number1050 index1049 alt1">
1050
</div>
<div class="line number1051 index1050 alt2">
1051
</div>
<div class="line number1052 index1051 alt1">
1052
</div>
<div class="line number1053 index1052 alt2">
1053
</div>
<div class="line number1054 index1053 alt1">
1054
</div>
<div class="line number1055 index1054 alt2">
1055
</div>
<div class="line number1056 index1055 alt1">
1056
</div>
<div class="line number1057 index1056 alt2">
1057
</div>
<div class="line number1058 index1057 alt1">
1058
</div>
<div class="line number1059 index1058 alt2">
1059
</div>
<div class="line number1060 index1059 alt1">
1060
</div>
<div class="line number1061 index1060 alt2">
1061
</div>
<div class="line number1062 index1061 alt1">
1062
</div>
<div class="line number1063 index1062 alt2">
1063
</div>
<div class="line number1064 index1063 alt1">
1064
</div>
<div class="line number1065 index1064 alt2">
1065
</div>
<div class="line number1066 index1065 alt1">
1066
</div>
<div class="line number1067 index1066 alt2">
1067
</div>
<div class="line number1068 index1067 alt1">
1068
</div>
<div class="line number1069 index1068 alt2">
1069
</div>
<div class="line number1070 index1069 alt1">
1070
</div>
<div class="line number1071 index1070 alt2">
1071
</div>
<div class="line number1072 index1071 alt1">
1072
</div>
<div class="line number1073 index1072 alt2">
1073
</div>
<div class="line number1074 index1073 alt1">
1074
</div>
<div class="line number1075 index1074 alt2">
1075
</div>
<div class="line number1076 index1075 alt1">
1076
</div>
<div class="line number1077 index1076 alt2">
1077
</div>
<div class="line number1078 index1077 alt1">
1078
</div>
<div class="line number1079 index1078 alt2">
1079
</div>
<div class="line number1080 index1079 alt1">
1080
</div>
<div class="line number1081 index1080 alt2">
1081
</div>
<div class="line number1082 index1081 alt1">
1082
</div>
<div class="line number1083 index1082 alt2">
1083
</div>
<div class="line number1084 index1083 alt1">
1084
</div>
<div class="line number1085 index1084 alt2">
1085
</div>
<div class="line number1086 index1085 alt1">
1086
</div>
<div class="line number1087 index1086 alt2">
1087
</div>
<div class="line number1088 index1087 alt1">
1088
</div>
<div class="line number1089 index1088 alt2">
1089
</div>
<div class="line number1090 index1089 alt1">
1090
</div>
<div class="line number1091 index1090 alt2">
1091
</div>
<div class="line number1092 index1091 alt1">
1092
</div>
<div class="line number1093 index1092 alt2">
1093
</div>
<div class="line number1094 index1093 alt1">
1094
</div>
<div class="line number1095 index1094 alt2">
1095
</div>
<div class="line number1096 index1095 alt1">
1096
</div>
<div class="line number1097 index1096 alt2">
1097
</div>
<div class="line number1098 index1097 alt1">
1098
</div>
<div class="line number1099 index1098 alt2">
1099
</div>
<div class="line number1100 index1099 alt1">
1100
</div>
<div class="line number1101 index1100 alt2">
1101
</div>
<div class="line number1102 index1101 alt1">
1102
</div>
<div class="line number1103 index1102 alt2">
1103
</div>
<div class="line number1104 index1103 alt1">
1104
</div>
<div class="line number1105 index1104 alt2">
1105
</div>
<div class="line number1106 index1105 alt1">
1106
</div>
<div class="line number1107 index1106 alt2">
1107
</div>
<div class="line number1108 index1107 alt1">
1108
</div>
<div class="line number1109 index1108 alt2">
1109
</div>
<div class="line number1110 index1109 alt1">
1110
</div>
<div class="line number1111 index1110 alt2">
1111
</div>
<div class="line number1112 index1111 alt1">
1112
</div>
<div class="line number1113 index1112 alt2">
1113
</div>
<div class="line number1114 index1113 alt1">
1114
</div>
<div class="line number1115 index1114 alt2">
1115
</div>
<div class="line number1116 index1115 alt1">
1116
</div>
<div class="line number1117 index1116 alt2">
1117
</div>
<div class="line number1118 index1117 alt1">
1118
</div>
<div class="line number1119 index1118 alt2">
1119
</div>
<div class="line number1120 index1119 alt1">
1120
</div>
<div class="line number1121 index1120 alt2">
1121
</div>
<div class="line number1122 index1121 alt1">
1122
</div>
<div class="line number1123 index1122 alt2">
1123
</div>
<div class="line number1124 index1123 alt1">
1124
</div>
<div class="line number1125 index1124 alt2">
1125
</div>
<div class="line number1126 index1125 alt1">
1126
</div>
<div class="line number1127 index1126 alt2">
1127
</div>
<div class="line number1128 index1127 alt1">
1128
</div>
<div class="line number1129 index1128 alt2">
1129
</div>
<div class="line number1130 index1129 alt1">
1130
</div>
<div class="line number1131 index1130 alt2">
1131
</div>
<div class="line number1132 index1131 alt1">
1132
</div>
<div class="line number1133 index1132 alt2">
1133
</div>
<div class="line number1134 index1133 alt1">
1134
</div>
<div class="line number1135 index1134 alt2">
1135
</div>
<div class="line number1136 index1135 alt1">
1136
</div>
<div class="line number1137 index1136 alt2">
1137
</div>
<div class="line number1138 index1137 alt1">
1138
</div>
<div class="line number1139 index1138 alt2">
1139
</div>
<div class="line number1140 index1139 alt1">
1140
</div>
<div class="line number1141 index1140 alt2">
1141
</div>
<div class="line number1142 index1141 alt1">
1142
</div>
<div class="line number1143 index1142 alt2">
1143
</div>
<div class="line number1144 index1143 alt1">
1144
</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
`public` `class` `SlidingMenu ``extends` `RelativeLayout {`
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
` ``private` `static` `final` `String TAG = SlidingMenu.``class``.getSimpleName();`
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
` ``public` `static` `final` `int` `SLIDING_WINDOW = ````;`
</div>
<div class="line number6 index5 alt1">
` ``public` `static` `final` `int` `SLIDING_CONTENT = ``1``;`
</div>
<div class="line number7 index6 alt2">
` ``private` `boolean` `mActionbarOverlay = ``false``;`
</div>
<div class="line number8 index7 alt1">
</div>
<div class="line number9 index8 alt2">
` ``/**`
</div>
<div class="line number10 index9 alt1">
` ``* Constant value for use with setTouchModeAbove(). Allows the SlidingMenu`
</div>
<div class="line number11 index10 alt2">
` ``* to be opened with a swipe gesture on the screen's margin`
</div>
<div class="line number12 index11 alt1">
` ``*/`
</div>
<div class="line number13 index12 alt2">
` ``public` `static` `final` `int` `TOUCHMODE_MARGIN = ````;`
</div>
<div class="line number14 index13 alt1">
</div>
<div class="line number15 index14 alt2">
` ``/**`
</div>
<div class="line number16 index15 alt1">
` ``* Constant value for use with setTouchModeAbove(). Allows the SlidingMenu`
</div>
<div class="line number17 index16 alt2">
` ``* to be opened with a swipe gesture anywhere on the screen`
</div>
<div class="line number18 index17 alt1">
` ``*/`
</div>
<div class="line number19 index18 alt2">
` ``public` `static` `final` `int` `TOUCHMODE_FULLSCREEN = ``1``;`
</div>
<div class="line number20 index19 alt1">
</div>
<div class="line number21 index20 alt2">
` ``/**`
</div>
<div class="line number22 index21 alt1">
` ``* Constant value for use with setTouchModeAbove(). Denies the SlidingMenu`
</div>
<div class="line number23 index22 alt2">
` ``* to be opened with a swipe gesture`
</div>
<div class="line number24 index23 alt1">
` ``*/`
</div>
<div class="line number25 index24 alt2">
` ``public` `static` `final` `int` `TOUCHMODE_NONE = ``2``;`
</div>
<div class="line number26 index25 alt1">
</div>
<div class="line number27 index26 alt2">
` ``/**`
</div>
<div class="line number28 index27 alt1">
` ``* Constant value for use with setMode(). Puts the menu to the left of the`
</div>
<div class="line number29 index28 alt2">
` ``* content.`
</div>
<div class="line number30 index29 alt1">
` ``*/`
</div>
<div class="line number31 index30 alt2">
` ``public` `static` `final` `int` `LEFT = ````;`
</div>
<div class="line number32 index31 alt1">
</div>
<div class="line number33 index32 alt2">
` ``/**`
</div>
<div class="line number34 index33 alt1">
` ``* Constant value for use with setMode(). Puts the menu to the right of the`
</div>
<div class="line number35 index34 alt2">
` ``* content.`
</div>
<div class="line number36 index35 alt1">
` ``*/`
</div>
<div class="line number37 index36 alt2">
` ``public` `static` `final` `int` `RIGHT = ``1``;`
</div>
<div class="line number38 index37 alt1">
</div>
<div class="line number39 index38 alt2">
` ``/**`
</div>
<div class="line number40 index39 alt1">
` ``* Constant value for use with setMode(). Puts menus to the left and right`
</div>
<div class="line number41 index40 alt2">
` ``* of the content.`
</div>
<div class="line number42 index41 alt1">
` ``*/`
</div>
<div class="line number43 index42 alt2">
` ``public` `static` `final` `int` `LEFT_RIGHT = ``2``;`
</div>
<div class="line number44 index43 alt1">
</div>
<div class="line number45 index44 alt2">
` ``private` `CustomViewAbove mViewAbove;`
</div>
<div class="line number46 index45 alt1">
</div>
<div class="line number47 index46 alt2">
` ``private` `CustomViewBehind mViewBehind;`
</div>
<div class="line number48 index47 alt1">
</div>
<div class="line number49 index48 alt2">
` ``/** 整体的背景,用一个ImageView代替 */`
</div>
<div class="line number50 index49 alt1">
` ``private` `ImageView mViewBackground;`
</div>
<div class="line number51 index50 alt2">
</div>
<div class="line number52 index51 alt1">
` ``private` `OnOpenListener mOpenListener;`
</div>
<div class="line number53 index52 alt2">
</div>
<div class="line number54 index53 alt1">
` ``private` `OnOpenListener mSecondaryOpenListner;`
</div>
<div class="line number55 index54 alt2">
</div>
<div class="line number56 index55 alt1">
` ``private` `OnCloseListener mCloseListener;`
</div>
<div class="line number57 index56 alt2">
</div>
<div class="line number58 index57 alt1">
` ``/**`
</div>
<div class="line number59 index58 alt2">
` ``* The listener interface for receiving onOpen events. The class that is`
</div>
<div class="line number60 index59 alt1">
` ``* interested in processing a onOpen event implements this interface, and`
</div>
<div class="line number61 index60 alt2">
` ``* the object created with that class is registered with a component using`
</div>
<div class="line number62 index61 alt1">
` ``* the component's <code>addOnOpenListener<code> method. When`
</div>
<div class="line number63 index62 alt2">
` ``* the onOpen event occurs, that object's appropriate`
</div>
<div class="line number64 index63 alt1">
` ``* method is invoked`
</div>
<div class="line number65 index64 alt2">
` ``*/`
</div>
<div class="line number66 index65 alt1">
` ``public` `interface` `OnOpenListener {`
</div>
<div class="line number67 index66 alt2">
</div>
<div class="line number68 index67 alt1">
` ``/**`
</div>
<div class="line number69 index68 alt2">
` ``* On open.`
</div>
<div class="line number70 index69 alt1">
` ``*/`
</div>
<div class="line number71 index70 alt2">
` ``public` `void` `onOpen();`
</div>
<div class="line number72 index71 alt1">
` ``}`
</div>
<div class="line number73 index72 alt2">
</div>
<div class="line number74 index73 alt1">
` ``/**`
</div>
<div class="line number75 index74 alt2">
` ``* The listener interface for receiving onOpened events. The class that is`
</div>
<div class="line number76 index75 alt1">
` ``* interested in processing a onOpened event implements this interface, and`
</div>
<div class="line number77 index76 alt2">
` ``* the object created with that class is registered with a component using`
</div>
<div class="line number78 index77 alt1">
` ``* the component's <code>addOnOpenedListener<code> method. When`
</div>
<div class="line number79 index78 alt2">
` ``* the onOpened event occurs, that object's appropriate`
</div>
<div class="line number80 index79 alt1">
` ``* method is invoked.`
</div>
<div class="line number81 index80 alt2">
` ``*`
</div>
<div class="line number82 index81 alt1">
` ``* @see OnOpenedEvent`
</div>
<div class="line number83 index82 alt2">
` ``*/`
</div>
<div class="line number84 index83 alt1">
` ``public` `interface` `OnOpenedListener {`
</div>
<div class="line number85 index84 alt2">
</div>
<div class="line number86 index85 alt1">
` ``/**`
</div>
<div class="line number87 index86 alt2">
` ``* On opened.`
</div>
<div class="line number88 index87 alt1">
` ``*/`
</div>
<div class="line number89 index88 alt2">
` ``public` `void` `onOpened();`
</div>
<div class="line number90 index89 alt1">
` ``}`
</div>
<div class="line number91 index90 alt2">
</div>
<div class="line number92 index91 alt1">
` ``/**`
</div>
<div class="line number93 index92 alt2">
` ``* The listener interface for receiving onClose events. The class that is`
</div>
<div class="line number94 index93 alt1">
` ``* interested in processing a onClose event implements this interface, and`
</div>
<div class="line number95 index94 alt2">
` ``* the object created with that class is registered with a component using`
</div>
<div class="line number96 index95 alt1">
` ``* the component's <code>addOnCloseListener<code> method. When`
</div>
<div class="line number97 index96 alt2">
` ``* the onClose event occurs, that object's appropriate`
</div>
<div class="line number98 index97 alt1">
` ``* method is invoked.`
</div>
<div class="line number99 index98 alt2">
` ``*`
</div>
<div class="line number100 index99 alt1">
` ``* @see OnCloseEvent`
</div>
<div class="line number101 index100 alt2">
` ``*/`
</div>
<div class="line number102 index101 alt1">
` ``public` `interface` `OnCloseListener {`
</div>
<div class="line number103 index102 alt2">
</div>
<div class="line number104 index103 alt1">
` ``/**`
</div>
<div class="line number105 index104 alt2">
` ``* On close.`
</div>
<div class="line number106 index105 alt1">
` ``*/`
</div>
<div class="line number107 index106 alt2">
` ``public` `void` `onClose();`
</div>
<div class="line number108 index107 alt1">
` ``}`
</div>
<div class="line number109 index108 alt2">
</div>
<div class="line number110 index109 alt1">
` ``/**`
</div>
<div class="line number111 index110 alt2">
` ``* The listener interface for receiving onClosed events. The class that is`
</div>
<div class="line number112 index111 alt1">
` ``* interested in processing a onClosed event implements this interface, and`
</div>
<div class="line number113 index112 alt2">
` ``* the object created with that class is registered with a component using`
</div>
<div class="line number114 index113 alt1">
` ``* the component's <code>addOnClosedListener<code> method. When`
</div>
<div class="line number115 index114 alt2">
` ``* the onClosed event occurs, that object's appropriate`
</div>
<div class="line number116 index115 alt1">
` ``* method is invoked.`
</div>
<div class="line number117 index116 alt2">
` ``*`
</div>
<div class="line number118 index117 alt1">
` ``* @see OnClosedEvent`
</div>
<div class="line number119 index118 alt2">
` ``*/`
</div>
<div class="line number120 index119 alt1">
` ``public` `interface` `OnClosedListener {`
</div>
<div class="line number121 index120 alt2">
</div>
<div class="line number122 index121 alt1">
` ``/**`
</div>
<div class="line number123 index122 alt2">
` ``* On closed.`
</div>
<div class="line number124 index123 alt1">
` ``*/`
</div>
<div class="line number125 index124 alt2">
` ``public` `void` `onClosed();`
</div>
<div class="line number126 index125 alt1">
` ``}`
</div>
<div class="line number127 index126 alt2">
</div>
<div class="line number128 index127 alt1">
` ``/**`
</div>
<div class="line number129 index128 alt2">
` ``* The Interface CanvasTransformer.`
</div>
<div class="line number130 index129 alt1">
` ``*/`
</div>
<div class="line number131 index130 alt2">
` ``public` `interface` `CanvasTransformer {`
</div>
<div class="line number132 index131 alt1">
</div>
<div class="line number133 index132 alt2">
` ``/**`
</div>
<div class="line number134 index133 alt1">
` ``* Transform canvas.`
</div>
<div class="line number135 index134 alt2">
` ``*`
</div>
<div class="line number136 index135 alt1">
` ``* @param canvas`
</div>
<div class="line number137 index136 alt2">
` ``* the canvas`
</div>
<div class="line number138 index137 alt1">
` ``* @param percentOpen`
</div>
<div class="line number139 index138 alt2">
` ``* the percent open`
</div>
<div class="line number140 index139 alt1">
` ``*/`
</div>
<div class="line number141 index140 alt2">
` ``public` `void` `transformCanvas(Canvas canvas, ``float` `percentOpen);`
</div>
<div class="line number142 index141 alt1">
` ``}`
</div>
<div class="line number143 index142 alt2">
</div>
<div class="line number144 index143 alt1">
` ``/**`
</div>
<div class="line number145 index144 alt2">
` ``* Instantiates a new SlidingMenu.`
</div>
<div class="line number146 index145 alt1">
` ``*`
</div>
<div class="line number147 index146 alt2">
` ``* @param context`
</div>
<div class="line number148 index147 alt1">
` ``* the associated Context`
</div>
<div class="line number149 index148 alt2">
` ``*/`
</div>
<div class="line number150 index149 alt1">
` ``public` `SlidingMenu(Context context) {`
</div>
<div class="line number151 index150 alt2">
` ``this``(context, ``null``);`
</div>
<div class="line number152 index151 alt1">
` ``}`
</div>
<div class="line number153 index152 alt2">
</div>
<div class="line number154 index153 alt1">
` ``/**`
</div>
<div class="line number155 index154 alt2">
` ``* Instantiates a new SlidingMenu and attach to Activity.`
</div>
<div class="line number156 index155 alt1">
` ``*`
</div>
<div class="line number157 index156 alt2">
` ``* @param activity`
</div>
<div class="line number158 index157 alt1">
` ``* the activity to attach slidingmenu`
</div>
<div class="line number159 index158 alt2">
` ``* @param slideStyle`
</div>
<div class="line number160 index159 alt1">
` ``* the slidingmenu style`
</div>
<div class="line number161 index160 alt2">
` ``*/`
</div>
<div class="line number162 index161 alt1">
` ``public` `SlidingMenu(Activity activity, ``int` `slideStyle) {`
</div>
<div class="line number163 index162 alt2">
` ``this``(activity, ``null``);`
</div>
<div class="line number164 index163 alt1">
` ``this``.attachToActivity(activity, slideStyle);`
</div>
<div class="line number165 index164 alt2">
` ``}`
</div>
<div class="line number166 index165 alt1">
</div>
<div class="line number167 index166 alt2">
` ``/**`
</div>
<div class="line number168 index167 alt1">
` ``* Instantiates a new SlidingMenu.`
</div>
<div class="line number169 index168 alt2">
` ``*`
</div>
<div class="line number170 index169 alt1">
` ``* @param context`
</div>
<div class="line number171 index170 alt2">
` ``* the associated Context`
</div>
<div class="line number172 index171 alt1">
` ``* @param attrs`
</div>
<div class="line number173 index172 alt2">
` ``* the attrs`
</div>
<div class="line number174 index173 alt1">
` ``*/`
</div>
<div class="line number175 index174 alt2">
` ``public` `SlidingMenu(Context context, AttributeSet attrs) {`
</div>
<div class="line number176 index175 alt1">
` ``this``(context, attrs, ````);`
</div>
<div class="line number177 index176 alt2">
` ``}`
</div>
<div class="line number178 index177 alt1">
</div>
<div class="line number179 index178 alt2">
` ``/**`
</div>
<div class="line number180 index179 alt1">
` ``* Instantiates a new SlidingMenu.`
</div>
<div class="line number181 index180 alt2">
` ``*`
</div>
<div class="line number182 index181 alt1">
` ``* @param context`
</div>
<div class="line number183 index182 alt2">
` ``* the associated Context`
</div>
<div class="line number184 index183 alt1">
` ``* @param attrs`
</div>
<div class="line number185 index184 alt2">
` ``* the attrs`
</div>
<div class="line number186 index185 alt1">
` ``* @param defStyle`
</div>
<div class="line number187 index186 alt2">
` ``* the def style`
</div>
<div class="line number188 index187 alt1">
` ``*/`
</div>
<div class="line number189 index188 alt2">
` ``public` `SlidingMenu(Context context, AttributeSet attrs, ``int` `defStyle) {`
</div>
<div class="line number190 index189 alt1">
` ``super``(context, attrs, defStyle);`
</div>
<div class="line number191 index190 alt2">
` ``/** SlidingMenu是一个RelativeLayout,这里把背景图ImageView添加到RelativeLayout的最底层。*/`
</div>
<div class="line number192 index191 alt1">
` ``LayoutParams backgroundParams = ``new` `LayoutParams(`
</div>
<div class="line number193 index192 alt2">
` ``LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);`
</div>
<div class="line number194 index193 alt1">
` ``mViewBackground = ``new` `ImageView(context);`
</div>
<div class="line number195 index194 alt2">
` ``mViewBackground.setScaleType(ImageView.ScaleType.CENTER_CROP);`
</div>
<div class="line number196 index195 alt1">
` ``addView(mViewBackground, backgroundParams);`
</div>
<div class="line number197 index196 alt2">
</div>
<div class="line number198 index197 alt1">
` ``LayoutParams behindParams = ``new` `LayoutParams(LayoutParams.MATCH_PARENT,`
</div>
<div class="line number199 index198 alt2">
` ``LayoutParams.MATCH_PARENT);`
</div>
<div class="line number200 index199 alt1">
` ``mViewBehind = ``new` `CustomViewBehind(context);`
</div>
<div class="line number201 index200 alt2">
` ``addView(mViewBehind, behindParams);`
</div>
<div class="line number202 index201 alt1">
` ``LayoutParams aboveParams = ``new` `LayoutParams(LayoutParams.MATCH_PARENT,`
</div>
<div class="line number203 index202 alt2">
` ``LayoutParams.MATCH_PARENT);`
</div>
<div class="line number204 index203 alt1">
` ``mViewAbove = ``new` `CustomViewAbove(context);`
</div>
<div class="line number205 index204 alt2">
` ``addView(mViewAbove, aboveParams);`
</div>
<div class="line number206 index205 alt1">
` ``// register the CustomViewBehind with the CustomViewAbove`
</div>
<div class="line number207 index206 alt2">
` ``mViewAbove.setCustomViewBehind(mViewBehind);`
</div>
<div class="line number208 index207 alt1">
` ``mViewBehind.setCustomViewAbove(mViewAbove);`
</div>
<div class="line number209 index208 alt2">
` ``mViewAbove.setOnPageChangeListener(``new` `OnPageChangeListener() {`
</div>
<div class="line number210 index209 alt1">
` ``public` `static` `final` `int` `POSITION_OPEN = ````;`
</div>
<div class="line number211 index210 alt2">
` ``public` `static` `final` `int` `POSITION_CLOSE = ``1``;`
</div>
<div class="line number212 index211 alt1">
` ``public` `static` `final` `int` `POSITION_SECONDARY_OPEN = ``2``;`
</div>
<div class="line number213 index212 alt2">
</div>
<div class="line number214 index213 alt1">
` ``public` `void` `onPageScrolled(``int` `position, ``float` `positionOffset,`
</div>
<div class="line number215 index214 alt2">
` ``int` `positionOffsetPixels) {`
</div>
<div class="line number216 index215 alt1">
` ``}`
</div>
<div class="line number217 index216 alt2">
</div>
<div class="line number218 index217 alt1">
` ``public` `void` `onPageSelected(``int` `position) {`
</div>
<div class="line number219 index218 alt2">
` ``if` `(position == POSITION_OPEN && mOpenListener != ``null``) {`
</div>
<div class="line number220 index219 alt1">
` ``mOpenListener.onOpen();`
</div>
<div class="line number221 index220 alt2">
` ``} ``else` `if` `(position == POSITION_CLOSE && mCloseListener != ``null``) {`
</div>
<div class="line number222 index221 alt1">
` ``mCloseListener.onClose();`
</div>
<div class="line number223 index222 alt2">
` ``} ``else` `if` `(position == POSITION_SECONDARY_OPEN`
</div>
<div class="line number224 index223 alt1">
` ``&& mSecondaryOpenListner != ``null``) {`
</div>
<div class="line number225 index224 alt2">
` ``mSecondaryOpenListner.onOpen();`
</div>
<div class="line number226 index225 alt1">
` ``}`
</div>
<div class="line number227 index226 alt2">
` ``}`
</div>
<div class="line number228 index227 alt1">
` ``});`
</div>
<div class="line number229 index228 alt2">
</div>
<div class="line number230 index229 alt1">
` ``// now style everything!`
</div>
<div class="line number231 index230 alt2">
` ``TypedArray ta = context.obtainStyledAttributes(attrs,`
</div>
<div class="line number232 index231 alt1">
` ``R.styleable.SlidingMenu);`
</div>
<div class="line number233 index232 alt2">
` ``// set the above and behind views if defined in xml`
</div>
<div class="line number234 index233 alt1">
` ``int` `mode = ta.getInt(R.styleable.SlidingMenu_mode, LEFT);`
</div>
<div class="line number235 index234 alt2">
` ``setMode(mode);`
</div>
<div class="line number236 index235 alt1">
` ``int` `viewAbove = ta.getResourceId(R.styleable.SlidingMenu_viewAbove, -``1``);`
</div>
<div class="line number237 index236 alt2">
` ``if` `(viewAbove != -``1``) {`
</div>
<div class="line number238 index237 alt1">
` ``setContent(viewAbove);`
</div>
<div class="line number239 index238 alt2">
` ``} ``else` `{`
</div>
<div class="line number240 index239 alt1">
` ``setContent(``new` `FrameLayout(context));`
</div>
<div class="line number241 index240 alt2">
` ``}`
</div>
<div class="line number242 index241 alt1">
` ``int` `viewBehind = ta.getResourceId(R.styleable.SlidingMenu_viewBehind,`
</div>
<div class="line number243 index242 alt2">
` ``-``1``);`
</div>
<div class="line number244 index243 alt1">
` ``if` `(viewBehind != -``1``) {`
</div>
<div class="line number245 index244 alt2">
` ``setMenu(viewBehind);`
</div>
<div class="line number246 index245 alt1">
` ``} ``else` `{`
</div>
<div class="line number247 index246 alt2">
` ``setMenu(``new` `FrameLayout(context));`
</div>
<div class="line number248 index247 alt1">
` ``}`
</div>
<div class="line number249 index248 alt2">
` ``int` `touchModeAbove = ta.getInt(R.styleable.SlidingMenu_touchModeAbove,`
</div>
<div class="line number250 index249 alt1">
` ``TOUCHMODE_MARGIN);`
</div>
<div class="line number251 index250 alt2">
` ``setTouchModeAbove(touchModeAbove);`
</div>
<div class="line number252 index251 alt1">
` ``int` `touchModeBehind = ta.getInt(`
</div>
<div class="line number253 index252 alt2">
` ``R.styleable.SlidingMenu_touchModeBehind, TOUCHMODE_MARGIN);`
</div>
<div class="line number254 index253 alt1">
` ``setTouchModeBehind(touchModeBehind);`
</div>
<div class="line number255 index254 alt2">
</div>
<div class="line number256 index255 alt1">
` ``int` `offsetBehind = (``int``) ta.getDimension(`
</div>
<div class="line number257 index256 alt2">
` ``R.styleable.SlidingMenu_behindOffset, -``1``);`
</div>
<div class="line number258 index257 alt1">
` ``int` `widthBehind = (``int``) ta.getDimension(`
</div>
<div class="line number259 index258 alt2">
` ``R.styleable.SlidingMenu_behindWidth, -``1``);`
</div>
<div class="line number260 index259 alt1">
` ``if` `(offsetBehind != -``1` `&& widthBehind != -``1``)`
</div>
<div class="line number261 index260 alt2">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number262 index261 alt1">
` ``"Cannot set both behindOffset and behindWidth for a SlidingMenu"``);`
</div>
<div class="line number263 index262 alt2">
` ``else` `if` `(offsetBehind != -``1``)`
</div>
<div class="line number264 index263 alt1">
` ``setBehindOffset(offsetBehind);`
</div>
<div class="line number265 index264 alt2">
` ``else` `if` `(widthBehind != -``1``)`
</div>
<div class="line number266 index265 alt1">
` ``setBehindWidth(widthBehind);`
</div>
<div class="line number267 index266 alt2">
` ``else`
</div>
<div class="line number268 index267 alt1">
` ``setBehindOffset(````);`
</div>
<div class="line number269 index268 alt2">
` ``float` `scrollOffsetBehind = ta.getFloat(`
</div>
<div class="line number270 index269 alt1">
` ``R.styleable.SlidingMenu_behindScrollScale, ````.33f);`
</div>
<div class="line number271 index270 alt2">
` ``setBehindScrollScale(scrollOffsetBehind);`
</div>
<div class="line number272 index271 alt1">
` ``int` `shadowRes = ta.getResourceId(`
</div>
<div class="line number273 index272 alt2">
` ``R.styleable.SlidingMenu_shadowDrawable, -``1``);`
</div>
<div class="line number274 index273 alt1">
` ``if` `(shadowRes != -``1``) {`
</div>
<div class="line number275 index274 alt2">
` ``setShadowDrawable(shadowRes);`
</div>
<div class="line number276 index275 alt1">
` ``}`
</div>
<div class="line number277 index276 alt2">
` ``int` `shadowWidth = (``int``) ta.getDimension(`
</div>
<div class="line number278 index277 alt1">
` ``R.styleable.SlidingMenu_shadowWidth, ````);`
</div>
<div class="line number279 index278 alt2">
` ``setShadowWidth(shadowWidth);`
</div>
<div class="line number280 index279 alt1">
` ``boolean` `fadeEnabled = ta.getBoolean(`
</div>
<div class="line number281 index280 alt2">
` ``R.styleable.SlidingMenu_fadeEnabled, ``true``);`
</div>
<div class="line number282 index281 alt1">
` ``setFadeEnabled(fadeEnabled);`
</div>
<div class="line number283 index282 alt2">
` ``float` `fadeDeg = ta.getFloat(R.styleable.SlidingMenu_fadeDegree, ````.33f);`
</div>
<div class="line number284 index283 alt1">
` ``setFadeDegree(fadeDeg);`
</div>
<div class="line number285 index284 alt2">
` ``boolean` `selectorEnabled = ta.getBoolean(`
</div>
<div class="line number286 index285 alt1">
` ``R.styleable.SlidingMenu_selectorEnabled, ``false``);`
</div>
<div class="line number287 index286 alt2">
` ``setSelectorEnabled(selectorEnabled);`
</div>
<div class="line number288 index287 alt1">
` ``int` `selectorRes = ta.getResourceId(`
</div>
<div class="line number289 index288 alt2">
` ``R.styleable.SlidingMenu_selectorDrawable, -``1``);`
</div>
<div class="line number290 index289 alt1">
` ``if` `(selectorRes != -``1``)`
</div>
<div class="line number291 index290 alt2">
` ``setSelectorDrawable(selectorRes);`
</div>
<div class="line number292 index291 alt1">
` ``ta.recycle();`
</div>
<div class="line number293 index292 alt2">
` ``}`
</div>
<div class="line number294 index293 alt1">
</div>
<div class="line number295 index294 alt2">
` ``/**`
</div>
<div class="line number296 index295 alt1">
` ``* Attaches the SlidingMenu to an entire Activity`
</div>
<div class="line number297 index296 alt2">
` ``*`
</div>
<div class="line number298 index297 alt1">
` ``* @param activity`
</div>
<div class="line number299 index298 alt2">
` ``* the Activity`
</div>
<div class="line number300 index299 alt1">
` ``* @param slideStyle`
</div>
<div class="line number301 index300 alt2">
` ``* either SLIDING_CONTENT or SLIDING_WINDOW`
</div>
<div class="line number302 index301 alt1">
` ``*/`
</div>
<div class="line number303 index302 alt2">
` ``public` `void` `attachToActivity(Activity activity, ``int` `slideStyle) {`
</div>
<div class="line number304 index303 alt1">
` ``attachToActivity(activity, slideStyle, ``false``);`
</div>
<div class="line number305 index304 alt2">
` ``}`
</div>
<div class="line number306 index305 alt1">
</div>
<div class="line number307 index306 alt2">
` ``/**`
</div>
<div class="line number308 index307 alt1">
` ``* Attaches the SlidingMenu to an entire Activity`
</div>
<div class="line number309 index308 alt2">
` ``*`
</div>
<div class="line number310 index309 alt1">
` ``* @param activity`
</div>
<div class="line number311 index310 alt2">
` ``* the Activity`
</div>
<div class="line number312 index311 alt1">
` ``* @param slideStyle`
</div>
<div class="line number313 index312 alt2">
` ``* either SLIDING_CONTENT or SLIDING_WINDOW`
</div>
<div class="line number314 index313 alt1">
` ``* @param actionbarOverlay`
</div>
<div class="line number315 index314 alt2">
` ``* whether or not the ActionBar is overlaid`
</div>
<div class="line number316 index315 alt1">
` ``*/`
</div>
<div class="line number317 index316 alt2">
` ``public` `void` `attachToActivity(Activity activity, ``int` `slideStyle,`
</div>
<div class="line number318 index317 alt1">
` ``boolean` `actionbarOverlay) {`
</div>
<div class="line number319 index318 alt2">
` ``if` `(slideStyle != SLIDING_WINDOW && slideStyle != SLIDING_CONTENT)`
</div>
<div class="line number320 index319 alt1">
` ``throw` `new` `IllegalArgumentException(`
</div>
<div class="line number321 index320 alt2">
` ``"slideStyle must be either SLIDING_WINDOW or SLIDING_CONTENT"``);`
</div>
<div class="line number322 index321 alt1">
</div>
<div class="line number323 index322 alt2">
` ``if` `(getParent() != ``null``)`
</div>
<div class="line number324 index323 alt1">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number325 index324 alt2">
` ``"This SlidingMenu appears to already be attached"``);`
</div>
<div class="line number326 index325 alt1">
</div>
<div class="line number327 index326 alt2">
` ``// get the window background`
</div>
<div class="line number328 index327 alt1">
` ``TypedArray a = activity.getTheme().obtainStyledAttributes(`
</div>
<div class="line number329 index328 alt2">
` ``new` `int``[] { android.R.attr.windowBackground });`
</div>
<div class="line number330 index329 alt1">
` ``int` `background = a.getResourceId(````, ````);`
</div>
<div class="line number331 index330 alt2">
` ``a.recycle();`
</div>
<div class="line number332 index331 alt1">
</div>
<div class="line number333 index332 alt2">
` ``switch` `(slideStyle) {`
</div>
<div class="line number334 index333 alt1">
` ``case` `SLIDING_WINDOW:`
</div>
<div class="line number335 index334 alt2">
` ``mActionbarOverlay = ``false``;`
</div>
<div class="line number336 index335 alt1">
` ``ViewGroup decor = (ViewGroup) activity.getWindow().getDecorView();`
</div>
<div class="line number337 index336 alt2">
` ``ViewGroup decorChild = (ViewGroup) decor.getChildAt(````);`
</div>
<div class="line number338 index337 alt1">
` ``// save ActionBar themes that have transparent assets`
</div>
<div class="line number339 index338 alt2">
` ``decorChild.setBackgroundResource(background);`
</div>
<div class="line number340 index339 alt1">
` ``decor.removeView(decorChild);`
</div>
<div class="line number341 index340 alt2">
` ``decor.addView(``this``);`
</div>
<div class="line number342 index341 alt1">
` ``setContent(decorChild);`
</div>
<div class="line number343 index342 alt2">
` ``break``;`
</div>
<div class="line number344 index343 alt1">
` ``case` `SLIDING_CONTENT:`
</div>
<div class="line number345 index344 alt2">
` ``mActionbarOverlay = actionbarOverlay;`
</div>
<div class="line number346 index345 alt1">
` ``// take the above view out of`
</div>
<div class="line number347 index346 alt2">
` ``ViewGroup contentParent = (ViewGroup) activity`
</div>
<div class="line number348 index347 alt1">
` ``.findViewById(android.R.id.content);`
</div>
<div class="line number349 index348 alt2">
` ``View content = contentParent.getChildAt(````);`
</div>
<div class="line number350 index349 alt1">
` ``contentParent.removeView(content);`
</div>
<div class="line number351 index350 alt2">
` ``contentParent.addView(``this``);`
</div>
<div class="line number352 index351 alt1">
` ``setContent(content);`
</div>
<div class="line number353 index352 alt2">
` ``// save people from having transparent backgrounds`
</div>
<div class="line number354 index353 alt1">
` ``if` `(content.getBackground() == ``null``)`
</div>
<div class="line number355 index354 alt2">
` ``content.setBackgroundResource(background);`
</div>
<div class="line number356 index355 alt1">
` ``break``;`
</div>
<div class="line number357 index356 alt2">
` ``}`
</div>
<div class="line number358 index357 alt1">
` ``}`
</div>
<div class="line number359 index358 alt2">
</div>
<div class="line number360 index359 alt1">
` ``/**`
</div>
<div class="line number361 index360 alt2">
` ``* Set the above view content from a layout resource. The resource will be`
</div>
<div class="line number362 index361 alt1">
` ``* inflated, adding all top-level views to the above view.`
</div>
<div class="line number363 index362 alt2">
` ``*`
</div>
<div class="line number364 index363 alt1">
` ``* @param res`
</div>
<div class="line number365 index364 alt2">
` ``* the new content`
</div>
<div class="line number366 index365 alt1">
` ``*/`
</div>
<div class="line number367 index366 alt2">
` ``public` `void` `setContent(``int` `res) {`
</div>
<div class="line number368 index367 alt1">
` ``setContent(LayoutInflater.from(getContext()).inflate(res, ``null``));`
</div>
<div class="line number369 index368 alt2">
` ``}`
</div>
<div class="line number370 index369 alt1">
</div>
<div class="line number371 index370 alt2">
` ``/**`
</div>
<div class="line number372 index371 alt1">
` ``* Set the above view content to the given View.`
</div>
<div class="line number373 index372 alt2">
` ``*`
</div>
<div class="line number374 index373 alt1">
` ``* @param view`
</div>
<div class="line number375 index374 alt2">
` ``* The desired content to display.`
</div>
<div class="line number376 index375 alt1">
` ``*/`
</div>
<div class="line number377 index376 alt2">
` ``public` `void` `setContent(View view) {`
</div>
<div class="line number378 index377 alt1">
` ``mViewAbove.setContent(view);`
</div>
<div class="line number379 index378 alt2">
` ``showContent();`
</div>
<div class="line number380 index379 alt1">
` ``}`
</div>
<div class="line number381 index380 alt2">
</div>
<div class="line number382 index381 alt1">
` ``/**`
</div>
<div class="line number383 index382 alt2">
` ``* 设置背景图片`
</div>
<div class="line number384 index383 alt1">
` ``*`
</div>
<div class="line number385 index384 alt2">
` ``* @param resid`
</div>
<div class="line number386 index385 alt1">
` ``*/`
</div>
<div class="line number387 index386 alt2">
` ``public` `void` `setBackgroundImage(``int` `resid) {`
</div>
<div class="line number388 index387 alt1">
` ``mViewBackground.setBackgroundResource(resid);`
</div>
<div class="line number389 index388 alt2">
` ``}`
</div>
<div class="line number390 index389 alt1">
</div>
<div class="line number391 index390 alt2">
` ``/**`
</div>
<div class="line number392 index391 alt1">
` ``* Retrieves the current content.`
</div>
<div class="line number393 index392 alt2">
` ``*`
</div>
<div class="line number394 index393 alt1">
` ``* @return the current content`
</div>
<div class="line number395 index394 alt2">
` ``*/`
</div>
<div class="line number396 index395 alt1">
` ``public` `View getContent() {`
</div>
<div class="line number397 index396 alt2">
` ``return` `mViewAbove.getContent();`
</div>
<div class="line number398 index397 alt1">
` ``}`
</div>
<div class="line number399 index398 alt2">
</div>
<div class="line number400 index399 alt1">
` ``/**`
</div>
<div class="line number401 index400 alt2">
` ``* Set the behind view (menu) content from a layout resource. The resource`
</div>
<div class="line number402 index401 alt1">
` ``* will be inflated, adding all top-level views to the behind view.`
</div>
<div class="line number403 index402 alt2">
` ``*`
</div>
<div class="line number404 index403 alt1">
` ``* @param res`
</div>
<div class="line number405 index404 alt2">
` ``* the new content`
</div>
<div class="line number406 index405 alt1">
` ``*/`
</div>
<div class="line number407 index406 alt2">
` ``public` `void` `setMenu(``int` `res) {`
</div>
<div class="line number408 index407 alt1">
` ``setMenu(LayoutInflater.from(getContext()).inflate(res, ``null``));`
</div>
<div class="line number409 index408 alt2">
` ``}`
</div>
<div class="line number410 index409 alt1">
</div>
<div class="line number411 index410 alt2">
` ``/**`
</div>
<div class="line number412 index411 alt1">
` ``* Set the behind view (menu) content to the given View.`
</div>
<div class="line number413 index412 alt2">
` ``*`
</div>
<div class="line number414 index413 alt1">
` ``* @param view`
</div>
<div class="line number415 index414 alt2">
` ``* The desired content to display.`
</div>
<div class="line number416 index415 alt1">
` ``*/`
</div>
<div class="line number417 index416 alt2">
` ``public` `void` `setMenu(View v) {`
</div>
<div class="line number418 index417 alt1">
` ``mViewBehind.setContent(v);`
</div>
<div class="line number419 index418 alt2">
` ``}`
</div>
<div class="line number420 index419 alt1">
</div>
<div class="line number421 index420 alt2">
` ``/**`
</div>
<div class="line number422 index421 alt1">
` ``* Retrieves the main menu.`
</div>
<div class="line number423 index422 alt2">
` ``*`
</div>
<div class="line number424 index423 alt1">
` ``* @return the main menu`
</div>
<div class="line number425 index424 alt2">
` ``*/`
</div>
<div class="line number426 index425 alt1">
` ``public` `View getMenu() {`
</div>
<div class="line number427 index426 alt2">
` ``return` `mViewBehind.getContent();`
</div>
<div class="line number428 index427 alt1">
` ``}`
</div>
<div class="line number429 index428 alt2">
</div>
<div class="line number430 index429 alt1">
` ``/**`
</div>
<div class="line number431 index430 alt2">
` ``* Set the secondary behind view (right menu) content from a layout`
</div>
<div class="line number432 index431 alt1">
` ``* resource. The resource will be inflated, adding all top-level views to`
</div>
<div class="line number433 index432 alt2">
` ``* the behind view.`
</div>
<div class="line number434 index433 alt1">
` ``*`
</div>
<div class="line number435 index434 alt2">
` ``* @param res`
</div>
<div class="line number436 index435 alt1">
` ``* the new content`
</div>
<div class="line number437 index436 alt2">
` ``*/`
</div>
<div class="line number438 index437 alt1">
` ``public` `void` `setSecondaryMenu(``int` `res) {`
</div>
<div class="line number439 index438 alt2">
` ``setSecondaryMenu(LayoutInflater.from(getContext()).inflate(res, ``null``));`
</div>
<div class="line number440 index439 alt1">
` ``}`
</div>
<div class="line number441 index440 alt2">
</div>
<div class="line number442 index441 alt1">
` ``/**`
</div>
<div class="line number443 index442 alt2">
` ``* Set the secondary behind view (right menu) content to the given View.`
</div>
<div class="line number444 index443 alt1">
` ``*`
</div>
<div class="line number445 index444 alt2">
` ``* @param view`
</div>
<div class="line number446 index445 alt1">
` ``* The desired content to display.`
</div>
<div class="line number447 index446 alt2">
` ``*/`
</div>
<div class="line number448 index447 alt1">
` ``public` `void` `setSecondaryMenu(View v) {`
</div>
<div class="line number449 index448 alt2">
` ``mViewBehind.setSecondaryContent(v);`
</div>
<div class="line number450 index449 alt1">
` ``// mViewBehind.invalidate();`
</div>
<div class="line number451 index450 alt2">
` ``}`
</div>
<div class="line number452 index451 alt1">
</div>
<div class="line number453 index452 alt2">
` ``/**`
</div>
<div class="line number454 index453 alt1">
` ``* Retrieves the current secondary menu (right).`
</div>
<div class="line number455 index454 alt2">
` ``*`
</div>
<div class="line number456 index455 alt1">
` ``* @return the current menu`
</div>
<div class="line number457 index456 alt2">
` ``*/`
</div>
<div class="line number458 index457 alt1">
` ``public` `View getSecondaryMenu() {`
</div>
<div class="line number459 index458 alt2">
` ``return` `mViewBehind.getSecondaryContent();`
</div>
<div class="line number460 index459 alt1">
` ``}`
</div>
<div class="line number461 index460 alt2">
</div>
<div class="line number462 index461 alt1">
` ``/**`
</div>
<div class="line number463 index462 alt2">
` ``* Sets the sliding enabled.`
</div>
<div class="line number464 index463 alt1">
` ``*`
</div>
<div class="line number465 index464 alt2">
` ``* @param b`
</div>
<div class="line number466 index465 alt1">
` ``* true to enable sliding, false to disable it.`
</div>
<div class="line number467 index466 alt2">
` ``*/`
</div>
<div class="line number468 index467 alt1">
` ``public` `void` `setSlidingEnabled(``boolean` `b) {`
</div>
<div class="line number469 index468 alt2">
` ``mViewAbove.setSlidingEnabled(b);`
</div>
<div class="line number470 index469 alt1">
` ``}`
</div>
<div class="line number471 index470 alt2">
</div>
<div class="line number472 index471 alt1">
` ``/**`
</div>
<div class="line number473 index472 alt2">
` ``* Checks if is sliding enabled.`
</div>
<div class="line number474 index473 alt1">
` ``*`
</div>
<div class="line number475 index474 alt2">
` ``* @return true, if is sliding enabled`
</div>
<div class="line number476 index475 alt1">
` ``*/`
</div>
<div class="line number477 index476 alt2">
` ``public` `boolean` `isSlidingEnabled() {`
</div>
<div class="line number478 index477 alt1">
` ``return` `mViewAbove.isSlidingEnabled();`
</div>
<div class="line number479 index478 alt2">
` ``}`
</div>
<div class="line number480 index479 alt1">
</div>
<div class="line number481 index480 alt2">
` ``/**`
</div>
<div class="line number482 index481 alt1">
` ``* Sets which side the SlidingMenu should appear on.`
</div>
<div class="line number483 index482 alt2">
` ``*`
</div>
<div class="line number484 index483 alt1">
` ``* @param mode`
</div>
<div class="line number485 index484 alt2">
` ``* must be either SlidingMenu.LEFT or SlidingMenu.RIGHT`
</div>
<div class="line number486 index485 alt1">
` ``*/`
</div>
<div class="line number487 index486 alt2">
` ``public` `void` `setMode(``int` `mode) {`
</div>
<div class="line number488 index487 alt1">
` ``if` `(mode != LEFT && mode != RIGHT && mode != LEFT_RIGHT) {`
</div>
<div class="line number489 index488 alt2">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number490 index489 alt1">
` ``"SlidingMenu mode must be LEFT, RIGHT, or LEFT_RIGHT"``);`
</div>
<div class="line number491 index490 alt2">
` ``}`
</div>
<div class="line number492 index491 alt1">
` ``mViewBehind.setMode(mode);`
</div>
<div class="line number493 index492 alt2">
` ``}`
</div>
<div class="line number494 index493 alt1">
</div>
<div class="line number495 index494 alt2">
` ``/**`
</div>
<div class="line number496 index495 alt1">
` ``* Returns the current side that the SlidingMenu is on.`
</div>
<div class="line number497 index496 alt2">
` ``*`
</div>
<div class="line number498 index497 alt1">
` ``* @return the current mode, either SlidingMenu.LEFT or SlidingMenu.RIGHT`
</div>
<div class="line number499 index498 alt2">
` ``*/`
</div>
<div class="line number500 index499 alt1">
` ``public` `int` `getMode() {`
</div>
<div class="line number501 index500 alt2">
` ``return` `mViewBehind.getMode();`
</div>
<div class="line number502 index501 alt1">
` ``}`
</div>
<div class="line number503 index502 alt2">
</div>
<div class="line number504 index503 alt1">
` ``/**`
</div>
<div class="line number505 index504 alt2">
` ``* Sets whether or not the SlidingMenu is in static mode (i.e. nothing is`
</div>
<div class="line number506 index505 alt1">
` ``* moving and everything is showing)`
</div>
<div class="line number507 index506 alt2">
` ``*`
</div>
<div class="line number508 index507 alt1">
` ``* @param b`
</div>
<div class="line number509 index508 alt2">
` ``* true to set static mode, false to disable static mode.`
</div>
<div class="line number510 index509 alt1">
` ``*/`
</div>
<div class="line number511 index510 alt2">
` ``public` `void` `setStatic(``boolean` `b) {`
</div>
<div class="line number512 index511 alt1">
` ``if` `(b) {`
</div>
<div class="line number513 index512 alt2">
` ``setSlidingEnabled(``false``);`
</div>
<div class="line number514 index513 alt1">
` ``mViewAbove.setCustomViewBehind(``null``);`
</div>
<div class="line number515 index514 alt2">
` ``mViewAbove.setCurrentItem(``1``);`
</div>
<div class="line number516 index515 alt1">
` ``// mViewBehind.setCurrentItem(0);`
</div>
<div class="line number517 index516 alt2">
` ``} ``else` `{`
</div>
<div class="line number518 index517 alt1">
` ``mViewAbove.setCurrentItem(``1``);`
</div>
<div class="line number519 index518 alt2">
` ``// mViewBehind.setCurrentItem(1);`
</div>
<div class="line number520 index519 alt1">
` ``mViewAbove.setCustomViewBehind(mViewBehind);`
</div>
<div class="line number521 index520 alt2">
` ``setSlidingEnabled(``true``);`
</div>
<div class="line number522 index521 alt1">
` ``}`
</div>
<div class="line number523 index522 alt2">
` ``}`
</div>
<div class="line number524 index523 alt1">
</div>
<div class="line number525 index524 alt2">
` ``/**`
</div>
<div class="line number526 index525 alt1">
` ``* Opens the menu and shows the menu view.`
</div>
<div class="line number527 index526 alt2">
` ``*/`
</div>
<div class="line number528 index527 alt1">
` ``public` `void` `showMenu() {`
</div>
<div class="line number529 index528 alt2">
` ``showMenu(``true``);`
</div>
<div class="line number530 index529 alt1">
` ``}`
</div>
<div class="line number531 index530 alt2">
</div>
<div class="line number532 index531 alt1">
` ``/**`
</div>
<div class="line number533 index532 alt2">
` ``* Opens the menu and shows the menu view.`
</div>
<div class="line number534 index533 alt1">
` ``*`
</div>
<div class="line number535 index534 alt2">
` ``* @param animate`
</div>
<div class="line number536 index535 alt1">
` ``* true to animate the transition, false to ignore animation`
</div>
<div class="line number537 index536 alt2">
` ``*/`
</div>
<div class="line number538 index537 alt1">
` ``public` `void` `showMenu(``boolean` `animate) {`
</div>
<div class="line number539 index538 alt2">
` ``mViewAbove.setCurrentItem(````, animate);`
</div>
<div class="line number540 index539 alt1">
` ``}`
</div>
<div class="line number541 index540 alt2">
</div>
<div class="line number542 index541 alt1">
` ``/**`
</div>
<div class="line number543 index542 alt2">
` ``* Opens the menu and shows the secondary menu view. Will default to the`
</div>
<div class="line number544 index543 alt1">
` ``* regular menu if there is only one.`
</div>
<div class="line number545 index544 alt2">
` ``*/`
</div>
<div class="line number546 index545 alt1">
` ``public` `void` `showSecondaryMenu() {`
</div>
<div class="line number547 index546 alt2">
` ``showSecondaryMenu(``true``);`
</div>
<div class="line number548 index547 alt1">
` ``}`
</div>
<div class="line number549 index548 alt2">
</div>
<div class="line number550 index549 alt1">
` ``/**`
</div>
<div class="line number551 index550 alt2">
` ``* Opens the menu and shows the secondary (right) menu view. Will default to`
</div>
<div class="line number552 index551 alt1">
` ``* the regular menu if there is only one.`
</div>
<div class="line number553 index552 alt2">
` ``*`
</div>
<div class="line number554 index553 alt1">
` ``* @param animate`
</div>
<div class="line number555 index554 alt2">
` ``* true to animate the transition, false to ignore animation`
</div>
<div class="line number556 index555 alt1">
` ``*/`
</div>
<div class="line number557 index556 alt2">
` ``public` `void` `showSecondaryMenu(``boolean` `animate) {`
</div>
<div class="line number558 index557 alt1">
` ``mViewAbove.setCurrentItem(``2``, animate);`
</div>
<div class="line number559 index558 alt2">
` ``}`
</div>
<div class="line number560 index559 alt1">
</div>
<div class="line number561 index560 alt2">
` ``/**`
</div>
<div class="line number562 index561 alt1">
` ``* Closes the menu and shows the above view.`
</div>
<div class="line number563 index562 alt2">
` ``*/`
</div>
<div class="line number564 index563 alt1">
` ``public` `void` `showContent() {`
</div>
<div class="line number565 index564 alt2">
` ``showContent(``true``);`
</div>
<div class="line number566 index565 alt1">
` ``}`
</div>
<div class="line number567 index566 alt2">
</div>
<div class="line number568 index567 alt1">
` ``/**`
</div>
<div class="line number569 index568 alt2">
` ``* Closes the menu and shows the above view.`
</div>
<div class="line number570 index569 alt1">
` ``*`
</div>
<div class="line number571 index570 alt2">
` ``* @param animate`
</div>
<div class="line number572 index571 alt1">
` ``* true to animate the transition, false to ignore animation`
</div>
<div class="line number573 index572 alt2">
` ``*/`
</div>
<div class="line number574 index573 alt1">
` ``public` `void` `showContent(``boolean` `animate) {`
</div>
<div class="line number575 index574 alt2">
` ``mViewAbove.setCurrentItem(``1``, animate);`
</div>
<div class="line number576 index575 alt1">
` ``}`
</div>
<div class="line number577 index576 alt2">
</div>
<div class="line number578 index577 alt1">
` ``/**`
</div>
<div class="line number579 index578 alt2">
` ``* Toggle the SlidingMenu. If it is open, it will be closed, and vice versa.`
</div>
<div class="line number580 index579 alt1">
` ``*/`
</div>
<div class="line number581 index580 alt2">
` ``public` `void` `toggle() {`
</div>
<div class="line number582 index581 alt1">
` ``toggle(``true``);`
</div>
<div class="line number583 index582 alt2">
` ``}`
</div>
<div class="line number584 index583 alt1">
</div>
<div class="line number585 index584 alt2">
` ``/**`
</div>
<div class="line number586 index585 alt1">
` ``* Toggle the SlidingMenu. If it is open, it will be closed, and vice versa.`
</div>
<div class="line number587 index586 alt2">
` ``*`
</div>
<div class="line number588 index587 alt1">
` ``* @param animate`
</div>
<div class="line number589 index588 alt2">
` ``* true to animate the transition, false to ignore animation`
</div>
<div class="line number590 index589 alt1">
` ``*/`
</div>
<div class="line number591 index590 alt2">
` ``public` `void` `toggle(``boolean` `animate) {`
</div>
<div class="line number592 index591 alt1">
` ``if` `(isMenuShowing()) {`
</div>
<div class="line number593 index592 alt2">
` ``showContent(animate);`
</div>
<div class="line number594 index593 alt1">
` ``} ``else` `{`
</div>
<div class="line number595 index594 alt2">
` ``showMenu(animate);`
</div>
<div class="line number596 index595 alt1">
` ``}`
</div>
<div class="line number597 index596 alt2">
` ``}`
</div>
<div class="line number598 index597 alt1">
</div>
<div class="line number599 index598 alt2">
` ``/**`
</div>
<div class="line number600 index599 alt1">
` ``* Checks if is the behind view showing.`
</div>
<div class="line number601 index600 alt2">
` ``*`
</div>
<div class="line number602 index601 alt1">
` ``* @return Whether or not the behind view is showing`
</div>
<div class="line number603 index602 alt2">
` ``*/`
</div>
<div class="line number604 index603 alt1">
` ``public` `boolean` `isMenuShowing() {`
</div>
<div class="line number605 index604 alt2">
` ``return` `mViewAbove.getCurrentItem() == ```
</div>
<div class="line number606 index605 alt1">
` ``|| mViewAbove.getCurrentItem() == ``2``;`
</div>
<div class="line number607 index606 alt2">
` ``}`
</div>
<div class="line number608 index607 alt1">
</div>
<div class="line number609 index608 alt2">
` ``/**`
</div>
<div class="line number610 index609 alt1">
` ``* Checks if is the behind view showing.`
</div>
<div class="line number611 index610 alt2">
` ``*`
</div>
<div class="line number612 index611 alt1">
` ``* @return Whether or not the behind view is showing`
</div>
<div class="line number613 index612 alt2">
` ``*/`
</div>
<div class="line number614 index613 alt1">
` ``public` `boolean` `isSecondaryMenuShowing() {`
</div>
<div class="line number615 index614 alt2">
` ``return` `mViewAbove.getCurrentItem() == ``2``;`
</div>
<div class="line number616 index615 alt1">
` ``}`
</div>
<div class="line number617 index616 alt2">
</div>
<div class="line number618 index617 alt1">
` ``/**`
</div>
<div class="line number619 index618 alt2">
` ``* Gets the behind offset.`
</div>
<div class="line number620 index619 alt1">
` ``*`
</div>
<div class="line number621 index620 alt2">
` ``* @return The margin on the right of the screen that the behind view`
</div>
<div class="line number622 index621 alt1">
` ``* scrolls to`
</div>
<div class="line number623 index622 alt2">
` ``*/`
</div>
<div class="line number624 index623 alt1">
` ``public` `int` `getBehindOffset() {`
</div>
<div class="line number625 index624 alt2">
` ``return` `((RelativeLayout.LayoutParams) mViewBehind.getLayoutParams()).rightMargin;`
</div>
<div class="line number626 index625 alt1">
` ``}`
</div>
<div class="line number627 index626 alt2">
</div>
<div class="line number628 index627 alt1">
` ``/**`
</div>
<div class="line number629 index628 alt2">
` ``* Sets the behind offset.`
</div>
<div class="line number630 index629 alt1">
` ``*`
</div>
<div class="line number631 index630 alt2">
` ``* @param i`
</div>
<div class="line number632 index631 alt1">
` ``* The margin, in pixels, on the right of the screen that the`
</div>
<div class="line number633 index632 alt2">
` ``* behind view scrolls to.`
</div>
<div class="line number634 index633 alt1">
` ``*/`
</div>
<div class="line number635 index634 alt2">
` ``public` `void` `setBehindOffset(``int` `i) {`
</div>
<div class="line number636 index635 alt1">
` ``// RelativeLayout.LayoutParams params =`
</div>
<div class="line number637 index636 alt2">
` ``// ((RelativeLayout.LayoutParams)mViewBehind.getLayoutParams());`
</div>
<div class="line number638 index637 alt1">
` ``// int bottom = params.bottomMargin;`
</div>
<div class="line number639 index638 alt2">
` ``// int top = params.topMargin;`
</div>
<div class="line number640 index639 alt1">
` ``// int left = params.leftMargin;`
</div>
<div class="line number641 index640 alt2">
` ``// params.setMargins(left, top, i, bottom);`
</div>
<div class="line number642 index641 alt1">
` ``mViewBehind.setWidthOffset(i);`
</div>
<div class="line number643 index642 alt2">
` ``}`
</div>
<div class="line number644 index643 alt1">
</div>
<div class="line number645 index644 alt2">
` ``/**`
</div>
<div class="line number646 index645 alt1">
` ``* Sets the behind offset.`
</div>
<div class="line number647 index646 alt2">
` ``*`
</div>
<div class="line number648 index647 alt1">
` ``* @param resID`
</div>
<div class="line number649 index648 alt2">
` ``* The dimension resource id to be set as the behind offset. The`
</div>
<div class="line number650 index649 alt1">
` ``* menu, when open, will leave this width margin on the right of`
</div>
<div class="line number651 index650 alt2">
` ``* the screen.`
</div>
<div class="line number652 index651 alt1">
` ``*/`
</div>
<div class="line number653 index652 alt2">
` ``public` `void` `setBehindOffsetRes(``int` `resID) {`
</div>
<div class="line number654 index653 alt1">
` ``int` `i = (``int``) getContext().getResources().getDimension(resID);`
</div>
<div class="line number655 index654 alt2">
` ``setBehindOffset(i);`
</div>
<div class="line number656 index655 alt1">
` ``}`
</div>
<div class="line number657 index656 alt2">
</div>
<div class="line number658 index657 alt1">
` ``/**`
</div>
<div class="line number659 index658 alt2">
` ``* Sets the above offset.`
</div>
<div class="line number660 index659 alt1">
` ``*`
</div>
<div class="line number661 index660 alt2">
` ``* @param i`
</div>
<div class="line number662 index661 alt1">
` ``* the new above offset, in pixels`
</div>
<div class="line number663 index662 alt2">
` ``*/`
</div>
<div class="line number664 index663 alt1">
` ``public` `void` `setAboveOffset(``int` `i) {`
</div>
<div class="line number665 index664 alt2">
` ``mViewAbove.setAboveOffset(i);`
</div>
<div class="line number666 index665 alt1">
` ``}`
</div>
<div class="line number667 index666 alt2">
</div>
<div class="line number668 index667 alt1">
` ``/**`
</div>
<div class="line number669 index668 alt2">
` ``* Sets the above offset.`
</div>
<div class="line number670 index669 alt1">
` ``*`
</div>
<div class="line number671 index670 alt2">
` ``* @param resID`
</div>
<div class="line number672 index671 alt1">
` ``* The dimension resource id to be set as the above offset.`
</div>
<div class="line number673 index672 alt2">
` ``*/`
</div>
<div class="line number674 index673 alt1">
` ``public` `void` `setAboveOffsetRes(``int` `resID) {`
</div>
<div class="line number675 index674 alt2">
` ``int` `i = (``int``) getContext().getResources().getDimension(resID);`
</div>
<div class="line number676 index675 alt1">
` ``setAboveOffset(i);`
</div>
<div class="line number677 index676 alt2">
` ``}`
</div>
<div class="line number678 index677 alt1">
</div>
<div class="line number679 index678 alt2">
` ``/**`
</div>
<div class="line number680 index679 alt1">
` ``* Sets the behind width.`
</div>
<div class="line number681 index680 alt2">
` ``*`
</div>
<div class="line number682 index681 alt1">
` ``* @param i`
</div>
<div class="line number683 index682 alt2">
` ``* The width the Sliding Menu will open to, in pixels`
</div>
<div class="line number684 index683 alt1">
` ``*/`
</div>
<div class="line number685 index684 alt2">
` ``@SuppressWarnings``(``"deprecation"``)`
</div>
<div class="line number686 index685 alt1">
` ``public` `void` `setBehindWidth(``int` `i) {`
</div>
<div class="line number687 index686 alt2">
` ``int` `width;`
</div>
<div class="line number688 index687 alt1">
` ``Display display = ((WindowManager) getContext().getSystemService(`
</div>
<div class="line number689 index688 alt2">
` ``Context.WINDOW_SERVICE)).getDefaultDisplay();`
</div>
<div class="line number690 index689 alt1">
` ``try` `{`
</div>
<div class="line number691 index690 alt2">
` ``Class<?> cls = Display.``class``;`
</div>
<div class="line number692 index691 alt1">
` ``Class<?>[] parameterTypes = { Point.``class` `};`
</div>
<div class="line number693 index692 alt2">
` ``Point parameter = ``new` `Point();`
</div>
<div class="line number694 index693 alt1">
` ``Method method = cls.getMethod(``"getSize"``, parameterTypes);`
</div>
<div class="line number695 index694 alt2">
` ``method.invoke(display, parameter);`
</div>
<div class="line number696 index695 alt1">
` ``width = parameter.x;`
</div>
<div class="line number697 index696 alt2">
` ``} ``catch` `(Exception e) {`
</div>
<div class="line number698 index697 alt1">
` ``width = display.getWidth();`
</div>
<div class="line number699 index698 alt2">
` ``}`
</div>
<div class="line number700 index699 alt1">
` ``setBehindOffset(width - i);`
</div>
<div class="line number701 index700 alt2">
` ``}`
</div>
<div class="line number702 index701 alt1">
</div>
<div class="line number703 index702 alt2">
` ``/**`
</div>
<div class="line number704 index703 alt1">
` ``* Sets the behind width.`
</div>
<div class="line number705 index704 alt2">
` ``*`
</div>
<div class="line number706 index705 alt1">
` ``* @param res`
</div>
<div class="line number707 index706 alt2">
` ``* The dimension resource id to be set as the behind width`
</div>
<div class="line number708 index707 alt1">
` ``* offset. The menu, when open, will open this wide.`
</div>
<div class="line number709 index708 alt2">
` ``*/`
</div>
<div class="line number710 index709 alt1">
` ``public` `void` `setBehindWidthRes(``int` `res) {`
</div>
<div class="line number711 index710 alt2">
` ``int` `i = (``int``) getContext().getResources().getDimension(res);`
</div>
<div class="line number712 index711 alt1">
` ``setBehindWidth(i);`
</div>
<div class="line number713 index712 alt2">
` ``}`
</div>
<div class="line number714 index713 alt1">
</div>
<div class="line number715 index714 alt2">
` ``/**`
</div>
<div class="line number716 index715 alt1">
` ``* Gets the behind scroll scale.`
</div>
<div class="line number717 index716 alt2">
` ``*`
</div>
<div class="line number718 index717 alt1">
` ``* @return The scale of the parallax scroll`
</div>
<div class="line number719 index718 alt2">
` ``*/`
</div>
<div class="line number720 index719 alt1">
` ``public` `float` `getBehindScrollScale() {`
</div>
<div class="line number721 index720 alt2">
` ``return` `mViewBehind.getScrollScale();`
</div>
<div class="line number722 index721 alt1">
` ``}`
</div>
<div class="line number723 index722 alt2">
</div>
<div class="line number724 index723 alt1">
` ``/**`
</div>
<div class="line number725 index724 alt2">
` ``* Gets the touch mode margin threshold`
</div>
<div class="line number726 index725 alt1">
` ``*`
</div>
<div class="line number727 index726 alt2">
` ``* @return the touch mode margin threshold`
</div>
<div class="line number728 index727 alt1">
` ``*/`
</div>
<div class="line number729 index728 alt2">
` ``public` `int` `getTouchmodeMarginThreshold() {`
</div>
<div class="line number730 index729 alt1">
` ``return` `mViewBehind.getMarginThreshold();`
</div>
<div class="line number731 index730 alt2">
` ``}`
</div>
<div class="line number732 index731 alt1">
</div>
<div class="line number733 index732 alt2">
` ``/**`
</div>
<div class="line number734 index733 alt1">
` ``* Set the touch mode margin threshold`
</div>
<div class="line number735 index734 alt2">
` ``*`
</div>
<div class="line number736 index735 alt1">
` ``* @param touchmodeMarginThreshold`
</div>
<div class="line number737 index736 alt2">
` ``*/`
</div>
<div class="line number738 index737 alt1">
` ``public` `void` `setTouchmodeMarginThreshold(``int` `touchmodeMarginThreshold) {`
</div>
<div class="line number739 index738 alt2">
` ``mViewBehind.setMarginThreshold(touchmodeMarginThreshold);`
</div>
<div class="line number740 index739 alt1">
` ``}`
</div>
<div class="line number741 index740 alt2">
</div>
<div class="line number742 index741 alt1">
` ``/**`
</div>
<div class="line number743 index742 alt2">
` ``* Sets the behind scroll scale.`
</div>
<div class="line number744 index743 alt1">
` ``*`
</div>
<div class="line number745 index744 alt2">
` ``* @param f`
</div>
<div class="line number746 index745 alt1">
` ``* The scale of the parallax scroll (i.e. 1.0f scrolls 1 pixel`
</div>
<div class="line number747 index746 alt2">
` ``* for every 1 pixel that the above view scrolls and 0.0f scrolls`
</div>
<div class="line number748 index747 alt1">
` ``* 0 pixels)`
</div>
<div class="line number749 index748 alt2">
` ``*/`
</div>
<div class="line number750 index749 alt1">
` ``public` `void` `setBehindScrollScale(``float` `f) {`
</div>
<div class="line number751 index750 alt2">
` ``if` `(f < ``` `&& f > ``1``)`
</div>
<div class="line number752 index751 alt1">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number753 index752 alt2">
` ``"ScrollScale must be between 0 and 1"``);`
</div>
<div class="line number754 index753 alt1">
` ``mViewBehind.setScrollScale(f);`
</div>
<div class="line number755 index754 alt2">
` ``}`
</div>
<div class="line number756 index755 alt1">
</div>
<div class="line number757 index756 alt2">
` ``/**`
</div>
<div class="line number758 index757 alt1">
` ``* Sets the behind canvas transformer.`
</div>
<div class="line number759 index758 alt2">
` ``*`
</div>
<div class="line number760 index759 alt1">
` ``* @param t`
</div>
<div class="line number761 index760 alt2">
` ``* the new behind canvas transformer`
</div>
<div class="line number762 index761 alt1">
` ``*/`
</div>
<div class="line number763 index762 alt2">
` ``public` `void` `setBehindCanvasTransformer(CanvasTransformer t) {`
</div>
<div class="line number764 index763 alt1">
` ``mViewBehind.setCanvasTransformer(t);`
</div>
<div class="line number765 index764 alt2">
` ``}`
</div>
<div class="line number766 index765 alt1">
</div>
<div class="line number767 index766 alt2">
` ``/**`
</div>
<div class="line number768 index767 alt1">
` ``* 设置右侧视图的转场动画`
</div>
<div class="line number769 index768 alt2">
` ``*`
</div>
<div class="line number770 index769 alt1">
` ``* @param t`
</div>
<div class="line number771 index770 alt2">
` ``* the new above canvas transformer`
</div>
<div class="line number772 index771 alt1">
` ``*/`
</div>
<div class="line number773 index772 alt2">
` ``public` `void` `setAboveCanvasTransformer(CanvasTransformer t) {`
</div>
<div class="line number774 index773 alt1">
` ``mViewAbove.setCanvasTransformer(t);`
</div>
<div class="line number775 index774 alt2">
` ``}`
</div>
<div class="line number776 index775 alt1">
</div>
<div class="line number777 index776 alt2">
` ``/**`
</div>
<div class="line number778 index777 alt1">
` ``* Gets the touch mode above.`
</div>
<div class="line number779 index778 alt2">
` ``*`
</div>
<div class="line number780 index779 alt1">
` ``* @return the touch mode above`
</div>
<div class="line number781 index780 alt2">
` ``*/`
</div>
<div class="line number782 index781 alt1">
` ``public` `int` `getTouchModeAbove() {`
</div>
<div class="line number783 index782 alt2">
` ``return` `mViewAbove.getTouchMode();`
</div>
<div class="line number784 index783 alt1">
` ``}`
</div>
<div class="line number785 index784 alt2">
</div>
<div class="line number786 index785 alt1">
` ``/**`
</div>
<div class="line number787 index786 alt2">
` ``* Controls whether the SlidingMenu can be opened with a swipe gesture.`
</div>
<div class="line number788 index787 alt1">
` ``* Options are {@link #TOUCHMODE_MARGIN TOUCHMODE_MARGIN},`
</div>
<div class="line number789 index788 alt2">
` ``* {@link #TOUCHMODE_FULLSCREEN TOUCHMODE_FULLSCREEN}, or`
</div>
<div class="line number790 index789 alt1">
` ``* {@link #TOUCHMODE_NONE TOUCHMODE_NONE}`
</div>
<div class="line number791 index790 alt2">
` ``*`
</div>
<div class="line number792 index791 alt1">
` ``* @param i`
</div>
<div class="line number793 index792 alt2">
` ``* the new touch mode`
</div>
<div class="line number794 index793 alt1">
` ``*/`
</div>
<div class="line number795 index794 alt2">
` ``public` `void` `setTouchModeAbove(``int` `i) {`
</div>
<div class="line number796 index795 alt1">
` ``if` `(i != TOUCHMODE_FULLSCREEN && i != TOUCHMODE_MARGIN`
</div>
<div class="line number797 index796 alt2">
` ``&& i != TOUCHMODE_NONE) {`
</div>
<div class="line number798 index797 alt1">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number799 index798 alt2">
` ``"TouchMode must be set to either"`
</div>
<div class="line number800 index799 alt1">
` ``+ ``"TOUCHMODE_FULLSCREEN or TOUCHMODE_MARGIN or TOUCHMODE_NONE."``);`
</div>
<div class="line number801 index800 alt2">
` ``}`
</div>
<div class="line number802 index801 alt1">
` ``mViewAbove.setTouchMode(i);`
</div>
<div class="line number803 index802 alt2">
` ``}`
</div>
<div class="line number804 index803 alt1">
</div>
<div class="line number805 index804 alt2">
` ``/**`
</div>
<div class="line number806 index805 alt1">
` ``* Controls whether the SlidingMenu can be opened with a swipe gesture.`
</div>
<div class="line number807 index806 alt2">
` ``* Options are {@link #TOUCHMODE_MARGIN TOUCHMODE_MARGIN},`
</div>
<div class="line number808 index807 alt1">
` ``* {@link #TOUCHMODE_FULLSCREEN TOUCHMODE_FULLSCREEN}, or`
</div>
<div class="line number809 index808 alt2">
` ``* {@link #TOUCHMODE_NONE TOUCHMODE_NONE}`
</div>
<div class="line number810 index809 alt1">
` ``*`
</div>
<div class="line number811 index810 alt2">
` ``* @param i`
</div>
<div class="line number812 index811 alt1">
` ``* the new touch mode`
</div>
<div class="line number813 index812 alt2">
` ``*/`
</div>
<div class="line number814 index813 alt1">
` ``public` `void` `setTouchModeBehind(``int` `i) {`
</div>
<div class="line number815 index814 alt2">
` ``if` `(i != TOUCHMODE_FULLSCREEN && i != TOUCHMODE_MARGIN`
</div>
<div class="line number816 index815 alt1">
` ``&& i != TOUCHMODE_NONE) {`
</div>
<div class="line number817 index816 alt2">
` ``throw` `new` `IllegalStateException(`
</div>
<div class="line number818 index817 alt1">
` ``"TouchMode must be set to either"`
</div>
<div class="line number819 index818 alt2">
` ``+ ``"TOUCHMODE_FULLSCREEN or TOUCHMODE_MARGIN or TOUCHMODE_NONE."``);`
</div>
<div class="line number820 index819 alt1">
` ``}`
</div>
<div class="line number821 index820 alt2">
` ``mViewBehind.setTouchMode(i);`
</div>
<div class="line number822 index821 alt1">
` ``}`
</div>
<div class="line number823 index822 alt2">
</div>
<div class="line number824 index823 alt1">
` ``/**`
</div>
<div class="line number825 index824 alt2">
` ``* Sets the shadow drawable.`
</div>
<div class="line number826 index825 alt1">
` ``*`
</div>
<div class="line number827 index826 alt2">
` ``* @param resId`
</div>
<div class="line number828 index827 alt1">
` ``* the resource ID of the new shadow drawable`
</div>
<div class="line number829 index828 alt2">
` ``*/`
</div>
<div class="line number830 index829 alt1">
` ``public` `void` `setShadowDrawable(``int` `resId) {`
</div>
<div class="line number831 index830 alt2">
` ``setShadowDrawable(getContext().getResources().getDrawable(resId));`
</div>
<div class="line number832 index831 alt1">
` ``}`
</div>
<div class="line number833 index832 alt2">
</div>
<div class="line number834 index833 alt1">
` ``/**`
</div>
<div class="line number835 index834 alt2">
` ``* Sets the shadow drawable.`
</div>
<div class="line number836 index835 alt1">
` ``*`
</div>
<div class="line number837 index836 alt2">
` ``* @param d`
</div>
<div class="line number838 index837 alt1">
` ``* the new shadow drawable`
</div>
<div class="line number839 index838 alt2">
` ``*/`
</div>
<div class="line number840 index839 alt1">
` ``public` `void` `setShadowDrawable(Drawable d) {`
</div>
<div class="line number841 index840 alt2">
` ``mViewBehind.setShadowDrawable(d);`
</div>
<div class="line number842 index841 alt1">
` ``}`
</div>
<div class="line number843 index842 alt2">
</div>
<div class="line number844 index843 alt1">
` ``/**`
</div>
<div class="line number845 index844 alt2">
` ``* Sets the secondary (right) shadow drawable.`
</div>
<div class="line number846 index845 alt1">
` ``*`
</div>
<div class="line number847 index846 alt2">
` ``* @param resId`
</div>
<div class="line number848 index847 alt1">
` ``* the resource ID of the new shadow drawable`
</div>
<div class="line number849 index848 alt2">
` ``*/`
</div>
<div class="line number850 index849 alt1">
` ``public` `void` `setSecondaryShadowDrawable(``int` `resId) {`
</div>
<div class="line number851 index850 alt2">
` ``setSecondaryShadowDrawable(getContext().getResources().getDrawable(`
</div>
<div class="line number852 index851 alt1">
` ``resId));`
</div>
<div class="line number853 index852 alt2">
` ``}`
</div>
<div class="line number854 index853 alt1">
</div>
<div class="line number855 index854 alt2">
` ``/**`
</div>
<div class="line number856 index855 alt1">
` ``* Sets the secondary (right) shadow drawable.`
</div>
<div class="line number857 index856 alt2">
` ``*`
</div>
<div class="line number858 index857 alt1">
` ``* @param d`
</div>
<div class="line number859 index858 alt2">
` ``* the new shadow drawable`
</div>
<div class="line number860 index859 alt1">
` ``*/`
</div>
<div class="line number861 index860 alt2">
` ``public` `void` `setSecondaryShadowDrawable(Drawable d) {`
</div>
<div class="line number862 index861 alt1">
` ``mViewBehind.setSecondaryShadowDrawable(d);`
</div>
<div class="line number863 index862 alt2">
` ``}`
</div>
<div class="line number864 index863 alt1">
</div>
<div class="line number865 index864 alt2">
` ``/**`
</div>
<div class="line number866 index865 alt1">
` ``* Sets the shadow width.`
</div>
<div class="line number867 index866 alt2">
` ``*`
</div>
<div class="line number868 index867 alt1">
` ``* @param resId`
</div>
<div class="line number869 index868 alt2">
` ``* The dimension resource id to be set as the shadow width.`
</div>
<div class="line number870 index869 alt1">
` ``*/`
</div>
<div class="line number871 index870 alt2">
` ``public` `void` `setShadowWidthRes(``int` `resId) {`
</div>
<div class="line number872 index871 alt1">
` ``setShadowWidth((``int``) getResources().getDimension(resId));`
</div>
<div class="line number873 index872 alt2">
` ``}`
</div>
<div class="line number874 index873 alt1">
</div>
<div class="line number875 index874 alt2">
` ``/**`
</div>
<div class="line number876 index875 alt1">
` ``* Sets the shadow width.`
</div>
<div class="line number877 index876 alt2">
` ``*`
</div>
<div class="line number878 index877 alt1">
` ``* @param pixels`
</div>
<div class="line number879 index878 alt2">
` ``* the new shadow width, in pixels`
</div>
<div class="line number880 index879 alt1">
` ``*/`
</div>
<div class="line number881 index880 alt2">
` ``public` `void` `setShadowWidth(``int` `pixels) {`
</div>
<div class="line number882 index881 alt1">
` ``mViewBehind.setShadowWidth(pixels);`
</div>
<div class="line number883 index882 alt2">
` ``}`
</div>
<div class="line number884 index883 alt1">
</div>
<div class="line number885 index884 alt2">
` ``/**`
</div>
<div class="line number886 index885 alt1">
` ``* Enables or disables the SlidingMenu's fade in and out`
</div>
<div class="line number887 index886 alt2">
` ``*`
</div>
<div class="line number888 index887 alt1">
` ``* @param b`
</div>
<div class="line number889 index888 alt2">
` ``* true to enable fade, false to disable it`
</div>
<div class="line number890 index889 alt1">
` ``*/`
</div>
<div class="line number891 index890 alt2">
` ``public` `void` `setFadeEnabled(``boolean` `b) {`
</div>
<div class="line number892 index891 alt1">
` ``mViewBehind.setFadeEnabled(b);`
</div>
<div class="line number893 index892 alt2">
` ``}`
</div>
<div class="line number894 index893 alt1">
</div>
<div class="line number895 index894 alt2">
` ``/**`
</div>
<div class="line number896 index895 alt1">
` ``* Sets how much the SlidingMenu fades in and out. Fade must be enabled, see`
</div>
<div class="line number897 index896 alt2">
` ``* {@link #setFadeEnabled(boolean) setFadeEnabled(boolean)}`
</div>
<div class="line number898 index897 alt1">
` ``*`
</div>
<div class="line number899 index898 alt2">
` ``* @param f`
</div>
<div class="line number900 index899 alt1">
` ``* the new fade degree, between 0.0f and 1.0f`
</div>
<div class="line number901 index900 alt2">
` ``*/`
</div>
<div class="line number902 index901 alt1">
` ``public` `void` `setFadeDegree(``float` `f) {`
</div>
<div class="line number903 index902 alt2">
` ``mViewBehind.setFadeDegree(f);`
</div>
<div class="line number904 index903 alt1">
` ``}`
</div>
<div class="line number905 index904 alt2">
</div>
<div class="line number906 index905 alt1">
` ``/**`
</div>
<div class="line number907 index906 alt2">
` ``* Enables or disables whether the selector is drawn`
</div>
<div class="line number908 index907 alt1">
` ``*`
</div>
<div class="line number909 index908 alt2">
` ``* @param b`
</div>
<div class="line number910 index909 alt1">
` ``* true to draw the selector, false to not draw the selector`
</div>
<div class="line number911 index910 alt2">
` ``*/`
</div>
<div class="line number912 index911 alt1">
` ``public` `void` `setSelectorEnabled(``boolean` `b) {`
</div>
<div class="line number913 index912 alt2">
` ``mViewBehind.setSelectorEnabled(``true``);`
</div>
<div class="line number914 index913 alt1">
` ``}`
</div>
<div class="line number915 index914 alt2">
</div>
<div class="line number916 index915 alt1">
` ``/**`
</div>
<div class="line number917 index916 alt2">
` ``* Sets the selected view. The selector will be drawn here`
</div>
<div class="line number918 index917 alt1">
` ``*`
</div>
<div class="line number919 index918 alt2">
` ``* @param v`
</div>
<div class="line number920 index919 alt1">
` ``* the new selected view`
</div>
<div class="line number921 index920 alt2">
` ``*/`
</div>
<div class="line number922 index921 alt1">
` ``public` `void` `setSelectedView(View v) {`
</div>
<div class="line number923 index922 alt2">
` ``mViewBehind.setSelectedView(v);`
</div>
<div class="line number924 index923 alt1">
` ``}`
</div>
<div class="line number925 index924 alt2">
</div>
<div class="line number926 index925 alt1">
` ``/**`
</div>
<div class="line number927 index926 alt2">
` ``* Sets the selector drawable.`
</div>
<div class="line number928 index927 alt1">
` ``*`
</div>
<div class="line number929 index928 alt2">
` ``* @param res`
</div>
<div class="line number930 index929 alt1">
` ``* a resource ID for the selector drawable`
</div>
<div class="line number931 index930 alt2">
` ``*/`
</div>
<div class="line number932 index931 alt1">
` ``public` `void` `setSelectorDrawable(``int` `res) {`
</div>
<div class="line number933 index932 alt2">
` ``mViewBehind.setSelectorBitmap(BitmapFactory.decodeResource(`
</div>
<div class="line number934 index933 alt1">
` ``getResources(), res));`
</div>
<div class="line number935 index934 alt2">
` ``}`
</div>
<div class="line number936 index935 alt1">
</div>
<div class="line number937 index936 alt2">
` ``/**`
</div>
<div class="line number938 index937 alt1">
` ``* Sets the selector drawable.`
</div>
<div class="line number939 index938 alt2">
` ``*`
</div>
<div class="line number940 index939 alt1">
` ``* @param b`
</div>
<div class="line number941 index940 alt2">
` ``* the new selector bitmap`
</div>
<div class="line number942 index941 alt1">
` ``*/`
</div>
<div class="line number943 index942 alt2">
` ``public` `void` `setSelectorBitmap(Bitmap b) {`
</div>
<div class="line number944 index943 alt1">
` ``mViewBehind.setSelectorBitmap(b);`
</div>
<div class="line number945 index944 alt2">
` ``}`
</div>
<div class="line number946 index945 alt1">
</div>
<div class="line number947 index946 alt2">
` ``/**`
</div>
<div class="line number948 index947 alt1">
` ``* Add a View ignored by the Touch Down event when mode is Fullscreen`
</div>
<div class="line number949 index948 alt2">
` ``*`
</div>
<div class="line number950 index949 alt1">
` ``* @param v`
</div>
<div class="line number951 index950 alt2">
` ``* a view to be ignored`
</div>
<div class="line number952 index951 alt1">
` ``*/`
</div>
<div class="line number953 index952 alt2">
` ``public` `void` `addIgnoredView(View v) {`
</div>
<div class="line number954 index953 alt1">
` ``mViewAbove.addIgnoredView(v);`
</div>
<div class="line number955 index954 alt2">
` ``}`
</div>
<div class="line number956 index955 alt1">
</div>
<div class="line number957 index956 alt2">
` ``/**`
</div>
<div class="line number958 index957 alt1">
` ``* Remove a View ignored by the Touch Down event when mode is Fullscreen`
</div>
<div class="line number959 index958 alt2">
` ``*`
</div>
<div class="line number960 index959 alt1">
` ``* @param v`
</div>
<div class="line number961 index960 alt2">
` ``* a view not wanted to be ignored anymore`
</div>
<div class="line number962 index961 alt1">
` ``*/`
</div>
<div class="line number963 index962 alt2">
` ``public` `void` `removeIgnoredView(View v) {`
</div>
<div class="line number964 index963 alt1">
` ``mViewAbove.removeIgnoredView(v);`
</div>
<div class="line number965 index964 alt2">
` ``}`
</div>
<div class="line number966 index965 alt1">
</div>
<div class="line number967 index966 alt2">
` ``/**`
</div>
<div class="line number968 index967 alt1">
` ``* Clear the list of Views ignored by the Touch Down event when mode is`
</div>
<div class="line number969 index968 alt2">
` ``* Fullscreen`
</div>
<div class="line number970 index969 alt1">
` ``*/`
</div>
<div class="line number971 index970 alt2">
` ``public` `void` `clearIgnoredViews() {`
</div>
<div class="line number972 index971 alt1">
` ``mViewAbove.clearIgnoredViews();`
</div>
<div class="line number973 index972 alt2">
` ``}`
</div>
<div class="line number974 index973 alt1">
</div>
<div class="line number975 index974 alt2">
` ``/**`
</div>
<div class="line number976 index975 alt1">
` ``* Sets the OnOpenListener. {@link OnOpenListener#onOpen()`
</div>
<div class="line number977 index976 alt2">
` ``* OnOpenListener.onOpen()} will be called when the SlidingMenu is opened`
</div>
<div class="line number978 index977 alt1">
` ``*`
</div>
<div class="line number979 index978 alt2">
` ``* @param listener`
</div>
<div class="line number980 index979 alt1">
` ``* the new OnOpenListener`
</div>
<div class="line number981 index980 alt2">
` ``*/`
</div>
<div class="line number982 index981 alt1">
` ``public` `void` `setOnOpenListener(OnOpenListener listener) {`
</div>
<div class="line number983 index982 alt2">
` ``// mViewAbove.setOnOpenListener(listener);`
</div>
<div class="line number984 index983 alt1">
` ``mOpenListener = listener;`
</div>
<div class="line number985 index984 alt2">
` ``}`
</div>
<div class="line number986 index985 alt1">
</div>
<div class="line number987 index986 alt2">
` ``/**`
</div>
<div class="line number988 index987 alt1">
` ``* Sets the OnOpenListner for secondary menu {@link OnOpenListener#onOpen()`
</div>
<div class="line number989 index988 alt2">
` ``* OnOpenListener.onOpen()} will be called when the secondary SlidingMenu is`
</div>
<div class="line number990 index989 alt1">
` ``* opened`
</div>
<div class="line number991 index990 alt2">
` ``*`
</div>
<div class="line number992 index991 alt1">
` ``* @param listener`
</div>
<div class="line number993 index992 alt2">
` ``* the new OnOpenListener`
</div>
<div class="line number994 index993 alt1">
` ``*/`
</div>
<div class="line number995 index994 alt2">
</div>
<div class="line number996 index995 alt1">
` ``public` `void` `setSecondaryOnOpenListner(OnOpenListener listener) {`
</div>
<div class="line number997 index996 alt2">
` ``mSecondaryOpenListner = listener;`
</div>
<div class="line number998 index997 alt1">
` ``}`
</div>
<div class="line number999 index998 alt2">
</div>
<div class="line number1000 index999 alt1">
` ``/**`
</div>
<div class="line number1001 index1000 alt2">
` ``* Sets the OnCloseListener. {@link OnCloseListener#onClose()`
</div>
<div class="line number1002 index1001 alt1">
` ``* OnCloseListener.onClose()} will be called when any one of the SlidingMenu`
</div>
<div class="line number1003 index1002 alt2">
` ``* is closed`
</div>
<div class="line number1004 index1003 alt1">
` ``*`
</div>
<div class="line number1005 index1004 alt2">
` ``* @param listener`
</div>
<div class="line number1006 index1005 alt1">
` ``* the new setOnCloseListener`
</div>
<div class="line number1007 index1006 alt2">
` ``*/`
</div>
<div class="line number1008 index1007 alt1">
` ``public` `void` `setOnCloseListener(OnCloseListener listener) {`
</div>
<div class="line number1009 index1008 alt2">
` ``// mViewAbove.setOnCloseListener(listener);`
</div>
<div class="line number1010 index1009 alt1">
` ``mCloseListener = listener;`
</div>
<div class="line number1011 index1010 alt2">
` ``}`
</div>
<div class="line number1012 index1011 alt1">
</div>
<div class="line number1013 index1012 alt2">
` ``/**`
</div>
<div class="line number1014 index1013 alt1">
` ``* Sets the OnOpenedListener. {@link OnOpenedListener#onOpened()`
</div>
<div class="line number1015 index1014 alt2">
` ``* OnOpenedListener.onOpened()} will be called after the SlidingMenu is`
</div>
<div class="line number1016 index1015 alt1">
` ``* opened`
</div>
<div class="line number1017 index1016 alt2">
` ``*`
</div>
<div class="line number1018 index1017 alt1">
` ``* @param listener`
</div>
<div class="line number1019 index1018 alt2">
` ``* the new OnOpenedListener`
</div>
<div class="line number1020 index1019 alt1">
` ``*/`
</div>
<div class="line number1021 index1020 alt2">
` ``public` `void` `setOnOpenedListener(OnOpenedListener listener) {`
</div>
<div class="line number1022 index1021 alt1">
` ``mViewAbove.setOnOpenedListener(listener);`
</div>
<div class="line number1023 index1022 alt2">
` ``}`
</div>
<div class="line number1024 index1023 alt1">
</div>
<div class="line number1025 index1024 alt2">
` ``/**`
</div>
<div class="line number1026 index1025 alt1">
` ``* Sets the OnClosedListener. {@link OnClosedListener#onClosed()`
</div>
<div class="line number1027 index1026 alt2">
` ``* OnClosedListener.onClosed()} will be called after the SlidingMenu is`
</div>
<div class="line number1028 index1027 alt1">
` ``* closed`
</div>
<div class="line number1029 index1028 alt2">
` ``*`
</div>
<div class="line number1030 index1029 alt1">
` ``* @param listener`
</div>
<div class="line number1031 index1030 alt2">
` ``* the new OnClosedListener`
</div>
<div class="line number1032 index1031 alt1">
` ``*/`
</div>
<div class="line number1033 index1032 alt2">
` ``public` `void` `setOnClosedListener(OnClosedListener listener) {`
</div>
<div class="line number1034 index1033 alt1">
` ``mViewAbove.setOnClosedListener(listener);`
</div>
<div class="line number1035 index1034 alt2">
` ``}`
</div>
<div class="line number1036 index1035 alt1">
</div>
<div class="line number1037 index1036 alt2">
` ``public` `static` `class` `SavedState ``extends` `BaseSavedState {`
</div>
<div class="line number1038 index1037 alt1">
</div>
<div class="line number1039 index1038 alt2">
` ``private` `final` `int` `mItem;`
</div>
<div class="line number1040 index1039 alt1">
</div>
<div class="line number1041 index1040 alt2">
` ``public` `SavedState(Parcelable superState, ``int` `item) {`
</div>
<div class="line number1042 index1041 alt1">
` ``super``(superState);`
</div>
<div class="line number1043 index1042 alt2">
` ``mItem = item;`
</div>
<div class="line number1044 index1043 alt1">
` ``}`
</div>
<div class="line number1045 index1044 alt2">
</div>
<div class="line number1046 index1045 alt1">
` ``private` `SavedState(Parcel in) {`
</div>
<div class="line number1047 index1046 alt2">
` ``super``(in);`
</div>
<div class="line number1048 index1047 alt1">
` ``mItem = in.readInt();`
</div>
<div class="line number1049 index1048 alt2">
` ``}`
</div>
<div class="line number1050 index1049 alt1">
</div>
<div class="line number1051 index1050 alt2">
` ``public` `int` `getItem() {`
</div>
<div class="line number1052 index1051 alt1">
` ``return` `mItem;`
</div>
<div class="line number1053 index1052 alt2">
` ``}`
</div>
<div class="line number1054 index1053 alt1">
</div>
<div class="line number1055 index1054 alt2">
` ``/*`
</div>
<div class="line number1056 index1055 alt1">
` ``* (non-Javadoc)`
</div>
<div class="line number1057 index1056 alt2">
` ``*`
</div>
<div class="line number1058 index1057 alt1">
` ``* @see android.view.AbsSavedState#writeToParcel(android.os.Parcel, int)`
</div>
<div class="line number1059 index1058 alt2">
` ``*/`
</div>
<div class="line number1060 index1059 alt1">
` ``public void writeToParcel(Parcel out, int flags) {`
</div>
<div class="line number1061 index1060 alt2">
` ``super.writeToParcel(out, flags);`
</div>
<div class="line number1062 index1061 alt1">
` ``out.writeInt(mItem);`
</div>
<div class="line number1063 index1062 alt2">
` ``}`
</div>
<div class="line number1064 index1063 alt1">
</div>
<div class="line number1065 index1064 alt2">
` ``public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() {`
</div>
<div class="line number1066 index1065 alt1">
` ``public SavedState createFromParcel(Parcel in) {`
</div>
<div class="line number1067 index1066 alt2">
` ``return new SavedState(in);`
</div>
<div class="line number1068 index1067 alt1">
` ``}`
</div>
<div class="line number1069 index1068 alt2">
</div>
<div class="line number1070 index1069 alt1">
` ``public SavedState[] newArray(int size) {`
</div>
<div class="line number1071 index1070 alt2">
` ``return new SavedState[size];`
</div>
<div class="line number1072 index1071 alt1">
` ``}`
</div>
<div class="line number1073 index1072 alt2">
` ``};`
</div>
<div class="line number1074 index1073 alt1">
</div>
<div class="line number1075 index1074 alt2">
` ``}`
</div>
<div class="line number1076 index1075 alt1">
</div>
<div class="line number1077 index1076 alt2">
` ``/*`
</div>
<div class="line number1078 index1077 alt1">
` ``* (non-Javadoc)`
</div>
<div class="line number1079 index1078 alt2">
` ``*`
</div>
<div class="line number1080 index1079 alt1">
` ``* @see android.view.View#onSaveInstanceState()`
</div>
<div class="line number1081 index1080 alt2">
` ``*/`
</div>
<div class="line number1082 index1081 alt1">
` ``@Override`
</div>
<div class="line number1083 index1082 alt2">
` ``protected Parcelable onSaveInstanceState() {`
</div>
<div class="line number1084 index1083 alt1">
` ``Parcelable superState = super.onSaveInstanceState();`
</div>
<div class="line number1085 index1084 alt2">
` ``SavedState ss = new SavedState(superState, mViewAbove.getCurrentItem());`
</div>
<div class="line number1086 index1085 alt1">
` ``return ss;`
</div>
<div class="line number1087 index1086 alt2">
` ``}`
</div>
<div class="line number1088 index1087 alt1">
</div>
<div class="line number1089 index1088 alt2">
` ``/*`
</div>
<div class="line number1090 index1089 alt1">
` ``* (non-Javadoc)`
</div>
<div class="line number1091 index1090 alt2">
` ``*`
</div>
<div class="line number1092 index1091 alt1">
` ``* @see android.view.View#onRestoreInstanceState(android.os.Parcelable)`
</div>
<div class="line number1093 index1092 alt2">
` ``*/`
</div>
<div class="line number1094 index1093 alt1">
` ``@Override`
</div>
<div class="line number1095 index1094 alt2">
` ``protected void onRestoreInstanceState(Parcelable state) {`
</div>
<div class="line number1096 index1095 alt1">
` ``SavedState ss = (SavedState) state;`
</div>
<div class="line number1097 index1096 alt2">
` ``super.onRestoreInstanceState(ss.getSuperState());`
</div>
<div class="line number1098 index1097 alt1">
` ``mViewAbove.setCurrentItem(ss.getItem());`
</div>
<div class="line number1099 index1098 alt2">
` ``}`
</div>
<div class="line number1100 index1099 alt1">
</div>
<div class="line number1101 index1100 alt2">
` ``/*`
</div>
<div class="line number1102 index1101 alt1">
` ``* (non-Javadoc)`
</div>
<div class="line number1103 index1102 alt2">
` ``*`
</div>
<div class="line number1104 index1103 alt1">
` ``* @see android.view.ViewGroup#fitSystemWindows(android.graphics.Rect)`
</div>
<div class="line number1105 index1104 alt2">
` ``*/`
</div>
<div class="line number1106 index1105 alt1">
` ``@SuppressLint``(``"NewApi"``)`
</div>
<div class="line number1107 index1106 alt2">
` ``@Override`
</div>
<div class="line number1108 index1107 alt1">
` ``protected` `boolean` `fitSystemWindows(Rect insets) {`
</div>
<div class="line number1109 index1108 alt2">
` ``int` `leftPadding = insets.left;`
</div>
<div class="line number1110 index1109 alt1">
` ``int` `rightPadding = insets.right;`
</div>
<div class="line number1111 index1110 alt2">
` ``int` `topPadding = insets.top;`
</div>
<div class="line number1112 index1111 alt1">
` ``int` `bottomPadding = insets.bottom;`
</div>
<div class="line number1113 index1112 alt2">
` ``if` `(!mActionbarOverlay) {`
</div>
<div class="line number1114 index1113 alt1">
` ``Log.v(TAG, ``"setting padding!"``);`
</div>
<div class="line number1115 index1114 alt2">
` ``setPadding(leftPadding, topPadding, rightPadding, bottomPadding);`
</div>
<div class="line number1116 index1115 alt1">
` ``}`
</div>
<div class="line number1117 index1116 alt2">
` ``return` `true``;`
</div>
<div class="line number1118 index1117 alt1">
` ``}`
</div>
<div class="line number1119 index1118 alt2">
</div>
<div class="line number1120 index1119 alt1">
` ``@TargetApi``(Build.VERSION_CODES.HONEYCOMB)`
</div>
<div class="line number1121 index1120 alt2">
` ``public` `void` `manageLayers(``float` `percentOpen) {`
</div>
<div class="line number1122 index1121 alt1">
` ``if` `(Build.VERSION.SDK_INT < ``11``)`
</div>
<div class="line number1123 index1122 alt2">
` ``return``;`
</div>
<div class="line number1124 index1123 alt1">
</div>
<div class="line number1125 index1124 alt2">
` ``boolean` `layer = percentOpen > ````.0f && percentOpen < ``1``.0f;`
</div>
<div class="line number1126 index1125 alt1">
` ``final` `int` `layerType = layer ? View.LAYER_TYPE_HARDWARE`
</div>
<div class="line number1127 index1126 alt2">
` ``: View.LAYER_TYPE_NONE;`
</div>
<div class="line number1128 index1127 alt1">
</div>
<div class="line number1129 index1128 alt2">
` ``if` `(layerType != getContent().getLayerType()) {`
</div>
<div class="line number1130 index1129 alt1">
` ``getHandler().post(``new` `Runnable() {`
</div>
<div class="line number1131 index1130 alt2">
` ``public` `void` `run() {`
</div>
<div class="line number1132 index1131 alt1">
` ``Log.v(TAG, ``"changing layerType. hardware? "`
</div>
<div class="line number1133 index1132 alt2">
` ``+ (layerType == View.LAYER_TYPE_HARDWARE));`
</div>
<div class="line number1134 index1133 alt1">
` ``getContent().setLayerType(layerType, ``null``);`
</div>
<div class="line number1135 index1134 alt2">
` ``getMenu().setLayerType(layerType, ``null``);`
</div>
<div class="line number1136 index1135 alt1">
` ``if` `(getSecondaryMenu() != ``null``) {`
</div>
<div class="line number1137 index1136 alt2">
` ``getSecondaryMenu().setLayerType(layerType, ``null``);`
</div>
<div class="line number1138 index1137 alt1">
` ``}`
</div>
<div class="line number1139 index1138 alt2">
` ``}`
</div>
<div class="line number1140 index1139 alt1">
` ``});`
</div>
<div class="line number1141 index1140 alt2">
` ``}`
</div>
<div class="line number1142 index1141 alt1">
` ``}`
</div>
<div class="line number1143 index1142 alt2">
</div>
<div class="line number1144 index1143 alt1">
`}`
</div>
</div>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1
</div>
<div class="line number2 index1 alt1">
2
</div>
<div class="line number3 index2 alt2">
3
</div>
<div class="line number4 index3 alt1">
4
</div>
<div class="line number5 index4 alt2">
5
</div>
<div class="line number6 index5 alt1">
6
</div>
<div class="line number7 index6 alt2">
7
</div>
<div class="line number8 index7 alt1">
8
</div>
<div class="line number9 index8 alt2">
9
</div>
<div class="line number10 index9 alt1">
10
</div>
<div class="line number11 index10 alt2">
11
</div>
<div class="line number12 index11 alt1">
12
</div>
<div class="line number13 index12 alt2">
13
</div>
<div class="line number14 index13 alt1">
14
</div>
<div class="line number15 index14 alt2">
15
</div>
<div class="line number16 index15 alt1">
16
</div>
<div class="line number17 index16 alt2">
17
</div>
<div class="line number18 index17 alt1">
18
</div>
<div class="line number19 index18 alt2">
19
</div>
<div class="line number20 index19 alt1">
20
</div>
<div class="line number21 index20 alt2">
21
</div>
<div class="line number22 index21 alt1">
22
</div>
<div class="line number23 index22 alt2">
23
</div>
<div class="line number24 index23 alt1">
24
</div>
<div class="line number25 index24 alt2">
25
</div>
<div class="line number26 index25 alt1">
26
</div>
<div class="line number27 index26 alt2">
27
</div>
<div class="line number28 index27 alt1">
28
</div>
<div class="line number29 index28 alt2">
29
</div>
<div class="line number30 index29 alt1">
30
</div>
<div class="line number31 index30 alt2">
31
</div>
<div class="line number32 index31 alt1">
32
</div>
<div class="line number33 index32 alt2">
33
</div>
<div class="line number34 index33 alt1">
34
</div>
<div class="line number35 index34 alt2">
35
</div>
<div class="line number36 index35 alt1">
36
</div>
<div class="line number37 index36 alt2">
37
</div>
<div class="line number38 index37 alt1">
38
</div>
<div class="line number39 index38 alt2">
39
</div>
<div class="line number40 index39 alt1">
40
</div>
<div class="line number41 index40 alt2">
41
</div>
<div class="line number42 index41 alt1">
42
</div>
<div class="line number43 index42 alt2">
43
</div>
<div class="line number44 index43 alt1">
44
</div>
<div class="line number45 index44 alt2">
45
</div>
<div class="line number46 index45 alt1">
46
</div>
<div class="line number47 index46 alt2">
47
</div>
<div class="line number48 index47 alt1">
48
</div>
<div class="line number49 index48 alt2">
49
</div>
<div class="line number50 index49 alt1">
50
</div>
<div class="line number51 index50 alt2">
51
</div>
<div class="line number52 index51 alt1">
52
</div>
<div class="line number53 index52 alt2">
53
</div>
<div class="line number54 index53 alt1">
54
</div>
<div class="line number55 index54 alt2">
55
</div>
<div class="line number56 index55 alt1">
56
</div>
<div class="line number57 index56 alt2">
57
</div>
<div class="line number58 index57 alt1">
58
</div>
<div class="line number59 index58 alt2">
59
</div>
<div class="line number60 index59 alt1">
60
</div>
<div class="line number61 index60 alt2">
61
</div>
<div class="line number62 index61 alt1">
62
</div>
<div class="line number63 index62 alt2">
63
</div>
<div class="line number64 index63 alt1">
64
</div>
<div class="line number65 index64 alt2">
65
</div>
<div class="line number66 index65 alt1">
66
</div>
<div class="line number67 index66 alt2">
67
</div>
<div class="line number68 index67 alt1">
68
</div>
<div class="line number69 index68 alt2">
69
</div>
<div class="line number70 index69 alt1">
70
</div>
<div class="line number71 index70 alt2">
71
</div>
<div class="line number72 index71 alt1">
72
</div>
<div class="line number73 index72 alt2">
73
</div>
<div class="line number74 index73 alt1">
74
</div>
<div class="line number75 index74 alt2">
75
</div>
<div class="line number76 index75 alt1">
76
</div>
<div class="line number77 index76 alt2">
77
</div>
<div class="line number78 index77 alt1">
78
</div>
<div class="line number79 index78 alt2">
79
</div>
<div class="line number80 index79 alt1">
80
</div>
<div class="line number81 index80 alt2">
81
</div>
<div class="line number82 index81 alt1">
82
</div>
<div class="line number83 index82 alt2">
83
</div>
<div class="line number84 index83 alt1">
84
</div>
<div class="line number85 index84 alt2">
85
</div>
<div class="line number86 index85 alt1">
86
</div>
<div class="line number87 index86 alt2">
87
</div>
<div class="line number88 index87 alt1">
88
</div>
<div class="line number89 index88 alt2">
89
</div>
<div class="line number90 index89 alt1">
90
</div>
<div class="line number91 index90 alt2">
91
</div>
<div class="line number92 index91 alt1">
92
</div>
<div class="line number93 index92 alt2">
93
</div>
<div class="line number94 index93 alt1">
94
</div>
<div class="line number95 index94 alt2">
95
</div>
<div class="line number96 index95 alt1">
96
</div>
<div class="line number97 index96 alt2">
97
</div>
<div class="line number98 index97 alt1">
98
</div>
<div class="line number99 index98 alt2">
99
</div>
<div class="line number100 index99 alt1">
100
</div>
<div class="line number101 index100 alt2">
101
</div>
<div class="line number102 index101 alt1">
102
</div>
<div class="line number103 index102 alt2">
103
</div>
<div class="line number104 index103 alt1">
104
</div>
<div class="line number105 index104 alt2">
105
</div>
<div class="line number106 index105 alt1">
106
</div>
<div class="line number107 index106 alt2">
107
</div>
<div class="line number108 index107 alt1">
108
</div>
<div class="line number109 index108 alt2">
109
</div>
<div class="line number110 index109 alt1">
110
</div>
<div class="line number111 index110 alt2">
111
</div>
<div class="line number112 index111 alt1">
112
</div>
<div class="line number113 index112 alt2">
113
</div>
<div class="line number114 index113 alt1">
114
</div>
<div class="line number115 index114 alt2">
115
</div>
<div class="line number116 index115 alt1">
116
</div>
<div class="line number117 index116 alt2">
117
</div>
<div class="line number118 index117 alt1">
118
</div>
<div class="line number119 index118 alt2">
119
</div>
<div class="line number120 index119 alt1">
120
</div>
<div class="line number121 index120 alt2">
121
</div>
<div class="line number122 index121 alt1">
122
</div>
<div class="line number123 index122 alt2">
123
</div>
<div class="line number124 index123 alt1">
124
</div>
<div class="line number125 index124 alt2">
125
</div>
<div class="line number126 index125 alt1">
126
</div>
<div class="line number127 index126 alt2">
127
</div>
<div class="line number128 index127 alt1">
128
</div>
<div class="line number129 index128 alt2">
129
</div>
<div class="line number130 index129 alt1">
130
</div>
<div class="line number131 index130 alt2">
131
</div>
<div class="line number132 index131 alt1">
132
</div>
<div class="line number133 index132 alt2">
133
</div>
<div class="line number134 index133 alt1">
134
</div>
<div class="line number135 index134 alt2">
135
</div>
<div class="line number136 index135 alt1">
136
</div>
<div class="line number137 index136 alt2">
137
</div>
<div class="line number138 index137 alt1">
138
</div>
<div class="line number139 index138 alt2">
139
</div>
<div class="line number140 index139 alt1">
140
</div>
<div class="line number141 index140 alt2">
141
</div>
<div class="line number142 index141 alt1">
142
</div>
<div class="line number143 index142 alt2">
143
</div>
<div class="line number144 index143 alt1">
144
</div>
<div class="line number145 index144 alt2">
145
</div>
<div class="line number146 index145 alt1">
146
</div>
<div class="line number147 index146 alt2">
147
</div>
<div class="line number148 index147 alt1">
148
</div>
<div class="line number149 index148 alt2">
149
</div>
<div class="line number150 index149 alt1">
150
</div>
<div class="line number151 index150 alt2">
151
</div>
<div class="line number152 index151 alt1">
152
</div>
<div class="line number153 index152 alt2">
153
</div>
<div class="line number154 index153 alt1">
154
</div>
<div class="line number155 index154 alt2">
155
</div>
<div class="line number156 index155 alt1">
156
</div>
<div class="line number157 index156 alt2">
157
</div>
<div class="line number158 index157 alt1">
158
</div>
<div class="line number159 index158 alt2">
159
</div>
<div class="line number160 index159 alt1">
160
</div>
<div class="line number161 index160 alt2">
161
</div>
<div class="line number162 index161 alt1">
162
</div>
<div class="line number163 index162 alt2">
163
</div>
<div class="line number164 index163 alt1">
164
</div>
<div class="line number165 index164 alt2">
165
</div>
<div class="line number166 index165 alt1">
166
</div>
<div class="line number167 index166 alt2">
167
</div>
<div class="line number168 index167 alt1">
168
</div>
<div class="line number169 index168 alt2">
169
</div>
<div class="line number170 index169 alt1">
170
</div>
<div class="line number171 index170 alt2">
171
</div>
<div class="line number172 index171 alt1">
172
</div>
<div class="line number173 index172 alt2">
173
</div>
<div class="line number174 index173 alt1">
174
</div>
<div class="line number175 index174 alt2">
175
</div>
<div class="line number176 index175 alt1">
176
</div>
<div class="line number177 index176 alt2">
177
</div>
<div class="line number178 index177 alt1">
178
</div>
<div class="line number179 index178 alt2">
179
</div>
<div class="line number180 index179 alt1">
180
</div>
<div class="line number181 index180 alt2">
181
</div>
<div class="line number182 index181 alt1">
182
</div>
<div class="line number183 index182 alt2">
183
</div>
<div class="line number184 index183 alt1">
184
</div>
<div class="line number185 index184 alt2">
185
</div>
<div class="line number186 index185 alt1">
186
</div>
<div class="line number187 index186 alt2">
187
</div>
<div class="line number188 index187 alt1">
188
</div>
<div class="line number189 index188 alt2">
189
</div>
<div class="line number190 index189 alt1">
190
</div>
<div class="line number191 index190 alt2">
191
</div>
<div class="line number192 index191 alt1">
192
</div>
<div class="line number193 index192 alt2">
193
</div>
<div class="line number194 index193 alt1">
194
</div>
<div class="line number195 index194 alt2">
195
</div>
<div class="line number196 index195 alt1">
196
</div>
<div class="line number197 index196 alt2">
197
</div>
<div class="line number198 index197 alt1">
198
</div>
<div class="line number199 index198 alt2">
199
</div>
<div class="line number200 index199 alt1">
200
</div>
<div class="line number201 index200 alt2">
201
</div>
<div class="line number202 index201 alt1">
202
</div>
<div class="line number203 index202 alt2">
203
</div>
<div class="line number204 index203 alt1">
204
</div>
<div class="line number205 index204 alt2">
205
</div>
<div class="line number206 index205 alt1">
206
</div>
<div class="line number207 index206 alt2">
207
</div>
<div class="line number208 index207 alt1">
208
</div>
<div class="line number209 index208 alt2">
209
</div>
<div class="line number210 index209 alt1">
210
</div>
<div class="line number211 index210 alt2">
211
</div>
<div class="line number212 index211 alt1">
212
</div>
<div class="line number213 index212 alt2">
213
</div>
<div class="line number214 index213 alt1">
214
</div>
<div class="line number215 index214 alt2">
215
</div>
<div class="line number216 index215 alt1">
216
</div>
<div class="line number217 index216 alt2">
217
</div>
<div class="line number218 index217 alt1">
218
</div>
<div class="line number219 index218 alt2">
219
</div>
<div class="line number220 index219 alt1">
220
</div>
<div class="line number221 index220 alt2">
221
</div>
<div class="line number222 index221 alt1">
222
</div>
<div class="line number223 index222 alt2">
223
</div>
<div class="line number224 index223 alt1">
224
</div>
<div class="line number225 index224 alt2">
225
</div>
<div class="line number226 index225 alt1">
226
</div>
<div class="line number227 index226 alt2">
227
</div>
<div class="line number228 index227 alt1">
228
</div>
<div class="line number229 index228 alt2">
229
</div>
<div class="line number230 index229 alt1">
230
</div>
<div class="line number231 index230 alt2">
231
</div>
<div class="line number232 index231 alt1">
232
</div>
<div class="line number233 index232 alt2">
233
</div>
<div class="line number234 index233 alt1">
234
</div>
<div class="line number235 index234 alt2">
235
</div>
<div class="line number236 index235 alt1">
236
</div>
<div class="line number237 index236 alt2">
237
</div>
<div class="line number238 index237 alt1">
238
</div>
<div class="line number239 index238 alt2">
239
</div>
<div class="line number240 index239 alt1">
240
</div>
<div class="line number241 index240 alt2">
241
</div>
<div class="line number242 index241 alt1">
242
</div>
<div class="line number243 index242 alt2">
243
</div>
<div class="line number244 index243 alt1">
244
</div>
<div class="line number245 index244 alt2">
245
</div>
<div class="line number246 index245 alt1">
246
</div>
<div class="line number247 index246 alt2">
247
</div>
<div class="line number248 index247 alt1">
248
</div>
<div class="line number249 index248 alt2">
249
</div>
<div class="line number250 index249 alt1">
250
</div>
<div class="line number251 index250 alt2">
251
</div>
<div class="line number252 index251 alt1">
252
</div>
<div class="line number253 index252 alt2">
253
</div>
<div class="line number254 index253 alt1">
254
</div>
<div class="line number255 index254 alt2">
255
</div>
<div class="line number256 index255 alt1">
256
</div>
<div class="line number257 index256 alt2">
257
</div>
<div class="line number258 index257 alt1">
258
</div>
<div class="line number259 index258 alt2">
259
</div>
<div class="line number260 index259 alt1">
260
</div>
<div class="line number261 index260 alt2">
261
</div>
<div class="line number262 index261 alt1">
262
</div>
<div class="line number263 index262 alt2">
263
</div>
<div class="line number264 index263 alt1">
264
</div>
<div class="line number265 index264 alt2">
265
</div>
<div class="line number266 index265 alt1">
266
</div>
<div class="line number267 index266 alt2">
267
</div>
<div class="line number268 index267 alt1">
268
</div>
<div class="line number269 index268 alt2">
269
</div>
<div class="line number270 index269 alt1">
270
</div>
<div class="line number271 index270 alt2">
271
</div>
<div class="line number272 index271 alt1">
272
</div>
<div class="line number273 index272 alt2">
273
</div>
<div class="line number274 index273 alt1">
274
</div>
<div class="line number275 index274 alt2">
275
</div>
<div class="line number276 index275 alt1">
276
</div>
<div class="line number277 index276 alt2">
277
</div>
<div class="line number278 index277 alt1">
278
</div>
<div class="line number279 index278 alt2">
279
</div>
<div class="line number280 index279 alt1">
280
</div>
<div class="line number281 index280 alt2">
281
</div>
<div class="line number282 index281 alt1">
282
</div>
<div class="line number283 index282 alt2">
283
</div>
<div class="line number284 index283 alt1">
284
</div>
<div class="line number285 index284 alt2">
285
</div>
<div class="line number286 index285 alt1">
286
</div>
<div class="line number287 index286 alt2">
287
</div>
<div class="line number288 index287 alt1">
288
</div>
<div class="line number289 index288 alt2">
289
</div>
<div class="line number290 index289 alt1">
290
</div>
<div class="line number291 index290 alt2">
291
</div>
<div class="line number292 index291 alt1">
292
</div>
<div class="line number293 index292 alt2">
293
</div>
<div class="line number294 index293 alt1">
294
</div>
<div class="line number295 index294 alt2">
295
</div>
<div class="line number296 index295 alt1">
296
</div>
<div class="line number297 index296 alt2">
297
</div>
<div class="line number298 index297 alt1">
298
</div>
<div class="line number299 index298 alt2">
299
</div>
<div class="line number300 index299 alt1">
300
</div>
<div class="line number301 index300 alt2">
301
</div>
<div class="line number302 index301 alt1">
302
</div>
<div class="line number303 index302 alt2">
303
</div>
<div class="line number304 index303 alt1">
304
</div>
<div class="line number305 index304 alt2">
305
</div>
<div class="line number306 index305 alt1">
306
</div>
<div class="line number307 index306 alt2">
307
</div>
<div class="line number308 index307 alt1">
308
</div>
<div class="line number309 index308 alt2">
309
</div>
<div class="line number310 index309 alt1">
310
</div>
<div class="line number311 index310 alt2">
311
</div>
<div class="line number312 index311 alt1">
312
</div>
<div class="line number313 index312 alt2">
313
</div>
<div class="line number314 index313 alt1">
314
</div>
<div class="line number315 index314 alt2">
315
</div>
<div class="line number316 index315 alt1">
316
</div>
<div class="line number317 index316 alt2">
317
</div>
<div class="line number318 index317 alt1">
318
</div>
<div class="line number319 index318 alt2">
319
</div>
<div class="line number320 index319 alt1">
320
</div>
<div class="line number321 index320 alt2">
321
</div>
<div class="line number322 index321 alt1">
322
</div>
<div class="line number323 index322 alt2">
323
</div>
<div class="line number324 index323 alt1">
324
</div>
<div class="line number325 index324 alt2">
325
</div>
<div class="line number326 index325 alt1">
326
</div>
<div class="line number327 index326 alt2">
327
</div>
<div class="line number328 index327 alt1">
328
</div>
<div class="line number329 index328 alt2">
329
</div>
<div class="line number330 index329 alt1">
330
</div>
<div class="line number331 index330 alt2">
331
</div>
<div class="line number332 index331 alt1">
332
</div>
<div class="line number333 index332 alt2">
333
</div>
<div class="line number334 index333 alt1">
334
</div>
<div class="line number335 index334 alt2">
335
</div>
<div class="line number336 index335 alt1">
336
</div>
<div class="line number337 index336 alt2">
337
</div>
<div class="line number338 index337 alt1">
338
</div>
<div class="line number339 index338 alt2">
339
</div>
<div class="line number340 index339 alt1">
340
</div>
<div class="line number341 index340 alt2">
341
</div>
<div class="line number342 index341 alt1">
342
</div>
<div class="line number343 index342 alt2">
343
</div>
<div class="line number344 index343 alt1">
344
</div>
<div class="line number345 index344 alt2">
345
</div>
<div class="line number346 index345 alt1">
346
</div>
<div class="line number347 index346 alt2">
347
</div>
<div class="line number348 index347 alt1">
348
</div>
<div class="line number349 index348 alt2">
349
</div>
<div class="line number350 index349 alt1">
350
</div>
<div class="line number351 index350 alt2">
351
</div>
<div class="line number352 index351 alt1">
352
</div>
<div class="line number353 index352 alt2">
353
</div>
<div class="line number354 index353 alt1">
354
</div>
<div class="line number355 index354 alt2">
355
</div>
<div class="line number356 index355 alt1">
356
</div>
<div class="line number357 index356 alt2">
357
</div>
<div class="line number358 index357 alt1">
358
</div>
<div class="line number359 index358 alt2">
359
</div>
<div class="line number360 index359 alt1">
360
</div>
<div class="line number361 index360 alt2">
361
</div>
<div class="line number362 index361 alt1">
362
</div>
<div class="line number363 index362 alt2">
363
</div>
<div class="line number364 index363 alt1">
364
</div>
<div class="line number365 index364 alt2">
365
</div>
<div class="line number366 index365 alt1">
366
</div>
<div class="line number367 index366 alt2">
367
</div>
<div class="line number368 index367 alt1">
368
</div>
<div class="line number369 index368 alt2">
369
</div>
<div class="line number370 index369 alt1">
370
</div>
<div class="line number371 index370 alt2">
371
</div>
<div class="line number372 index371 alt1">
372
</div>
<div class="line number373 index372 alt2">
373
</div>
<div class="line number374 index373 alt1">
374
</div>
<div class="line number375 index374 alt2">
375
</div>
<div class="line number376 index375 alt1">
376
</div>
<div class="line number377 index376 alt2">
377
</div>
<div class="line number378 index377 alt1">
378
</div>
<div class="line number379 index378 alt2">
379
</div>
<div class="line number380 index379 alt1">
380
</div>
<div class="line number381 index380 alt2">
381
</div>
<div class="line number382 index381 alt1">
382
</div>
<div class="line number383 index382 alt2">
383
</div>
<div class="line number384 index383 alt1">
384
</div>
<div class="line number385 index384 alt2">
385
</div>
<div class="line number386 index385 alt1">
386
</div>
<div class="line number387 index386 alt2">
387
</div>
<div class="line number388 index387 alt1">
388
</div>
<div class="line number389 index388 alt2">
389
</div>
<div class="line number390 index389 alt1">
390
</div>
<div class="line number391 index390 alt2">
391
</div>
<div class="line number392 index391 alt1">
392
</div>
<div class="line number393 index392 alt2">
393
</div>
<div class="line number394 index393 alt1">
394
</div>
<div class="line number395 index394 alt2">
395
</div>
<div class="line number396 index395 alt1">
396
</div>
<div class="line number397 index396 alt2">
397
</div>
<div class="line number398 index397 alt1">
398
</div>
<div class="line number399 index398 alt2">
399
</div>
<div class="line number400 index399 alt1">
400
</div>
<div class="line number401 index400 alt2">
401
</div>
<div class="line number402 index401 alt1">
402
</div>
<div class="line number403 index402 alt2">
403
</div>
<div class="line number404 index403 alt1">
404
</div>
<div class="line number405 index404 alt2">
405
</div>
<div class="line number406 index405 alt1">
406
</div>
<div class="line number407 index406 alt2">
407
</div>
<div class="line number408 index407 alt1">
408
</div>
<div class="line number409 index408 alt2">
409
</div>
<div class="line number410 index409 alt1">
410
</div>
<div class="line number411 index410 alt2">
411
</div>
<div class="line number412 index411 alt1">
412
</div>
<div class="line number413 index412 alt2">
413
</div>
<div class="line number414 index413 alt1">
414
</div>
<div class="line number415 index414 alt2">
415
</div>
<div class="line number416 index415 alt1">
416
</div>
<div class="line number417 index416 alt2">
417
</div>
<div class="line number418 index417 alt1">
418
</div>
<div class="line number419 index418 alt2">
419
</div>
<div class="line number420 index419 alt1">
420
</div>
<div class="line number421 index420 alt2">
421
</div>
<div class="line number422 index421 alt1">
422
</div>
<div class="line number423 index422 alt2">
423
</div>
<div class="line number424 index423 alt1">
424
</div>
<div class="line number425 index424 alt2">
425
</div>
<div class="line number426 index425 alt1">
426
</div>
<div class="line number427 index426 alt2">
427
</div>
<div class="line number428 index427 alt1">
428
</div>
<div class="line number429 index428 alt2">
429
</div>
<div class="line number430 index429 alt1">
430
</div>
<div class="line number431 index430 alt2">
431
</div>
<div class="line number432 index431 alt1">
432
</div>
<div class="line number433 index432 alt2">
433
</div>
<div class="line number434 index433 alt1">
434
</div>
<div class="line number435 index434 alt2">
435
</div>
<div class="line number436 index435 alt1">
436
</div>
<div class="line number437 index436 alt2">
437
</div>
<div class="line number438 index437 alt1">
438
</div>
<div class="line number439 index438 alt2">
439
</div>
<div class="line number440 index439 alt1">
440
</div>
<div class="line number441 index440 alt2">
441
</div>
<div class="line number442 index441 alt1">
442
</div>
<div class="line number443 index442 alt2">
443
</div>
<div class="line number444 index443 alt1">
444
</div>
<div class="line number445 index444 alt2">
445
</div>
<div class="line number446 index445 alt1">
446
</div>
<div class="line number447 index446 alt2">
447
</div>
<div class="line number448 index447 alt1">
448
</div>
<div class="line number449 index448 alt2">
449
</div>
<div class="line number450 index449 alt1">
450
</div>
<div class="line number451 index450 alt2">
451
</div>
<div class="line number452 index451 alt1">
452
</div>
<div class="line number453 index452 alt2">
453
</div>
<div class="line number454 index453 alt1">
454
</div>
<div class="line number455 index454 alt2">
455
</div>
<div class="line number456 index455 alt1">
456
</div>
<div class="line number457 index456 alt2">
457
</div>
<div class="line number458 index457 alt1">
458
</div>
<div class="line number459 index458 alt2">
459
</div>
<div class="line number460 index459 alt1">
460
</div>
<div class="line number461 index460 alt2">
461
</div>
<div class="line number462 index461 alt1">
462
</div>
<div class="line number463 index462 alt2">
463
</div>
<div class="line number464 index463 alt1">
464
</div>
<div class="line number465 index464 alt2">
465
</div>
<div class="line number466 index465 alt1">
466
</div>
<div class="line number467 index466 alt2">
467
</div>
<div class="line number468 index467 alt1">
468
</div>
<div class="line number469 index468 alt2">
469
</div>
<div class="line number470 index469 alt1">
470
</div>
<div class="line number471 index470 alt2">
471
</div>
<div class="line number472 index471 alt1">
472
</div>
<div class="line number473 index472 alt2">
473
</div>
<div class="line number474 index473 alt1">
474
</div>
<div class="line number475 index474 alt2">
475
</div>
<div class="line number476 index475 alt1">
476
</div>
<div class="line number477 index476 alt2">
477
</div>
<div class="line number478 index477 alt1">
478
</div>
<div class="line number479 index478 alt2">
479
</div>
<div class="line number480 index479 alt1">
480
</div>
<div class="line number481 index480 alt2">
481
</div>
<div class="line number482 index481 alt1">
482
</div>
<div class="line number483 index482 alt2">
483
</div>
<div class="line number484 index483 alt1">
484
</div>
<div class="line number485 index484 alt2">
485
</div>
<div class="line number486 index485 alt1">
486
</div>
<div class="line number487 index486 alt2">
487
</div>
<div class="line number488 index487 alt1">
488
</div>
<div class="line number489 index488 alt2">
489
</div>
<div class="line number490 index489 alt1">
490
</div>
<div class="line number491 index490 alt2">
491
</div>
<div class="line number492 index491 alt1">
492
</div>
<div class="line number493 index492 alt2">
493
</div>
<div class="line number494 index493 alt1">
494
</div>
<div class="line number495 index494 alt2">
495
</div>
<div class="line number496 index495 alt1">
496
</div>
<div class="line number497 index496 alt2">
497
</div>
<div class="line number498 index497 alt1">
498
</div>
<div class="line number499 index498 alt2">
499
</div>
<div class="line number500 index499 alt1">
500
</div>
<div class="line number501 index500 alt2">
501
</div>
<div class="line number502 index501 alt1">
502
</div>
<div class="line number503 index502 alt2">
503
</div>
<div class="line number504 index503 alt1">
504
</div>
<div class="line number505 index504 alt2">
505
</div>
<div class="line number506 index505 alt1">
506
</div>
<div class="line number507 index506 alt2">
507
</div>
<div class="line number508 index507 alt1">
508
</div>
<div class="line number509 index508 alt2">
509
</div>
<div class="line number510 index509 alt1">
510
</div>
<div class="line number511 index510 alt2">
511
</div>
<div class="line number512 index511 alt1">
512
</div>
<div class="line number513 index512 alt2">
513
</div>
<div class="line number514 index513 alt1">
514
</div>
<div class="line number515 index514 alt2">
515
</div>
<div class="line number516 index515 alt1">
516
</div>
<div class="line number517 index516 alt2">
517
</div>
<div class="line number518 index517 alt1">
518
</div>
<div class="line number519 index518 alt2">
519
</div>
<div class="line number520 index519 alt1">
520
</div>
<div class="line number521 index520 alt2">
521
</div>
<div class="line number522 index521 alt1">
522
</div>
<div class="line number523 index522 alt2">
523
</div>
<div class="line number524 index523 alt1">
524
</div>
<div class="line number525 index524 alt2">
525
</div>
<div class="line number526 index525 alt1">
526
</div>
<div class="line number527 index526 alt2">
527
</div>
<div class="line number528 index527 alt1">
528
</div>
<div class="line number529 index528 alt2">
529
</div>
<div class="line number530 index529 alt1">
530
</div>
<div class="line number531 index530 alt2">
531
</div>
<div class="line number532 index531 alt1">
532
</div>
<div class="line number533 index532 alt2">
533
</div>
<div class="line number534 index533 alt1">
534
</div>
<div class="line number535 index534 alt2">
535
</div>
<div class="line number536 index535 alt1">
536
</div>
<div class="line number537 index536 alt2">
537
</div>
<div class="line number538 index537 alt1">
538
</div>
<div class="line number539 index538 alt2">
539
</div>
<div class="line number540 index539 alt1">
540
</div>
<div class="line number541 index540 alt2">
541
</div>
<div class="line number542 index541 alt1">
542
</div>
<div class="line number543 index542 alt2">
543
</div>
<div class="line number544 index543 alt1">
544
</div>
<div class="line number545 index544 alt2">
545
</div>
<div class="line number546 index545 alt1">
546
</div>
<div class="line number547 index546 alt2">
547
</div>
<div class="line number548 index547 alt1">
548
</div>
<div class="line number549 index548 alt2">
549
</div>
<div class="line number550 index549 alt1">
550
</div>
<div class="line number551 index550 alt2">
551
</div>
<div class="line number552 index551 alt1">
552
</div>
<div class="line number553 index552 alt2">
553
</div>
<div class="line number554 index553 alt1">
554
</div>
<div class="line number555 index554 alt2">
555
</div>
<div class="line number556 index555 alt1">
556
</div>
<div class="line number557 index556 alt2">
557
</div>
<div class="line number558 index557 alt1">
558
</div>
<div class="line number559 index558 alt2">
559
</div>
<div class="line number560 index559 alt1">
560
</div>
<div class="line number561 index560 alt2">
561
</div>
<div class="line number562 index561 alt1">
562
</div>
<div class="line number563 index562 alt2">
563
</div>
<div class="line number564 index563 alt1">
564
</div>
<div class="line number565 index564 alt2">
565
</div>
<div class="line number566 index565 alt1">
566
</div>
<div class="line number567 index566 alt2">
567
</div>
<div class="line number568 index567 alt1">
568
</div>
<div class="line number569 index568 alt2">
569
</div>
<div class="line number570 index569 alt1">
570
</div>
<div class="line number571 index570 alt2">
571
</div>
<div class="line number572 index571 alt1">
572
</div>
<div class="line number573 index572 alt2">
573
</div>
<div class="line number574 index573 alt1">
574
</div>
<div class="line number575 index574 alt2">
575
</div>
<div class="line number576 index575 alt1">
576
</div>
<div class="line number577 index576 alt2">
577
</div>
<div class="line number578 index577 alt1">
578
</div>
<div class="line number579 index578 alt2">
579
</div>
<div class="line number580 index579 alt1">
580
</div>
<div class="line number581 index580 alt2">
581
</div>
<div class="line number582 index581 alt1">
582
</div>
<div class="line number583 index582 alt2">
583
</div>
<div class="line number584 index583 alt1">
584
</div>
<div class="line number585 index584 alt2">
585
</div>
<div class="line number586 index585 alt1">
586
</div>
<div class="line number587 index586 alt2">
587
</div>
<div class="line number588 index587 alt1">
588
</div>
<div class="line number589 index588 alt2">
589
</div>
<div class="line number590 index589 alt1">
590
</div>
<div class="line number591 index590 alt2">
591
</div>
<div class="line number592 index591 alt1">
592
</div>
<div class="line number593 index592 alt2">
593
</div>
<div class="line number594 index593 alt1">
594
</div>
<div class="line number595 index594 alt2">
595
</div>
<div class="line number596 index595 alt1">
596
</div>
<div class="line number597 index596 alt2">
597
</div>
<div class="line number598 index597 alt1">
598
</div>
<div class="line number599 index598 alt2">
599
</div>
<div class="line number600 index599 alt1">
600
</div>
<div class="line number601 index600 alt2">
601
</div>
<div class="line number602 index601 alt1">
602
</div>
<div class="line number603 index602 alt2">
603
</div>
<div class="line number604 index603 alt1">
604
</div>
<div class="line number605 index604 alt2">
605
</div>
<div class="line number606 index605 alt1">
606
</div>
<div class="line number607 index606 alt2">
607
</div>
<div class="line number608 index607 alt1">
608
</div>
<div class="line number609 index608 alt2">
609
</div>
<div class="line number610 index609 alt1">
610
</div>
<div class="line number611 index610 alt2">
611
</div>
<div class="line number612 index611 alt1">
612
</div>
<div class="line number613 index612 alt2">
613
</div>
<div class="line number614 index613 alt1">
614
</div>
<div class="line number615 index614 alt2">
615
</div>
<div class="line number616 index615 alt1">
616
</div>
<div class="line number617 index616 alt2">
617
</div>
<div class="line number618 index617 alt1">
618
</div>
<div class="line number619 index618 alt2">
619
</div>
<div class="line number620 index619 alt1">
620
</div>
<div class="line number621 index620 alt2">
621
</div>
<div class="line number622 index621 alt1">
622
</div>
<div class="line number623 index622 alt2">
623
</div>
<div class="line number624 index623 alt1">
624
</div>
<div class="line number625 index624 alt2">
625
</div>
<div class="line number626 index625 alt1">
626
</div>
<div class="line number627 index626 alt2">
627
</div>
<div class="line number628 index627 alt1">
628
</div>
<div class="line number629 index628 alt2">
629
</div>
<div class="line number630 index629 alt1">
630
</div>
<div class="line number631 index630 alt2">
631
</div>
<div class="line number632 index631 alt1">
632
</div>
<div class="line number633 index632 alt2">
633
</div>
<div class="line number634 index633 alt1">
634
</div>
<div class="line number635 index634 alt2">
635
</div>
<div class="line number636 index635 alt1">
636
</div>
<div class="line number637 index636 alt2">
637
</div>
<div class="line number638 index637 alt1">
638
</div>
<div class="line number639 index638 alt2">
639
</div>
<div class="line number640 index639 alt1">
640
</div>
<div class="line number641 index640 alt2">
641
</div>
<div class="line number642 index641 alt1">
642
</div>
<div class="line number643 index642 alt2">
643
</div>
<div class="line number644 index643 alt1">
644
</div>
<div class="line number645 index644 alt2">
645
</div>
<div class="line number646 index645 alt1">
646
</div>
<div class="line number647 index646 alt2">
647
</div>
<div class="line number648 index647 alt1">
648
</div>
<div class="line number649 index648 alt2">
649
</div>
<div class="line number650 index649 alt1">
650
</div>
<div class="line number651 index650 alt2">
651
</div>
<div class="line number652 index651 alt1">
652
</div>
<div class="line number653 index652 alt2">
653
</div>
<div class="line number654 index653 alt1">
654
</div>
<div class="line number655 index654 alt2">
655
</div>
<div class="line number656 index655 alt1">
656
</div>
<div class="line number657 index656 alt2">
657
</div>
<div class="line number658 index657 alt1">
658
</div>
<div class="line number659 index658 alt2">
659
</div>
<div class="line number660 index659 alt1">
660
</div>
<div class="line number661 index660 alt2">
661
</div>
<div class="line number662 index661 alt1">
662
</div>
<div class="line number663 index662 alt2">
663
</div>
<div class="line number664 index663 alt1">
664
</div>
<div class="line number665 index664 alt2">
665
</div>
<div class="line number666 index665 alt1">
666
</div>
<div class="line number667 index666 alt2">
667
</div>
<div class="line number668 index667 alt1">
668
</div>
<div class="line number669 index668 alt2">
669
</div>
<div class="line number670 index669 alt1">
670
</div>
<div class="line number671 index670 alt2">
671
</div>
<div class="line number672 index671 alt1">
672
</div>
<div class="line number673 index672 alt2">
673
</div>
<div class="line number674 index673 alt1">
674
</div>
<div class="line number675 index674 alt2">
675
</div>
<div class="line number676 index675 alt1">
676
</div>
<div class="line number677 index676 alt2">
677
</div>
<div class="line number678 index677 alt1">
678
</div>
<div class="line number679 index678 alt2">
679
</div>
<div class="line number680 index679 alt1">
680
</div>
<div class="line number681 index680 alt2">
681
</div>
<div class="line number682 index681 alt1">
682
</div>
<div class="line number683 index682 alt2">
683
</div>
<div class="line number684 index683 alt1">
684
</div>
<div class="line number685 index684 alt2">
685
</div>
<div class="line number686 index685 alt1">
686
</div>
<div class="line number687 index686 alt2">
687
</div>
<div class="line number688 index687 alt1">
688
</div>
<div class="line number689 index688 alt2">
689
</div>
<div class="line number690 index689 alt1">
690
</div>
<div class="line number691 index690 alt2">
691
</div>
<div class="line number692 index691 alt1">
692
</div>
<div class="line number693 index692 alt2">
693
</div>
<div class="line number694 index693 alt1">
694
</div>
<div class="line number695 index694 alt2">
695
</div>
<div class="line number696 index695 alt1">
696
</div>
<div class="line number697 index696 alt2">
697
</div>
<div class="line number698 index697 alt1">
698
</div>
<div class="line number699 index698 alt2">
699
</div>
<div class="line number700 index699 alt1">
700
</div>
<div class="line number701 index700 alt2">
701
</div>
<div class="line number702 index701 alt1">
702
</div>
<div class="line number703 index702 alt2">
703
</div>
<div class="line number704 index703 alt1">
704
</div>
<div class="line number705 index704 alt2">
705
</div>
<div class="line number706 index705 alt1">
706
</div>
<div class="line number707 index706 alt2">
707
</div>
<div class="line number708 index707 alt1">
708
</div>
<div class="line number709 index708 alt2">
709
</div>
<div class="line number710 index709 alt1">
710
</div>
<div class="line number711 index710 alt2">
711
</div>
<div class="line number712 index711 alt1">
712
</div>
<div class="line number713 index712 alt2">
713
</div>
<div class="line number714 index713 alt1">
714
</div>
<div class="line number715 index714 alt2">
715
</div>
<div class="line number716 index715 alt1">
716
</div>
<div class="line number717 index716 alt2">
717
</div>
<div class="line number718 index717 alt1">
718
</div>
<div class="line number719 index718 alt2">
719
</div>
<div class="line number720 index719 alt1">
720
</div>
<div class="line number721 index720 alt2">
721
</div>
<div class="line number722 index721 alt1">
722
</div>
<div class="line number723 index722 alt2">
723
</div>
<div class="line number724 index723 alt1">
724
</div>
<div class="line number725 index724 alt2">
725
</div>
<div class="line number726 index725 alt1">
726
</div>
<div class="line number727 index726 alt2">
727
</div>
<div class="line number728 index727 alt1">
728
</div>
<div class="line number729 index728 alt2">
729
</div>
<div class="line number730 index729 alt1">
730
</div>
<div class="line number731 index730 alt2">
731
</div>
<div class="line number732 index731 alt1">
732
</div>
<div class="line number733 index732 alt2">
733
</div>
<div class="line number734 index733 alt1">
734
</div>
<div class="line number735 index734 alt2">
735
</div>
<div class="line number736 index735 alt1">
736
</div>
<div class="line number737 index736 alt2">
737
</div>
<div class="line number738 index737 alt1">
738
</div>
<div class="line number739 index738 alt2">
739
</div>
<div class="line number740 index739 alt1">
740
</div>
<div class="line number741 index740 alt2">
741
</div>
<div class="line number742 index741 alt1">
742
</div>
<div class="line number743 index742 alt2">
743
</div>
<div class="line number744 index743 alt1">
744
</div>
<div class="line number745 index744 alt2">
745
</div>
<div class="line number746 index745 alt1">
746
</div>
<div class="line number747 index746 alt2">
747
</div>
<div class="line number748 index747 alt1">
748
</div>
<div class="line number749 index748 alt2">
749
</div>
<div class="line number750 index749 alt1">
750
</div>
<div class="line number751 index750 alt2">
751
</div>
<div class="line number752 index751 alt1">
752
</div>
<div class="line number753 index752 alt2">
753
</div>
<div class="line number754 index753 alt1">
754
</div>
<div class="line number755 index754 alt2">
755
</div>
<div class="line number756 index755 alt1">
756
</div>
<div class="line number757 index756 alt2">
757
</div>
<div class="line number758 index757 alt1">
758
</div>
<div class="line number759 index758 alt2">
759
</div>
<div class="line number760 index759 alt1">
760
</div>
<div class="line number761 index760 alt2">
761
</div>
<div class="line number762 index761 alt1">
762
</div>
<div class="line number763 index762 alt2">
763
</div>
<div class="line number764 index763 alt1">
764
</div>
<div class="line number765 index764 alt2">
765
</div>
<div class="line number766 index765 alt1">
766
</div>
<div class="line number767 index766 alt2">
767
</div>
<div class="line number768 index767 alt1">
768
</div>
<div class="line number769 index768 alt2">
769
</div>
<div class="line number770 index769 alt1">
770
</div>
<div class="line number771 index770 alt2">
771
</div>
<div class="line number772 index771 alt1">
772
</div>
<div class="line number773 index772 alt2">
773
</div>
<div class="line number774 index773 alt1">
774
</div>
<div class="line number775 index774 alt2">
775
</div>
<div class="line number776 index775 alt1">
776
</div>
<div class="line number777 index776 alt2">
777
</div>
<div class="line number778 index777 alt1">
778
</div>
<div class="line number779 index778 alt2">
779
</div>
<div class="line number780 index779 alt1">
780
</div>
<div class="line number781 index780 alt2">
781
</div>
<div class="line number782 index781 alt1">
782
</div>
<div class="line number783 index782 alt2">
783
</div>
<div class="line number784 index783 alt1">
784
</div>
<div class="line number785 index784 alt2">
785
</div>
<div class="line number786 index785 alt1">
786
</div>
<div class="line number787 index786 alt2">
787
</div>
<div class="line number788 index787 alt1">
788
</div>
<div class="line number789 index788 alt2">
789
</div>
<div class="line number790 index789 alt1">
790
</div>
<div class="line number791 index790 alt2">
791
</div>
<div class="line number792 index791 alt1">
792
</div>
<div class="line number793 index792 alt2">
793
</div>
<div class="line number794 index793 alt1">
794
</div>
<div class="line number795 index794 alt2">
795
</div>
<div class="line number796 index795 alt1">
796
</div>
<div class="line number797 index796 alt2">
797
</div>
<div class="line number798 index797 alt1">
798
</div>
<div class="line number799 index798 alt2">
799
</div>
<div class="line number800 index799 alt1">
800
</div>
<div class="line number801 index800 alt2">
801
</div>
<div class="line number802 index801 alt1">
802
</div>
<div class="line number803 index802 alt2">
803
</div>
<div class="line number804 index803 alt1">
804
</div>
<div class="line number805 index804 alt2">
805
</div>
<div class="line number806 index805 alt1">
806
</div>
<div class="line number807 index806 alt2">
807
</div>
<div class="line number808 index807 alt1">
808
</div>
<div class="line number809 index808 alt2">
809
</div>
<div class="line number810 index809 alt1">
810
</div>
<div class="line number811 index810 alt2">
811
</div>
<div class="line number812 index811 alt1">
812
</div>
<div class="line number813 index812 alt2">
813
</div>
<div class="line number814 index813 alt1">
814
</div>
<div class="line number815 index814 alt2">
815
</div>
<div class="line number816 index815 alt1">
816
</div>
<div class="line number817 index816 alt2">
817
</div>
<div class="line number818 index817 alt1">
818
</div>
<div class="line number819 index818 alt2">
819
</div>
<div class="line number820 index819 alt1">
820
</div>
<div class="line number821 index820 alt2">
821
</div>
<div class="line number822 index821 alt1">
822
</div>
<div class="line number823 index822 alt2">
823
</div>
<div class="line number824 index823 alt1">
824
</div>
<div class="line number825 index824 alt2">
825
</div>
<div class="line number826 index825 alt1">
826
</div>
<div class="line number827 index826 alt2">
827
</div>
<div class="line number828 index827 alt1">
828
</div>
<div class="line number829 index828 alt2">
829
</div>
<div class="line number830 index829 alt1">
830
</div>
<div class="line number831 index830 alt2">
831
</div>
<div class="line number832 index831 alt1">
832
</div>
<div class="line number833 index832 alt2">
833
</div>
<div class="line number834 index833 alt1">
834
</div>
<div class="line number835 index834 alt2">
835
</div>
<div class="line number836 index835 alt1">
836
</div>
<div class="line number837 index836 alt2">
837
</div>
<div class="line number838 index837 alt1">
838
</div>
<div class="line number839 index838 alt2">
839
</div>
<div class="line number840 index839 alt1">
840
</div>
<div class="line number841 index840 alt2">
841
</div>
<div class="line number842 index841 alt1">
842
</div>
<div class="line number843 index842 alt2">
843
</div>
<div class="line number844 index843 alt1">
844
</div>
<div class="line number845 index844 alt2">
845
</div>
<div class="line number846 index845 alt1">
846
</div>
<div class="line number847 index846 alt2">
847
</div>
<div class="line number848 index847 alt1">
848
</div>
<div class="line number849 index848 alt2">
849
</div>
<div class="line number850 index849 alt1">
850
</div>
<div class="line number851 index850 alt2">
851
</div>
<div class="line number852 index851 alt1">
852
</div>
<div class="line number853 index852 alt2">
853
</div>
<div class="line number854 index853 alt1">
854
</div>
<div class="line number855 index854 alt2">
855
</div>
<div class="line number856 index855 alt1">
856
</div>
<div class="line number857 index856 alt2">
857
</div>
<div class="line number858 index857 alt1">
858
</div>
<div class="line number859 index858 alt2">
859
</div>
<div class="line number860 index859 alt1">
860
</div>
<div class="line number861 index860 alt2">
861
</div>
<div class="line number862 index861 alt1">
862
</div>
<div class="line number863 index862 alt2">
863
</div>
<div class="line number864 index863 alt1">
864
</div>
<div class="line number865 index864 alt2">
865
</div>
<div class="line number866 index865 alt1">
866
</div>
<div class="line number867 index866 alt2">
867
</div>
<div class="line number868 index867 alt1">
868
</div>
<div class="line number869 index868 alt2">
869
</div>
<div class="line number870 index869 alt1">
870
</div>
<div class="line number871 index870 alt2">
871
</div>
<div class="line number872 index871 alt1">
872
</div>
<div class="line number873 index872 alt2">
873
</div>
<div class="line number874 index873 alt1">
874
</div>
<div class="line number875 index874 alt2">
875
</div>
<div class="line number876 index875 alt1">
876
</div>
<div class="line number877 index876 alt2">
877
</div>
<div class="line number878 index877 alt1">
878
</div>
<div class="line number879 index878 alt2">
879
</div>
<div class="line number880 index879 alt1">
880
</div>
<div class="line number881 index880 alt2">
881
</div>
<div class="line number882 index881 alt1">
882
</div>
<div class="line number883 index882 alt2">
883
</div>
<div class="line number884 index883 alt1">
884
</div>
<div class="line number885 index884 alt2">
885
</div>
<div class="line number886 index885 alt1">
886
</div>
<div class="line number887 index886 alt2">
887
</div>
<div class="line number888 index887 alt1">
888
</div>
<div class="line number889 index888 alt2">
889
</div>
<div class="line number890 index889 alt1">
890
</div>
<div class="line number891 index890 alt2">
891
</div>
<div class="line number892 index891 alt1">
892
</div>
<div class="line number893 index892 alt2">
893
</div>
<div class="line number894 index893 alt1">
894
</div>
<div class="line number895 index894 alt2">
895
</div>
<div class="line number896 index895 alt1">
896
</div>
<div class="line number897 index896 alt2">
897
</div>
<div class="line number898 index897 alt1">
898
</div>
<div class="line number899 index898 alt2">
899
</div>
<div class="line number900 index899 alt1">
900
</div>
<div class="line number901 index900 alt2">
901
</div>
<div class="line number902 index901 alt1">
902
</div>
<div class="line number903 index902 alt2">
903
</div>
<div class="line number904 index903 alt1">
904
</div>
<div class="line number905 index904 alt2">
905
</div>
<div class="line number906 index905 alt1">
906
</div>
<div class="line number907 index906 alt2">
907
</div>
<div class="line number908 index907 alt1">
908
</div>
<div class="line number909 index908 alt2">
909
</div>
<div class="line number910 index909 alt1">
910
</div>
<div class="line number911 index910 alt2">
911
</div>
<div class="line number912 index911 alt1">
912
</div>
<div class="line number913 index912 alt2">
913
</div>
<div class="line number914 index913 alt1">
914
</div>
<div class="line number915 index914 alt2">
915
</div>
<div class="line number916 index915 alt1">
916
</div>
<div class="line number917 index916 alt2">
917
</div>
<div class="line number918 index917 alt1">
918
</div>
<div class="line number919 index918 alt2">
919
</div>
<div class="line number920 index919 alt1">
920
</div>
<div class="line number921 index920 alt2">
921
</div>
<div class="line number922 index921 alt1">
922
</div>
<div class="line number923 index922 alt2">
923
</div>
<div class="line number924 index923 alt1">
924
</div>
<div class="line number925 index924 alt2">
925
</div>
<div class="line number926 index925 alt1">
926
</div>
<div class="line number927 index926 alt2">
927
</div>
<div class="line number928 index927 alt1">
928
</div>
<div class="line number929 index928 alt2">
929
</div>
<div class="line number930 index929 alt1">
930
</div>
<div class="line number931 index930 alt2">
931
</div>
<div class="line number932 index931 alt1">
932
</div>
<div class="line number933 index932 alt2">
933
</div>
<div class="line number934 index933 alt1">
934
</div>
<div class="line number935 index934 alt2">
935
</div>
<div class="line number936 index935 alt1">
936
</div>
<div class="line number937 index936 alt2">
937
</div>
<div class="line number938 index937 alt1">
938
</div>
<div class="line number939 index938 alt2">
939
</div>
<div class="line number940 index939 alt1">
940
</div>
<div class="line number941 index940 alt2">
941
</div>
<div class="line number942 index941 alt1">
942
</div>
<div class="line number943 index942 alt2">
943
</div>
<div class="line number944 index943 alt1">
944
</div>
<div class="line number945 index944 alt2">
945
</div>
<div class="line number946 index945 alt1">
946
</div>
<div class="line number947 index946 alt2">
947
</div>
<div class="line number948 index947 alt1">
948
</div>
<div class="line number949 index948 alt2">
949
</div>
<div class="line number950 index949 alt1">
950
</div>
<div class="line number951 index950 alt2">
951
</div>
<div class="line number952 index951 alt1">
952
</div>
<div class="line number953 index952 alt2">
953
</div>
<div class="line number954 index953 alt1">
954
</div>
<div class="line number955 index954 alt2">
955
</div>
<div class="line number956 index955 alt1">
956
</div>
<div class="line number957 index956 alt2">
957
</div>
<div class="line number958 index957 alt1">
958
</div>
<div class="line number959 index958 alt2">
959
</div>
<div class="line number960 index959 alt1">
960
</div>
<div class="line number961 index960 alt2">
961
</div>
<div class="line number962 index961 alt1">
962
</div>
<div class="line number963 index962 alt2">
963
</div>
<div class="line number964 index963 alt1">
964
</div>
<div class="line number965 index964 alt2">
965
</div>
<div class="line number966 index965 alt1">
966
</div>
<div class="line number967 index966 alt2">
967
</div>
<div class="line number968 index967 alt1">
968
</div>
<div class="line number969 index968 alt2">
969
</div>
<div class="line number970 index969 alt1">
970
</div>
<div class="line number971 index970 alt2">
971
</div>
<div class="line number972 index971 alt1">
972
</div>
<div class="line number973 index972 alt2">
973
</div>
<div class="line number974 index973 alt1">
974
</div>
<div class="line number975 index974 alt2">
975
</div>
<div class="line number976 index975 alt1">
976
</div>
<div class="line number977 index976 alt2">
977
</div>
<div class="line number978 index977 alt1">
978
</div>
<div class="line number979 index978 alt2">
979
</div>
<div class="line number980 index979 alt1">
980
</div>
<div class="line number981 index980 alt2">
981
</div>
<div class="line number982 index981 alt1">
982
</div>
<div class="line number983 index982 alt2">
983
</div>
<div class="line number984 index983 alt1">
984
</div>
<div class="line number985 index984 alt2">
985
</div>
<div class="line number986 index985 alt1">
986
</div>
<div class="line number987 index986 alt2">
987
</div>
<div class="line number988 index987 alt1">
988
</div>
<div class="line number989 index988 alt2">
989
</div>
<div class="line number990 index989 alt1">
990
</div>
<div class="line number991 index990 alt2">
991
</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
`public` `class` `CustomViewAbove ``extends` `ViewGroup {`
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
` ``private` `static` `final` `String TAG = ``"CustomViewAbove"``;`
</div>
<div class="line number4 index3 alt1">
` ``private` `static` `final` `boolean` `DEBUG = ``false``;`
</div>
<div class="line number5 index4 alt2">
</div>
<div class="line number6 index5 alt1">
` ``private` `static` `final` `boolean` `USE_CACHE = ``false``;`
</div>
<div class="line number7 index6 alt2">
</div>
<div class="line number8 index7 alt1">
` ``private` `static` `final` `int` `MAX_SETTLE_DURATION = ``600``; ``// ms`
</div>
<div class="line number9 index8 alt2">
` ``private` `static` `final` `int` `MIN_DISTANCE_FOR_FLING = ``25``; ``// dips`
</div>
<div class="line number10 index9 alt1">
</div>
<div class="line number11 index10 alt2">
` ``private` `static` `final` `Interpolator sInterpolator = ``new` `Interpolator() {`
</div>
<div class="line number12 index11 alt1">
` ``public` `float` `getInterpolation(``float` `t) {`
</div>
<div class="line number13 index12 alt2">
` ``t -= ``1``.0f;`
</div>
<div class="line number14 index13 alt1">
` ``return` `t * t * t * t * t + ``1``.0f;`
</div>
<div class="line number15 index14 alt2">
` ``}`
</div>
<div class="line number16 index15 alt1">
` ``};`
</div>
<div class="line number17 index16 alt2">
</div>
<div class="line number18 index17 alt1">
` ``private` `View mContent;`
</div>
<div class="line number19 index18 alt2">
</div>
<div class="line number20 index19 alt1">
` ``private` `int` `mCurItem;`
</div>
<div class="line number21 index20 alt2">
` ``private` `Scroller mScroller;`
</div>
<div class="line number22 index21 alt1">
</div>
<div class="line number23 index22 alt2">
` ``private` `boolean` `mScrollingCacheEnabled;`
</div>
<div class="line number24 index23 alt1">
</div>
<div class="line number25 index24 alt2">
` ``private` `boolean` `mScrolling;`
</div>
<div class="line number26 index25 alt1">
</div>
<div class="line number27 index26 alt2">
` ``private` `boolean` `mIsBeingDragged;`
</div>
<div class="line number28 index27 alt1">
` ``private` `boolean` `mIsUnableToDrag;`
</div>
<div class="line number29 index28 alt2">
` ``private` `int` `mTouchSlop;`
</div>
<div class="line number30 index29 alt1">
` ``private` `float` `mInitialMotionX;`
</div>
<div class="line number31 index30 alt2">
` ``/**`
</div>
<div class="line number32 index31 alt1">
` ``* Position of the last motion event.`
</div>
<div class="line number33 index32 alt2">
` ``*/`
</div>
<div class="line number34 index33 alt1">
` ``private` `float` `mLastMotionX;`
</div>
<div class="line number35 index34 alt2">
` ``private` `float` `mLastMotionY;`
</div>
<div class="line number36 index35 alt1">
` ``/**`
</div>
<div class="line number37 index36 alt2">
` ``* ID of the active pointer. This is used to retain consistency during`
</div>
<div class="line number38 index37 alt1">
` ``* drags/flings if multiple pointers are used.`
</div>
<div class="line number39 index38 alt2">
` ``*/`
</div>
<div class="line number40 index39 alt1">
` ``protected` `int` `mActivePointerId = INVALID_POINTER;`
</div>
<div class="line number41 index40 alt2">
` ``/**`
</div>
<div class="line number42 index41 alt1">
` ``* Sentinel value for no current active pointer.`
</div>
<div class="line number43 index42 alt2">
` ``* Used by {@link #mActivePointerId}.`
</div>
<div class="line number44 index43 alt1">
` ``*/`
</div>
<div class="line number45 index44 alt2">
` ``private` `static` `final` `int` `INVALID_POINTER = -``1``;`
</div>
<div class="line number46 index45 alt1">
` ``/** 保存转场动画的变量*/`
</div>
<div class="line number47 index46 alt2">
` ``private` `CanvasTransformer mTransformer;`
</div>
<div class="line number48 index47 alt1">
</div>
<div class="line number49 index48 alt2">
` ``/**`
</div>
<div class="line number50 index49 alt1">
` ``* Determines speed during touch scrolling`
</div>
<div class="line number51 index50 alt2">
` ``*/`
</div>
<div class="line number52 index51 alt1">
` ``protected` `VelocityTracker mVelocityTracker;`
</div>
<div class="line number53 index52 alt2">
` ``private` `int` `mMinimumVelocity;`
</div>
<div class="line number54 index53 alt1">
` ``protected` `int` `mMaximumVelocity;`
</div>
<div class="line number55 index54 alt2">
` ``private` `int` `mFlingDistance;`
</div>
<div class="line number56 index55 alt1">
</div>
<div class="line number57 index56 alt2">
` ``private` `CustomViewBehind mViewBehind;`
</div>
<div class="line number58 index57 alt1">
` ``// private int mMode;`
</div>
<div class="line number59 index58 alt2">
` ``private` `boolean` `mEnabled = ``true``;`
</div>
<div class="line number60 index59 alt1">
</div>
<div class="line number61 index60 alt2">
` ``private` `OnPageChangeListener mOnPageChangeListener;`
</div>
<div class="line number62 index61 alt1">
` ``private` `OnPageChangeListener mInternalPageChangeListener;`
</div>
<div class="line number63 index62 alt2">
</div>
<div class="line number64 index63 alt1">
` ``// private OnCloseListener mCloseListener;`
</div>
<div class="line number65 index64 alt2">
` ``// private OnOpenListener mOpenListener;`
</div>
<div class="line number66 index65 alt1">
` ``private` `OnClosedListener mClosedListener;`
</div>
<div class="line number67 index66 alt2">
` ``private` `OnOpenedListener mOpenedListener;`
</div>
<div class="line number68 index67 alt1">
</div>
<div class="line number69 index68 alt2">
` ``private` `List<View> mIgnoredViews = ``new` `ArrayList<View>();`
</div>
<div class="line number70 index69 alt1">
</div>
<div class="line number71 index70 alt2">
` ``// private int mScrollState = SCROLL_STATE_IDLE;`
</div>
<div class="line number72 index71 alt1">
</div>
<div class="line number73 index72 alt2">
` ``/**`
</div>
<div class="line number74 index73 alt1">
` ``* Callback interface for responding to changing state of the selected page.`
</div>
<div class="line number75 index74 alt2">
` ``*/`
</div>
<div class="line number76 index75 alt1">
` ``public` `interface` `OnPageChangeListener {`
</div>
<div class="line number77 index76 alt2">
</div>
<div class="line number78 index77 alt1">
` ``/**`
</div>
<div class="line number79 index78 alt2">
` ``* This method will be invoked when the current page is scrolled, either as part`
</div>
<div class="line number80 index79 alt1">
` ``* of a programmatically initiated smooth scroll or a user initiated touch scroll.`
</div>
<div class="line number81 index80 alt2">
` ``*`
</div>
<div class="line number82 index81 alt1">
` ``* @param position Position index of the first page currently being displayed.`
</div>
<div class="line number83 index82 alt2">
` ``* Page position+1 will be visible if positionOffset is nonzero.`
</div>
<div class="line number84 index83 alt1">
` ``* @param positionOffset Value from [0, 1) indicating the offset from the page at position.`
</div>
<div class="line number85 index84 alt2">
` ``* @param positionOffsetPixels Value in pixels indicating the offset from position.`
</div>
<div class="line number86 index85 alt1">
` ``*/`
</div>
<div class="line number87 index86 alt2">
` ``public` `void` `onPageScrolled(``int` `position, ``float` `positionOffset, ``int` `positionOffsetPixels);`
</div>
<div class="line number88 index87 alt1">
</div>
<div class="line number89 index88 alt2">
` ``/**`
</div>
<div class="line number90 index89 alt1">
` ``* This method will be invoked when a new page becomes selected. Animation is not`
</div>
<div class="line number91 index90 alt2">
` ``* necessarily complete.`
</div>
<div class="line number92 index91 alt1">
` ``*`
</div>
<div class="line number93 index92 alt2">
` ``* @param position Position index of the new selected page.`
</div>
<div class="line number94 index93 alt1">
` ``*/`
</div>
<div class="line number95 index94 alt2">
` ``public` `void` `onPageSelected(``int` `position);`
</div>
<div class="line number96 index95 alt1">
</div>
<div class="line number97 index96 alt2">
` ``}`
</div>
<div class="line number98 index97 alt1">
</div>
<div class="line number99 index98 alt2">
` ``/**`
</div>
<div class="line number100 index99 alt1">
` ``* Simple implementation of the {@link OnPageChangeListener} interface with stub`
</div>
<div class="line number101 index100 alt2">
` ``* implementations of each method. Extend this if you do not intend to override`
</div>
<div class="line number102 index101 alt1">
` ``* every method of {@link OnPageChangeListener}.`
</div>
<div class="line number103 index102 alt2">
` ``*/`
</div>
<div class="line number104 index103 alt1">
` ``public` `static` `class` `SimpleOnPageChangeListener ``implements` `OnPageChangeListener {`
</div>
<div class="line number105 index104 alt2">
</div>
<div class="line number106 index105 alt1">
` ``public` `void` `onPageScrolled(``int` `position, ``float` `positionOffset, ``int` `positionOffsetPixels) {`
</div>
<div class="line number107 index106 alt2">
` ``// This space for rent`
</div>
<div class="line number108 index107 alt1">
` ``}`
</div>
<div class="line number109 index108 alt2">
</div>
<div class="line number110 index109 alt1">
` ``public` `void` `onPageSelected(``int` `position) {`
</div>
<div class="line number111 index110 alt2">
` ``// This space for rent`
</div>
<div class="line number112 index111 alt1">
` ``}`
</div>
<div class="line number113 index112 alt2">
</div>
<div class="line number114 index113 alt1">
` ``public` `void` `onPageScrollStateChanged(``int` `state) {`
</div>
<div class="line number115 index114 alt2">
` ``// This space for rent`
</div>
<div class="line number116 index115 alt1">
` ``}`
</div>
<div class="line number117 index116 alt2">
</div>
<div class="line number118 index117 alt1">
` ``}`
</div>
<div class="line number119 index118 alt2">
</div>
<div class="line number120 index119 alt1">
` ``public` `CustomViewAbove(Context context) {`
</div>
<div class="line number121 index120 alt2">
` ``this``(context, ``null``);`
</div>
<div class="line number122 index121 alt1">
` ``}`
</div>
<div class="line number123 index122 alt2">
</div>
<div class="line number124 index123 alt1">
` ``public` `CustomViewAbove(Context context, AttributeSet attrs) {`
</div>
<div class="line number125 index124 alt2">
` ``super``(context, attrs);`
</div>
<div class="line number126 index125 alt1">
` ``initCustomViewAbove();`
</div>
<div class="line number127 index126 alt2">
` ``}`
</div>
<div class="line number128 index127 alt1">
</div>
<div class="line number129 index128 alt2">
` ``void` `initCustomViewAbove() {`
</div>
<div class="line number130 index129 alt1">
` ``setWillNotDraw(``false``);`
</div>
<div class="line number131 index130 alt2">
` ``setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);`
</div>
<div class="line number132 index131 alt1">
` ``setFocusable(``true``);`
</div>
<div class="line number133 index132 alt2">
` ``final` `Context context = getContext();`
</div>
<div class="line number134 index133 alt1">
` ``mScroller = ``new` `Scroller(context, sInterpolator);`
</div>
<div class="line number135 index134 alt2">
` ``final` `ViewConfiguration configuration = ViewConfiguration.get(context);`
</div>
<div class="line number136 index135 alt1">
` ``mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);`
</div>
<div class="line number137 index136 alt2">
` ``mMinimumVelocity = configuration.getScaledMinimumFlingVelocity();`
</div>
<div class="line number138 index137 alt1">
` ``mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();`
</div>
<div class="line number139 index138 alt2">
` ``setInternalPageChangeListener(``new` `SimpleOnPageChangeListener() {`
</div>
<div class="line number140 index139 alt1">
` ``public` `void` `onPageSelected(``int` `position) {`
</div>
<div class="line number141 index140 alt2">
` ``if` `(mViewBehind != ``null``) {`
</div>
<div class="line number142 index141 alt1">
` ``switch` `(position) {`
</div>
<div class="line number143 index142 alt2">
` ``case` ```:`
</div>
<div class="line number144 index143 alt1">
` ``case` `2``:`
</div>
<div class="line number145 index144 alt2">
` ``mViewBehind.setChildrenEnabled(``true``);`
</div>
<div class="line number146 index145 alt1">
` ``break``;`
</div>
<div class="line number147 index146 alt2">
` ``case` `1``:`
</div>
<div class="line number148 index147 alt1">
` ``mViewBehind.setChildrenEnabled(``false``);`
</div>
<div class="line number149 index148 alt2">
` ``break``;`
</div>
<div class="line number150 index149 alt1">
` ``}`
</div>
<div class="line number151 index150 alt2">
` ``}`
</div>
<div class="line number152 index151 alt1">
` ``}`
</div>
<div class="line number153 index152 alt2">
` ``});`
</div>
<div class="line number154 index153 alt1">
</div>
<div class="line number155 index154 alt2">
` ``final` `float` `density = context.getResources().getDisplayMetrics().density;`
</div>
<div class="line number156 index155 alt1">
` ``mFlingDistance = (``int``) (MIN_DISTANCE_FOR_FLING * density);`
</div>
<div class="line number157 index156 alt2">
` ``}`
</div>
<div class="line number158 index157 alt1">
</div>
<div class="line number159 index158 alt2">
` ``/**`
</div>
<div class="line number160 index159 alt1">
` ``* Set the currently selected page. If the CustomViewPager has already been through its first`
</div>
<div class="line number161 index160 alt2">
` ``* layout there will be a smooth animated transition between the current item and the`
</div>
<div class="line number162 index161 alt1">
` ``* specified item.`
</div>
<div class="line number163 index162 alt2">
` ``*`
</div>
<div class="line number164 index163 alt1">
` ``* @param item Item index to select`
</div>
<div class="line number165 index164 alt2">
` ``*/`
</div>
<div class="line number166 index165 alt1">
` ``public` `void` `setCurrentItem(``int` `item) {`
</div>
<div class="line number167 index166 alt2">
` ``setCurrentItemInternal(item, ``true``, ``false``);`
</div>
<div class="line number168 index167 alt1">
` ``}`
</div>
<div class="line number169 index168 alt2">
</div>
<div class="line number170 index169 alt1">
` ``/**`
</div>
<div class="line number171 index170 alt2">
` ``* Set the currently selected page.`
</div>
<div class="line number172 index171 alt1">
` ``*`
</div>
<div class="line number173 index172 alt2">
` ``* @param item Item index to select`
</div>
<div class="line number174 index173 alt1">
` ``* @param smoothScroll True to smoothly scroll to the new item, false to transition immediately`
</div>
<div class="line number175 index174 alt2">
` ``*/`
</div>
<div class="line number176 index175 alt1">
` ``public` `void` `setCurrentItem(``int` `item, ``boolean` `smoothScroll) {`
</div>
<div class="line number177 index176 alt2">
` ``setCurrentItemInternal(item, smoothScroll, ``false``);`
</div>
<div class="line number178 index177 alt1">
` ``}`
</div>
<div class="line number179 index178 alt2">
</div>
<div class="line number180 index179 alt1">
` ``public` `int` `getCurrentItem() {`
</div>
<div class="line number181 index180 alt2">
` ``return` `mCurItem;`
</div>
<div class="line number182 index181 alt1">
` ``}`
</div>
<div class="line number183 index182 alt2">
</div>
<div class="line number184 index183 alt1">
` ``void` `setCurrentItemInternal(``int` `item, ``boolean` `smoothScroll, ``boolean` `always) {`
</div>
<div class="line number185 index184 alt2">
` ``setCurrentItemInternal(item, smoothScroll, always, ````);`
</div>
<div class="line number186 index185 alt1">
` ``}`
</div>
<div class="line number187 index186 alt2">
</div>
<div class="line number188 index187 alt1">
` ``void` `setCurrentItemInternal(``int` `item, ``boolean` `smoothScroll, ``boolean` `always, ``int` `velocity) {`
</div>
<div class="line number189 index188 alt2">
` ``if` `(!always && mCurItem == item) {`
</div>
<div class="line number190 index189 alt1">
` ``setScrollingCacheEnabled(``false``);`
</div>
<div class="line number191 index190 alt2">
` ``return``;`
</div>
<div class="line number192 index191 alt1">
` ``}`
</div>
<div class="line number193 index192 alt2">
</div>
<div class="line number194 index193 alt1">
` ``item = mViewBehind.getMenuPage(item);`
</div>
<div class="line number195 index194 alt2">
</div>
<div class="line number196 index195 alt1">
` ``final` `boolean` `dispatchSelected = mCurItem != item;`
</div>
<div class="line number197 index196 alt2">
` ``mCurItem = item;`
</div>
<div class="line number198 index197 alt1">
` ``final` `int` `destX = getDestScrollX(mCurItem);`
</div>
<div class="line number199 index198 alt2">
` ``if` `(dispatchSelected && mOnPageChangeListener != ``null``) {`
</div>
<div class="line number200 index199 alt1">
` ``mOnPageChangeListener.onPageSelected(item);`
</div>
<div class="line number201 index200 alt2">
` ``}`
</div>
<div class="line number202 index201 alt1">
` ``if` `(dispatchSelected && mInternalPageChangeListener != ``null``) {`
</div>
<div class="line number203 index202 alt2">
` ``mInternalPageChangeListener.onPageSelected(item);`
</div>
<div class="line number204 index203 alt1">
` ``}`
</div>
<div class="line number205 index204 alt2">
` ``if` `(smoothScroll) {`
</div>
<div class="line number206 index205 alt1">
` ``smoothScrollTo(destX, ````, velocity);`
</div>
<div class="line number207 index206 alt2">
` ``} ``else` `{`
</div>
<div class="line number208 index207 alt1">
` ``completeScroll();`
</div>
<div class="line number209 index208 alt2">
` ``scrollTo(destX, ````);`
</div>
<div class="line number210 index209 alt1">
` ``}`
</div>
<div class="line number211 index210 alt2">
` ``}`
</div>
<div class="line number212 index211 alt1">
</div>
<div class="line number213 index212 alt2">
` ``/**`
</div>
<div class="line number214 index213 alt1">
` ``* Set a listener that will be invoked whenever the page changes or is incrementally`
</div>
<div class="line number215 index214 alt2">
` ``* scrolled. See {@link OnPageChangeListener}.`
</div>
<div class="line number216 index215 alt1">
` ``*`
</div>
<div class="line number217 index216 alt2">
` ``* @param listener Listener to set`
</div>
<div class="line number218 index217 alt1">
` ``*/`
</div>
<div class="line number219 index218 alt2">
` ``public` `void` `setOnPageChangeListener(OnPageChangeListener listener) {`
</div>
<div class="line number220 index219 alt1">
` ``mOnPageChangeListener = listener;`
</div>
<div class="line number221 index220 alt2">
` ``}`
</div>
<div class="line number222 index221 alt1">
` ``/*`
</div>
<div class="line number223 index222 alt2">
` ``public void setOnOpenListener(OnOpenListener l) {`
</div>
<div class="line number224 index223 alt1">
` ``mOpenListener = l;`
</div>
<div class="line number225 index224 alt2">
` ``}`
</div>
<div class="line number226 index225 alt1">
</div>
<div class="line number227 index226 alt2">
` ``public void setOnCloseListener(OnCloseListener l) {`
</div>
<div class="line number228 index227 alt1">
` ``mCloseListener = l;`
</div>
<div class="line number229 index228 alt2">
` ``}`
</div>
<div class="line number230 index229 alt1">
` ``*/`
</div>
<div class="line number231 index230 alt2">
` ``public void setOnOpenedListener(OnOpenedListener l) {`
</div>
<div class="line number232 index231 alt1">
` ``mOpenedListener = l;`
</div>
<div class="line number233 index232 alt2">
` ``}`
</div>
<div class="line number234 index233 alt1">
</div>
<div class="line number235 index234 alt2">
` ``public void setOnClosedListener(OnClosedListener l) {`
</div>
<div class="line number236 index235 alt1">
` ``mClosedListener = l;`
</div>
<div class="line number237 index236 alt2">
` ``}`
</div>
<div class="line number238 index237 alt1">
</div>
<div class="line number239 index238 alt2">
` ``/**`
</div>
<div class="line number240 index239 alt1">
` ``* Set a separate OnPageChangeListener for internal use by the support library.`
</div>
<div class="line number241 index240 alt2">
` ``*`
</div>
<div class="line number242 index241 alt1">
` ``* @param listener Listener to set`
</div>
<div class="line number243 index242 alt2">
` ``* @return The old listener that was set, if any.`
</div>
<div class="line number244 index243 alt1">
` ``*/`
</div>
<div class="line number245 index244 alt2">
` ``OnPageChangeListener setInternalPageChangeListener(OnPageChangeListener listener) {`
</div>
<div class="line number246 index245 alt1">
` ``OnPageChangeListener oldListener = mInternalPageChangeListener;`
</div>
<div class="line number247 index246 alt2">
` ``mInternalPageChangeListener = listener;`
</div>
<div class="line number248 index247 alt1">
` ``return oldListener;`
</div>
<div class="line number249 index248 alt2">
` ``}`
</div>
<div class="line number250 index249 alt1">
</div>
<div class="line number251 index250 alt2">
` ``public void addIgnoredView(View v) {`
</div>
<div class="line number252 index251 alt1">
` ``if (!mIgnoredViews.contains(v)) {`
</div>
<div class="line number253 index252 alt2">
` ``mIgnoredViews.add(v);`
</div>
<div class="line number254 index253 alt1">
` ``}`
</div>
<div class="line number255 index254 alt2">
` ``}`
</div>
<div class="line number256 index255 alt1">
</div>
<div class="line number257 index256 alt2">
` ``public void removeIgnoredView(View v) {`
</div>
<div class="line number258 index257 alt1">
` ``mIgnoredViews.remove(v);`
</div>
<div class="line number259 index258 alt2">
` ``}`
</div>
<div class="line number260 index259 alt1">
</div>
<div class="line number261 index260 alt2">
` ``public void clearIgnoredViews() {`
</div>
<div class="line number262 index261 alt1">
` ``mIgnoredViews.clear();`
</div>
<div class="line number263 index262 alt2">
` ``}`
</div>
<div class="line number264 index263 alt1">
</div>
<div class="line number265 index264 alt2">
` ``// We want the duration of the page snap animation to be influenced by the distance that`
</div>
<div class="line number266 index265 alt1">
` ``// the screen has to travel, however, we don't want this duration to be effected in a`
</div>
<div class="line number267 index266 alt2">
` ``// purely linear fashion. Instead, we use this method to moderate the effect that the distance`
</div>
<div class="line number268 index267 alt1">
` ``// of travel has on the overall snap duration.`
</div>
<div class="line number269 index268 alt2">
` ``float distanceInfluenceForSnapDuration(float f) {`
</div>
<div class="line number270 index269 alt1">
` ``f -= 0.5f; // center the values about 0.`
</div>
<div class="line number271 index270 alt2">
` ``f *= 0.3f * Math.PI / 2.0f;`
</div>
<div class="line number272 index271 alt1">
` ``return (float) FloatMath.sin(f);`
</div>
<div class="line number273 index272 alt2">
` ``}`
</div>
<div class="line number274 index273 alt1">
</div>
<div class="line number275 index274 alt2">
` ``public int getDestScrollX(int page) {`
</div>
<div class="line number276 index275 alt1">
` ``switch (page) {`
</div>
<div class="line number277 index276 alt2">
` ``case 0:`
</div>
<div class="line number278 index277 alt1">
` ``case 2:`
</div>
<div class="line number279 index278 alt2">
` ``return mViewBehind.getMenuLeft(mContent, page);`
</div>
<div class="line number280 index279 alt1">
` ``case 1:`
</div>
<div class="line number281 index280 alt2">
` ``return mContent.getLeft();`
</div>
<div class="line number282 index281 alt1">
` ``}`
</div>
<div class="line number283 index282 alt2">
` ``return 0;`
</div>
<div class="line number284 index283 alt1">
` ``}`
</div>
<div class="line number285 index284 alt2">
</div>
<div class="line number286 index285 alt1">
` ``private int getLeftBound() {`
</div>
<div class="line number287 index286 alt2">
` ``return mViewBehind.getAbsLeftBound(mContent);`
</div>
<div class="line number288 index287 alt1">
` ``}`
</div>
<div class="line number289 index288 alt2">
</div>
<div class="line number290 index289 alt1">
` ``private int getRightBound() {`
</div>
<div class="line number291 index290 alt2">
` ``return mViewBehind.getAbsRightBound(mContent);`
</div>
<div class="line number292 index291 alt1">
` ``}`
</div>
<div class="line number293 index292 alt2">
</div>
<div class="line number294 index293 alt1">
` ``public int getContentLeft() {`
</div>
<div class="line number295 index294 alt2">
` ``return mContent.getLeft() + mContent.getPaddingLeft();`
</div>
<div class="line number296 index295 alt1">
` ``}`
</div>
<div class="line number297 index296 alt2">
</div>
<div class="line number298 index297 alt1">
` ``public boolean isMenuOpen() {`
</div>
<div class="line number299 index298 alt2">
` ``return mCurItem == 0 || mCurItem == 2;`
</div>
<div class="line number300 index299 alt1">
` ``}`
</div>
<div class="line number301 index300 alt2">
</div>
<div class="line number302 index301 alt1">
` ``private boolean isInIgnoredView(MotionEvent ev) {`
</div>
<div class="line number303 index302 alt2">
` ``Rect rect = new Rect();`
</div>
<div class="line number304 index303 alt1">
` ``for (View v : mIgnoredViews) {`
</div>
<div class="line number305 index304 alt2">
` ``v.getHitRect(rect);`
</div>
<div class="line number306 index305 alt1">
` ``if (rect.contains((int)ev.getX(), (int)ev.getY())) return true;`
</div>
<div class="line number307 index306 alt2">
` ``}`
</div>
<div class="line number308 index307 alt1">
` ``return false;`
</div>
<div class="line number309 index308 alt2">
` ``}`
</div>
<div class="line number310 index309 alt1">
</div>
<div class="line number311 index310 alt2">
` ``public int getBehindWidth() {`
</div>
<div class="line number312 index311 alt1">
` ``if (mViewBehind == null) {`
</div>
<div class="line number313 index312 alt2">
` ``return 0;`
</div>
<div class="line number314 index313 alt1">
` ``} else {`
</div>
<div class="line number315 index314 alt2">
` ``return mViewBehind.getBehindWidth();`
</div>
<div class="line number316 index315 alt1">
` ``}`
</div>
<div class="line number317 index316 alt2">
` ``}`
</div>
<div class="line number318 index317 alt1">
</div>
<div class="line number319 index318 alt2">
` ``public int getChildWidth(int i) {`
</div>
<div class="line number320 index319 alt1">
` ``switch (i) {`
</div>
<div class="line number321 index320 alt2">
` ``case 0:`
</div>
<div class="line number322 index321 alt1">
` ``return getBehindWidth();`
</div>
<div class="line number323 index322 alt2">
` ``case 1:`
</div>
<div class="line number324 index323 alt1">
` ``return mContent.getWidth();`
</div>
<div class="line number325 index324 alt2">
` ``default:`
</div>
<div class="line number326 index325 alt1">
` ``return 0;`
</div>
<div class="line number327 index326 alt2">
` ``}`
</div>
<div class="line number328 index327 alt1">
` ``}`
</div>
<div class="line number329 index328 alt2">
</div>
<div class="line number330 index329 alt1">
` ``public boolean isSlidingEnabled() {`
</div>
<div class="line number331 index330 alt2">
` ``return mEnabled;`
</div>
<div class="line number332 index331 alt1">
` ``}`
</div>
<div class="line number333 index332 alt2">
</div>
<div class="line number334 index333 alt1">
` ``public void setSlidingEnabled(boolean b) {`
</div>
<div class="line number335 index334 alt2">
` ``mEnabled = b;`
</div>
<div class="line number336 index335 alt1">
` ``}`
</div>
<div class="line number337 index336 alt2">
</div>
<div class="line number338 index337 alt1">
` ``/**`
</div>
<div class="line number339 index338 alt2">
` ``* Like {@link View#scrollBy}, but scroll smoothly instead of immediately.`
</div>
<div class="line number340 index339 alt1">
` ``*`
</div>
<div class="line number341 index340 alt2">
` ``* @param x the number of pixels to scroll by on the X axis`
</div>
<div class="line number342 index341 alt1">
` ``* @param y the number of pixels to scroll by on the Y axis`
</div>
<div class="line number343 index342 alt2">
` ``*/`
</div>
<div class="line number344 index343 alt1">
` ``void smoothScrollTo(int x, int y) {`
</div>
<div class="line number345 index344 alt2">
` ``smoothScrollTo(x, y, 0);`
</div>
<div class="line number346 index345 alt1">
` ``}`
</div>
<div class="line number347 index346 alt2">
</div>
<div class="line number348 index347 alt1">
` ``/**`
</div>
<div class="line number349 index348 alt2">
` ``* Like {@link View#scrollBy}, but scroll smoothly instead of immediately.`
</div>
<div class="line number350 index349 alt1">
` ``*`
</div>
<div class="line number351 index350 alt2">
` ``* @param x the number of pixels to scroll by on the X axis`
</div>
<div class="line number352 index351 alt1">
` ``* @param y the number of pixels to scroll by on the Y axis`
</div>
<div class="line number353 index352 alt2">
` ``* @param velocity the velocity associated with a fling, if applicable. (0 otherwise)`
</div>
<div class="line number354 index353 alt1">
` ``*/`
</div>
<div class="line number355 index354 alt2">
` ``void smoothScrollTo(int x, int y, int velocity) {`
</div>
<div class="line number356 index355 alt1">
` ``if (getChildCount() == 0) {`
</div>
<div class="line number357 index356 alt2">
` ``// Nothing to do.`
</div>
<div class="line number358 index357 alt1">
` ``setScrollingCacheEnabled(false);`
</div>
<div class="line number359 index358 alt2">
` ``return;`
</div>
<div class="line number360 index359 alt1">
` ``}`
</div>
<div class="line number361 index360 alt2">
` ``int sx = getScrollX();`
</div>
<div class="line number362 index361 alt1">
` ``int sy = getScrollY();`
</div>
<div class="line number363 index362 alt2">
` ``int dx = x - sx;`
</div>
<div class="line number364 index363 alt1">
` ``int dy = y - sy;`
</div>
<div class="line number365 index364 alt2">
` ``if (dx == 0 && dy == 0) {`
</div>
<div class="line number366 index365 alt1">
` ``completeScroll();`
</div>
<div class="line number367 index366 alt2">
` ``if (isMenuOpen()) {`
</div>
<div class="line number368 index367 alt1">
` ``if (mOpenedListener != null)`
</div>
<div class="line number369 index368 alt2">
` ``mOpenedListener.onOpened();`
</div>
<div class="line number370 index369 alt1">
` ``} else {`
</div>
<div class="line number371 index370 alt2">
` ``if (mClosedListener != null)`
</div>
<div class="line number372 index371 alt1">
` ``mClosedListener.onClosed();`
</div>
<div class="line number373 index372 alt2">
` ``}`
</div>
<div class="line number374 index373 alt1">
` ``return;`
</div>
<div class="line number375 index374 alt2">
` ``}`
</div>
<div class="line number376 index375 alt1">
</div>
<div class="line number377 index376 alt2">
` ``setScrollingCacheEnabled(true);`
</div>
<div class="line number378 index377 alt1">
` ``mScrolling = true;`
</div>
<div class="line number379 index378 alt2">
</div>
<div class="line number380 index379 alt1">
` ``final int width = getBehindWidth();`
</div>
<div class="line number381 index380 alt2">
` ``final int halfWidth = width / 2;`
</div>
<div class="line number382 index381 alt1">
` ``final float distanceRatio = Math.min(1f, 1.0f * Math.abs(dx) / width);`
</div>
<div class="line number383 index382 alt2">
` ``final float distance = halfWidth + halfWidth *`
</div>
<div class="line number384 index383 alt1">
` ``distanceInfluenceForSnapDuration(distanceRatio);`
</div>
<div class="line number385 index384 alt2">
</div>
<div class="line number386 index385 alt1">
` ``int duration = 0;`
</div>
<div class="line number387 index386 alt2">
` ``velocity = Math.abs(velocity);`
</div>
<div class="line number388 index387 alt1">
` ``if (velocity > 0) {`
</div>
<div class="line number389 index388 alt2">
` ``duration = 4 * Math.round(1000 * Math.abs(distance / velocity));`
</div>
<div class="line number390 index389 alt1">
` ``} else {`
</div>
<div class="line number391 index390 alt2">
` ``final float pageDelta = (float) Math.abs(dx) / width;`
</div>
<div class="line number392 index391 alt1">
` ``duration = (int) ((pageDelta + 1) * 100);`
</div>
<div class="line number393 index392 alt2">
` ``duration = MAX_SETTLE_DURATION;`
</div>
<div class="line number394 index393 alt1">
` ``}`
</div>
<div class="line number395 index394 alt2">
` ``duration = Math.min(duration, MAX_SETTLE_DURATION);`
</div>
<div class="line number396 index395 alt1">
</div>
<div class="line number397 index396 alt2">
` ``mScroller.startScroll(sx, sy, dx, dy, duration);`
</div>
<div class="line number398 index397 alt1">
` ``invalidate();`
</div>
<div class="line number399 index398 alt2">
` ``}`
</div>
<div class="line number400 index399 alt1">
</div>
<div class="line number401 index400 alt2">
` ``public void setContent(View v) {`
</div>
<div class="line number402 index401 alt1">
` ``if (mContent != null)`
</div>
<div class="line number403 index402 alt2">
` ``this.removeView(mContent);`
</div>
<div class="line number404 index403 alt1">
` ``mContent = v;`
</div>
<div class="line number405 index404 alt2">
` ``addView(mContent);`
</div>
<div class="line number406 index405 alt1">
` ``}`
</div>
<div class="line number407 index406 alt2">
</div>
<div class="line number408 index407 alt1">
` ``public View getContent() {`
</div>
<div class="line number409 index408 alt2">
` ``return mContent;`
</div>
<div class="line number410 index409 alt1">
` ``}`
</div>
<div class="line number411 index410 alt2">
</div>
<div class="line number412 index411 alt1">
` ``public void setCustomViewBehind(CustomViewBehind cvb) {`
</div>
<div class="line number413 index412 alt2">
` ``mViewBehind = cvb;`
</div>
<div class="line number414 index413 alt1">
` ``}`
</div>
<div class="line number415 index414 alt2">
</div>
<div class="line number416 index415 alt1">
` ``@Override`
</div>
<div class="line number417 index416 alt2">
` ``protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {`
</div>
<div class="line number418 index417 alt1">
</div>
<div class="line number419 index418 alt2">
` ``int width = getDefaultSize(0, widthMeasureSpec);`
</div>
<div class="line number420 index419 alt1">
` ``int height = getDefaultSize(0, heightMeasureSpec);`
</div>
<div class="line number421 index420 alt2">
` ``setMeasuredDimension(width, height);`
</div>
<div class="line number422 index421 alt1">
</div>
<div class="line number423 index422 alt2">
` ``final int contentWidth = getChildMeasureSpec(widthMeasureSpec, 0, width);`
</div>
<div class="line number424 index423 alt1">
` ``final int contentHeight = getChildMeasureSpec(heightMeasureSpec, 0, height);`
</div>
<div class="line number425 index424 alt2">
` ``mContent.measure(contentWidth, contentHeight);`
</div>
<div class="line number426 index425 alt1">
` ``}`
</div>
<div class="line number427 index426 alt2">
</div>
<div class="line number428 index427 alt1">
` ``@Override`
</div>
<div class="line number429 index428 alt2">
` ``protected void onSizeChanged(int w, int h, int oldw, int oldh) {`
</div>
<div class="line number430 index429 alt1">
` ``super.onSizeChanged(w, h, oldw, oldh);`
</div>
<div class="line number431 index430 alt2">
` ``// Make sure scroll position is set correctly.`
</div>
<div class="line number432 index431 alt1">
` ``if (w != oldw) {`
</div>
<div class="line number433 index432 alt2">
` ``// [ChrisJ] - This fixes the onConfiguration change for orientation issue..`
</div>
<div class="line number434 index433 alt1">
` ``// maybe worth having a look why the recomputeScroll pos is screwing`
</div>
<div class="line number435 index434 alt2">
` ``// up?`
</div>
<div class="line number436 index435 alt1">
` ``completeScroll();`
</div>
<div class="line number437 index436 alt2">
` ``scrollTo(getDestScrollX(mCurItem), getScrollY());`
</div>
<div class="line number438 index437 alt1">
` ``}`
</div>
<div class="line number439 index438 alt2">
` ``}`
</div>
<div class="line number440 index439 alt1">
</div>
<div class="line number441 index440 alt2">
` ``@Override`
</div>
<div class="line number442 index441 alt1">
` ``protected void onLayout(boolean changed, int l, int t, int r, int b) {`
</div>
<div class="line number443 index442 alt2">
` ``final int width = r - l;`
</div>
<div class="line number444 index443 alt1">
` ``final int height = b - t;`
</div>
<div class="line number445 index444 alt2">
` ``mContent.layout(0, 0, width, height);`
</div>
<div class="line number446 index445 alt1">
` ``}`
</div>
<div class="line number447 index446 alt2">
</div>
<div class="line number448 index447 alt1">
` ``public void setAboveOffset(int i) {`
</div>
<div class="line number449 index448 alt2">
` ``// RelativeLayout.LayoutParams params = ((RelativeLayout.LayoutParams)mContent.getLayoutParams());`
</div>
<div class="line number450 index449 alt1">
` ``// params.setMargins(i, params.topMargin, params.rightMargin, params.bottomMargin);`
</div>
<div class="line number451 index450 alt2">
` ``mContent.setPadding(i, mContent.getPaddingTop(),`
</div>
<div class="line number452 index451 alt1">
` ``mContent.getPaddingRight(), mContent.getPaddingBottom());`
</div>
<div class="line number453 index452 alt2">
` ``}`
</div>
<div class="line number454 index453 alt1">
</div>
<div class="line number455 index454 alt2">
` ``@Override`
</div>
<div class="line number456 index455 alt1">
` ``public void computeScroll() {`
</div>
<div class="line number457 index456 alt2">
` ``if (!mScroller.isFinished()) {`
</div>
<div class="line number458 index457 alt1">
` ``if (mScroller.computeScrollOffset()) {`
</div>
<div class="line number459 index458 alt2">
` ``int oldX = getScrollX();`
</div>
<div class="line number460 index459 alt1">
` ``int oldY = getScrollY();`
</div>
<div class="line number461 index460 alt2">
` ``int x = mScroller.getCurrX();`
</div>
<div class="line number462 index461 alt1">
` ``int y = mScroller.getCurrY();`
</div>
<div class="line number463 index462 alt2">
</div>
<div class="line number464 index463 alt1">
` ``if (oldX != x || oldY != y) {`
</div>
<div class="line number465 index464 alt2">
` ``scrollTo(x, y);`
</div>
<div class="line number466 index465 alt1">
` ``pageScrolled(x);`
</div>
<div class="line number467 index466 alt2">
` ``}`
</div>
<div class="line number468 index467 alt1">
</div>
<div class="line number469 index468 alt2">
` ``// Keep on drawing until the animation has finished.`
</div>
<div class="line number470 index469 alt1">
` ``invalidate();`
</div>
<div class="line number471 index470 alt2">
` ``return;`
</div>
<div class="line number472 index471 alt1">
` ``}`
</div>
<div class="line number473 index472 alt2">
` ``}`
</div>
<div class="line number474 index473 alt1">
</div>
<div class="line number475 index474 alt2">
` ``// Done with scroll, clean up state.`
</div>
<div class="line number476 index475 alt1">
` ``completeScroll();`
</div>
<div class="line number477 index476 alt2">
` ``}`
</div>
<div class="line number478 index477 alt1">
</div>
<div class="line number479 index478 alt2">
` ``private void pageScrolled(int xpos) {`
</div>
<div class="line number480 index479 alt1">
` ``final int widthWithMargin = getWidth();`
</div>
<div class="line number481 index480 alt2">
` ``final int position = xpos / widthWithMargin;`
</div>
<div class="line number482 index481 alt1">
` ``final int offsetPixels = xpos % widthWithMargin;`
</div>
<div class="line number483 index482 alt2">
` ``final float offset = (float) offsetPixels / widthWithMargin;`
</div>
<div class="line number484 index483 alt1">
</div>
<div class="line number485 index484 alt2">
` ``onPageScrolled(position, offset, offsetPixels);`
</div>
<div class="line number486 index485 alt1">
` ``}`
</div>
<div class="line number487 index486 alt2">
</div>
<div class="line number488 index487 alt1">
` ``/**`
</div>
<div class="line number489 index488 alt2">
` ``* This method will be invoked when the current page is scrolled, either as part`
</div>
<div class="line number490 index489 alt1">
` ``* of a programmatically initiated smooth scroll or a user initiated touch scroll.`
</div>
<div class="line number491 index490 alt2">
` ``* If you override this method you must call through to the superclass implementation`
</div>
<div class="line number492 index491 alt1">
` ``* (e.g. super.onPageScrolled(position, offset, offsetPixels)) before onPageScrolled`
</div>
<div class="line number493 index492 alt2">
` ``* returns.`
</div>
<div class="line number494 index493 alt1">
` ``*`
</div>
<div class="line number495 index494 alt2">
` ``* @param position Position index of the first page currently being displayed.`
</div>
<div class="line number496 index495 alt1">
` ``* Page position+1 will be visible if positionOffset is nonzero.`
</div>
<div class="line number497 index496 alt2">
` ``* @param offset Value from [0, 1) indicating the offset from the page at position.`
</div>
<div class="line number498 index497 alt1">
` ``* @param offsetPixels Value in pixels indicating the offset from position.`
</div>
<div class="line number499 index498 alt2">
` ``*/`
</div>
<div class="line number500 index499 alt1">
` ``protected void onPageScrolled(int position, float offset, int offsetPixels) {`
</div>
<div class="line number501 index500 alt2">
` ``if (mOnPageChangeListener != null) {`
</div>
<div class="line number502 index501 alt1">
` ``mOnPageChangeListener.onPageScrolled(position, offset, offsetPixels);`
</div>
<div class="line number503 index502 alt2">
` ``}`
</div>
<div class="line number504 index503 alt1">
` ``if (mInternalPageChangeListener != null) {`
</div>
<div class="line number505 index504 alt2">
` ``mInternalPageChangeListener.onPageScrolled(position, offset, offsetPixels);`
</div>
<div class="line number506 index505 alt1">
` ``}`
</div>
<div class="line number507 index506 alt2">
` ``}`
</div>
<div class="line number508 index507 alt1">
</div>
<div class="line number509 index508 alt2">
` ``private void completeScroll() {`
</div>
<div class="line number510 index509 alt1">
` ``boolean needPopulate = mScrolling;`
</div>
<div class="line number511 index510 alt2">
` ``if (needPopulate) {`
</div>
<div class="line number512 index511 alt1">
` ``// Done with scroll, no longer want to cache view drawing.`
</div>
<div class="line number513 index512 alt2">
` ``setScrollingCacheEnabled(false);`
</div>
<div class="line number514 index513 alt1">
` ``mScroller.abortAnimation();`
</div>
<div class="line number515 index514 alt2">
` ``int oldX = getScrollX();`
</div>
<div class="line number516 index515 alt1">
` ``int oldY = getScrollY();`
</div>
<div class="line number517 index516 alt2">
` ``int x = mScroller.getCurrX();`
</div>
<div class="line number518 index517 alt1">
` ``int y = mScroller.getCurrY();`
</div>
<div class="line number519 index518 alt2">
` ``if (oldX != x || oldY != y) {`
</div>
<div class="line number520 index519 alt1">
` ``scrollTo(x, y);`
</div>
<div class="line number521 index520 alt2">
` ``}`
</div>
<div class="line number522 index521 alt1">
` ``if (isMenuOpen()) {`
</div>
<div class="line number523 index522 alt2">
` ``if (mOpenedListener != null)`
</div>
<div class="line number524 index523 alt1">
` ``mOpenedListener.onOpened();`
</div>
<div class="line number525 index524 alt2">
` ``} else {`
</div>
<div class="line number526 index525 alt1">
` ``if (mClosedListener != null)`
</div>
<div class="line number527 index526 alt2">
` ``mClosedListener.onClosed();`
</div>
<div class="line number528 index527 alt1">
` ``}`
</div>
<div class="line number529 index528 alt2">
` ``}`
</div>
<div class="line number530 index529 alt1">
` ``mScrolling = false;`
</div>
<div class="line number531 index530 alt2">
` ``}`
</div>
<div class="line number532 index531 alt1">
</div>
<div class="line number533 index532 alt2">
` ``protected int mTouchMode = SlidingMenu.TOUCHMODE_MARGIN;`
</div>
<div class="line number534 index533 alt1">
</div>
<div class="line number535 index534 alt2">
` ``public void setTouchMode(int i) {`
</div>
<div class="line number536 index535 alt1">
` ``mTouchMode = i;`
</div>
<div class="line number537 index536 alt2">
` ``}`
</div>
<div class="line number538 index537 alt1">
</div>
<div class="line number539 index538 alt2">
` ``public int getTouchMode() {`
</div>
<div class="line number540 index539 alt1">
` ``return mTouchMode;`
</div>
<div class="line number541 index540 alt2">
` ``}`
</div>
<div class="line number542 index541 alt1">
</div>
<div class="line number543 index542 alt2">
` ``private boolean thisTouchAllowed(MotionEvent ev) {`
</div>
<div class="line number544 index543 alt1">
` ``int x = (int) (ev.getX() + mScrollX);`
</div>
<div class="line number545 index544 alt2">
` ``if (isMenuOpen()) {`
</div>
<div class="line number546 index545 alt1">
` ``return mViewBehind.menuOpenTouchAllowed(mContent, mCurItem, x);`
</div>
<div class="line number547 index546 alt2">
` ``} else {`
</div>
<div class="line number548 index547 alt1">
` ``switch (mTouchMode) {`
</div>
<div class="line number549 index548 alt2">
` ``case SlidingMenu.TOUCHMODE_FULLSCREEN:`
</div>
<div class="line number550 index549 alt1">
` ``return !isInIgnoredView(ev);`
</div>
<div class="line number551 index550 alt2">
` ``case SlidingMenu.TOUCHMODE_NONE:`
</div>
<div class="line number552 index551 alt1">
` ``return false;`
</div>
<div class="line number553 index552 alt2">
` ``case SlidingMenu.TOUCHMODE_MARGIN:`
</div>
<div class="line number554 index553 alt1">
` ``return mViewBehind.marginTouchAllowed(mContent, x);`
</div>
<div class="line number555 index554 alt2">
` ``}`
</div>
<div class="line number556 index555 alt1">
` ``}`
</div>
<div class="line number557 index556 alt2">
` ``return false;`
</div>
<div class="line number558 index557 alt1">
` ``}`
</div>
<div class="line number559 index558 alt2">
</div>
<div class="line number560 index559 alt1">
` ``private boolean thisSlideAllowed(float dx) {`
</div>
<div class="line number561 index560 alt2">
` ``boolean allowed = false;`
</div>
<div class="line number562 index561 alt1">
` ``if (isMenuOpen()) {`
</div>
<div class="line number563 index562 alt2">
` ``allowed = mViewBehind.menuOpenSlideAllowed(dx);`
</div>
<div class="line number564 index563 alt1">
` ``} else {`
</div>
<div class="line number565 index564 alt2">
` ``allowed = mViewBehind.menuClosedSlideAllowed(dx);`
</div>
<div class="line number566 index565 alt1">
` ``}`
</div>
<div class="line number567 index566 alt2">
` ``if (DEBUG)`
</div>
<div class="line number568 index567 alt1">
` ``Log.v(TAG, "this slide allowed " + allowed + " dx: " + dx);`
</div>
<div class="line number569 index568 alt2">
` ``return allowed;`
</div>
<div class="line number570 index569 alt1">
` ``}`
</div>
<div class="line number571 index570 alt2">
</div>
<div class="line number572 index571 alt1">
` ``private int getPointerIndex(MotionEvent ev, int id) {`
</div>
<div class="line number573 index572 alt2">
` ``int activePointerIndex = MotionEventCompat.findPointerIndex(ev, id);`
</div>
<div class="line number574 index573 alt1">
` ``if (activePointerIndex == -1)`
</div>
<div class="line number575 index574 alt2">
` ``mActivePointerId = INVALID_POINTER;`
</div>
<div class="line number576 index575 alt1">
` ``return activePointerIndex;`
</div>
<div class="line number577 index576 alt2">
` ``}`
</div>
<div class="line number578 index577 alt1">
</div>
<div class="line number579 index578 alt2">
` ``private boolean mQuickReturn = false;`
</div>
<div class="line number580 index579 alt1">
</div>
<div class="line number581 index580 alt2">
` ``@Override`
</div>
<div class="line number582 index581 alt1">
` ``public boolean onInterceptTouchEvent(MotionEvent ev) {`
</div>
<div class="line number583 index582 alt2">
</div>
<div class="line number584 index583 alt1">
` ``if (!mEnabled)`
</div>
<div class="line number585 index584 alt2">
` ``return false;`
</div>
<div class="line number586 index585 alt1">
</div>
<div class="line number587 index586 alt2">
` ``final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;`
</div>
<div class="line number588 index587 alt1">
</div>
<div class="line number589 index588 alt2">
` ``if (DEBUG)`
</div>
<div class="line number590 index589 alt1">
` ``if (action == MotionEvent.ACTION_DOWN)`
</div>
<div class="line number591 index590 alt2">
` ``Log.v(TAG, "Received ACTION_DOWN");`
</div>
<div class="line number592 index591 alt1">
</div>
<div class="line number593 index592 alt2">
` ``if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP`
</div>
<div class="line number594 index593 alt1">
` ``|| (action != MotionEvent.ACTION_DOWN && mIsUnableToDrag)) {`
</div>
<div class="line number595 index594 alt2">
` ``endDrag();`
</div>
<div class="line number596 index595 alt1">
` ``return false;`
</div>
<div class="line number597 index596 alt2">
` ``}`
</div>
<div class="line number598 index597 alt1">
</div>
<div class="line number599 index598 alt2">
` ``switch (action) {`
</div>
<div class="line number600 index599 alt1">
` ``case MotionEvent.ACTION_MOVE:`
</div>
<div class="line number601 index600 alt2">
` ``determineDrag(ev);`
</div>
<div class="line number602 index601 alt1">
` ``break;`
</div>
<div class="line number603 index602 alt2">
` ``case MotionEvent.ACTION_DOWN:`
</div>
<div class="line number604 index603 alt1">
` ``int index = MotionEventCompat.getActionIndex(ev);`
</div>
<div class="line number605 index604 alt2">
` ``mActivePointerId = MotionEventCompat.getPointerId(ev, index);`
</div>
<div class="line number606 index605 alt1">
` ``if (mActivePointerId == INVALID_POINTER)`
</div>
<div class="line number607 index606 alt2">
` ``break;`
</div>
<div class="line number608 index607 alt1">
` ``mLastMotionX = mInitialMotionX = MotionEventCompat.getX(ev, index);`
</div>
<div class="line number609 index608 alt2">
` ``mLastMotionY = MotionEventCompat.getY(ev, index);`
</div>
<div class="line number610 index609 alt1">
` ``if (thisTouchAllowed(ev)) {`
</div>
<div class="line number611 index610 alt2">
` ``mIsBeingDragged = false;`
</div>
<div class="line number612 index611 alt1">
` ``mIsUnableToDrag = false;`
</div>
<div class="line number613 index612 alt2">
` ``if (isMenuOpen() && mViewBehind.menuTouchInQuickReturn(mContent, mCurItem, ev.getX() + mScrollX)) {`
</div>
<div class="line number614 index613 alt1">
` ``mQuickReturn = true;`
</div>
<div class="line number615 index614 alt2">
` ``}`
</div>
<div class="line number616 index615 alt1">
` ``} else {`
</div>
<div class="line number617 index616 alt2">
` ``mIsUnableToDrag = true;`
</div>
<div class="line number618 index617 alt1">
` ``}`
</div>
<div class="line number619 index618 alt2">
` ``break;`
</div>
<div class="line number620 index619 alt1">
` ``case MotionEventCompat.ACTION_POINTER_UP:`
</div>
<div class="line number621 index620 alt2">
` ``onSecondaryPointerUp(ev);`
</div>
<div class="line number622 index621 alt1">
` ``break;`
</div>
<div class="line number623 index622 alt2">
` ``}`
</div>
<div class="line number624 index623 alt1">
</div>
<div class="line number625 index624 alt2">
` ``if (!mIsBeingDragged) {`
</div>
<div class="line number626 index625 alt1">
` ``if (mVelocityTracker == null) {`
</div>
<div class="line number627 index626 alt2">
` ``mVelocityTracker = VelocityTracker.obtain();`
</div>
<div class="line number628 index627 alt1">
` ``}`
</div>
<div class="line number629 index628 alt2">
` ``mVelocityTracker.addMovement(ev);`
</div>
<div class="line number630 index629 alt1">
` ``}`
</div>
<div class="line number631 index630 alt2">
` ``return mIsBeingDragged || mQuickReturn;`
</div>
<div class="line number632 index631 alt1">
` ``}`
</div>
<div class="line number633 index632 alt2">
</div>
<div class="line number634 index633 alt1">
` ``@Override`
</div>
<div class="line number635 index634 alt2">
` ``public boolean onTouchEvent(MotionEvent ev) {`
</div>
<div class="line number636 index635 alt1">
</div>
<div class="line number637 index636 alt2">
` ``if (!mEnabled)`
</div>
<div class="line number638 index637 alt1">
` ``return false;`
</div>
<div class="line number639 index638 alt2">
</div>
<div class="line number640 index639 alt1">
` ``if (!mIsBeingDragged && !thisTouchAllowed(ev))`
</div>
<div class="line number641 index640 alt2">
` ``return false;`
</div>
<div class="line number642 index641 alt1">
</div>
<div class="line number643 index642 alt2">
` ``// if (!mIsBeingDragged && !mQuickReturn)`
</div>
<div class="line number644 index643 alt1">
` ``// return false;`
</div>
<div class="line number645 index644 alt2">
</div>
<div class="line number646 index645 alt1">
` ``final int action = ev.getAction();`
</div>
<div class="line number647 index646 alt2">
</div>
<div class="line number648 index647 alt1">
` ``if (mVelocityTracker == null) {`
</div>
<div class="line number649 index648 alt2">
` ``mVelocityTracker = VelocityTracker.obtain();`
</div>
<div class="line number650 index649 alt1">
` ``}`
</div>
<div class="line number651 index650 alt2">
` ``mVelocityTracker.addMovement(ev);`
</div>
<div class="line number652 index651 alt1">
</div>
<div class="line number653 index652 alt2">
` ``switch (action & MotionEventCompat.ACTION_MASK) {`
</div>
<div class="line number654 index653 alt1">
` ``case MotionEvent.ACTION_DOWN:`
</div>
<div class="line number655 index654 alt2">
` ``/*`
</div>
<div class="line number656 index655 alt1">
` ``* If being flinged and user touches, stop the fling. isFinished`
</div>
<div class="line number657 index656 alt2">
` ``* will be false if being flinged.`
</div>
<div class="line number658 index657 alt1">
` ``*/`
</div>
<div class="line number659 index658 alt2">
` ``completeScroll();`
</div>
<div class="line number660 index659 alt1">
</div>
<div class="line number661 index660 alt2">
` ``// Remember where the motion event started`
</div>
<div class="line number662 index661 alt1">
` ``int index = MotionEventCompat.getActionIndex(ev);`
</div>
<div class="line number663 index662 alt2">
` ``mActivePointerId = MotionEventCompat.getPointerId(ev, index);`
</div>
<div class="line number664 index663 alt1">
` ``mLastMotionX = mInitialMotionX = ev.getX();`
</div>
<div class="line number665 index664 alt2">
` ``break;`
</div>
<div class="line number666 index665 alt1">
` ``case MotionEvent.ACTION_MOVE:`
</div>
<div class="line number667 index666 alt2">
` ``if (!mIsBeingDragged) {`
</div>
<div class="line number668 index667 alt1">
` ``determineDrag(ev);`
</div>
<div class="line number669 index668 alt2">
` ``if (mIsUnableToDrag)`
</div>
<div class="line number670 index669 alt1">
` ``return false;`
</div>
<div class="line number671 index670 alt2">
` ``}`
</div>
<div class="line number672 index671 alt1">
` ``if (mIsBeingDragged) {`
</div>
<div class="line number673 index672 alt2">
` ``// Scroll to follow the motion event`
</div>
<div class="line number674 index673 alt1">
` ``final int activePointerIndex = getPointerIndex(ev, mActivePointerId);`
</div>
<div class="line number675 index674 alt2">
` ``if (mActivePointerId == INVALID_POINTER)`
</div>
<div class="line number676 index675 alt1">
` ``break;`
</div>
<div class="line number677 index676 alt2">
` ``final float x = MotionEventCompat.getX(ev, activePointerIndex);`
</div>
<div class="line number678 index677 alt1">
` ``final float deltaX = mLastMotionX - x;`
</div>
<div class="line number679 index678 alt2">
` ``mLastMotionX = x;`
</div>
<div class="line number680 index679 alt1">
` ``float oldScrollX = getScrollX();`
</div>
<div class="line number681 index680 alt2">
` ``float scrollX = oldScrollX + deltaX;`
</div>
<div class="line number682 index681 alt1">
` ``final float leftBound = getLeftBound();`
</div>
<div class="line number683 index682 alt2">
` ``final float rightBound = getRightBound();`
</div>
<div class="line number684 index683 alt1">
` ``if (scrollX < leftBound) {`
</div>
<div class="line number685 index684 alt2">
` ``scrollX = leftBound;`
</div>
<div class="line number686 index685 alt1">
` ``} else if (scrollX > rightBound) {`
</div>
<div class="line number687 index686 alt2">
` ``scrollX = rightBound;`
</div>
<div class="line number688 index687 alt1">
` ``}`
</div>
<div class="line number689 index688 alt2">
` ``// Don't lose the rounded component`
</div>
<div class="line number690 index689 alt1">
` ``mLastMotionX += scrollX - (int) scrollX;`
</div>
<div class="line number691 index690 alt2">
` ``scrollTo((int) scrollX, getScrollY());`
</div>
<div class="line number692 index691 alt1">
` ``pageScrolled((int) scrollX);`
</div>
<div class="line number693 index692 alt2">
` ``}`
</div>
<div class="line number694 index693 alt1">
` ``break;`
</div>
<div class="line number695 index694 alt2">
` ``case MotionEvent.ACTION_UP:`
</div>
<div class="line number696 index695 alt1">
` ``if (mIsBeingDragged) {`
</div>
<div class="line number697 index696 alt2">
` ``final VelocityTracker velocityTracker = mVelocityTracker;`
</div>
<div class="line number698 index697 alt1">
` ``velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);`
</div>
<div class="line number699 index698 alt2">
` ``int initialVelocity = (int) VelocityTrackerCompat.getXVelocity(`
</div>
<div class="line number700 index699 alt1">
` ``velocityTracker, mActivePointerId);`
</div>
<div class="line number701 index700 alt2">
` ``final int scrollX = getScrollX();`
</div>
<div class="line number702 index701 alt1">
` ``final float pageOffset = (float) (scrollX - getDestScrollX(mCurItem)) / getBehindWidth();`
</div>
<div class="line number703 index702 alt2">
` ``final int activePointerIndex = getPointerIndex(ev, mActivePointerId);`
</div>
<div class="line number704 index703 alt1">
` ``if (mActivePointerId != INVALID_POINTER) {`
</div>
<div class="line number705 index704 alt2">
` ``final float x = MotionEventCompat.getX(ev, activePointerIndex);`
</div>
<div class="line number706 index705 alt1">
` ``final int totalDelta = (int) (x - mInitialMotionX);`
</div>
<div class="line number707 index706 alt2">
` ``int nextPage = determineTargetPage(pageOffset, initialVelocity, totalDelta);`
</div>
<div class="line number708 index707 alt1">
` ``setCurrentItemInternal(nextPage, true, true, initialVelocity);`
</div>
<div class="line number709 index708 alt2">
` ``} else { `
</div>
<div class="line number710 index709 alt1">
` ``setCurrentItemInternal(mCurItem, true, true, initialVelocity);`
</div>
<div class="line number711 index710 alt2">
` ``}`
</div>
<div class="line number712 index711 alt1">
` ``mActivePointerId = INVALID_POINTER;`
</div>
<div class="line number713 index712 alt2">
` ``endDrag();`
</div>
<div class="line number714 index713 alt1">
` ``} else if (mQuickReturn && mViewBehind.menuTouchInQuickReturn(mContent, mCurItem, ev.getX() + mScrollX)) {`
</div>
<div class="line number715 index714 alt2">
` ``// close the menu`
</div>
<div class="line number716 index715 alt1">
` ``setCurrentItem(1);`
</div>
<div class="line number717 index716 alt2">
` ``endDrag();`
</div>
<div class="line number718 index717 alt1">
` ``}`
</div>
<div class="line number719 index718 alt2">
` ``break;`
</div>
<div class="line number720 index719 alt1">
` ``case MotionEvent.ACTION_CANCEL:`
</div>
<div class="line number721 index720 alt2">
` ``if (mIsBeingDragged) {`
</div>
<div class="line number722 index721 alt1">
` ``setCurrentItemInternal(mCurItem, true, true);`
</div>
<div class="line number723 index722 alt2">
` ``mActivePointerId = INVALID_POINTER;`
</div>
<div class="line number724 index723 alt1">
` ``endDrag();`
</div>
<div class="line number725 index724 alt2">
` ``}`
</div>
<div class="line number726 index725 alt1">
` ``break;`
</div>
<div class="line number727 index726 alt2">
` ``case MotionEventCompat.ACTION_POINTER_DOWN: {`
</div>
<div class="line number728 index727 alt1">
` ``final int indexx = MotionEventCompat.getActionIndex(ev);`
</div>
<div class="line number729 index728 alt2">
` ``mLastMotionX = MotionEventCompat.getX(ev, indexx);`
</div>
<div class="line number730 index729 alt1">
` ``mActivePointerId = MotionEventCompat.getPointerId(ev, indexx);`
</div>
<div class="line number731 index730 alt2">
` ``break;`
</div>
<div class="line number732 index731 alt1">
` ``}`
</div>
<div class="line number733 index732 alt2">
` ``case MotionEventCompat.ACTION_POINTER_UP:`
</div>
<div class="line number734 index733 alt1">
` ``onSecondaryPointerUp(ev);`
</div>
<div class="line number735 index734 alt2">
` ``int pointerIndex = getPointerIndex(ev, mActivePointerId);`
</div>
<div class="line number736 index735 alt1">
` ``if (mActivePointerId == INVALID_POINTER)`
</div>
<div class="line number737 index736 alt2">
` ``break;`
</div>
<div class="line number738 index737 alt1">
` ``mLastMotionX = MotionEventCompat.getX(ev, pointerIndex);`
</div>
<div class="line number739 index738 alt2">
` ``break;`
</div>
<div class="line number740 index739 alt1">
` ``}`
</div>
<div class="line number741 index740 alt2">
` ``return true;`
</div>
<div class="line number742 index741 alt1">
` ``}`
</div>
<div class="line number743 index742 alt2">
</div>
<div class="line number744 index743 alt1">
` ``private void determineDrag(MotionEvent ev) {`
</div>
<div class="line number745 index744 alt2">
` ``final int activePointerId = mActivePointerId;`
</div>
<div class="line number746 index745 alt1">
` ``final int pointerIndex = getPointerIndex(ev, activePointerId);`
</div>
<div class="line number747 index746 alt2">
` ``if (activePointerId == INVALID_POINTER || pointerIndex == INVALID_POINTER)`
</div>
<div class="line number748 index747 alt1">
` ``return;`
</div>
<div class="line number749 index748 alt2">
` ``final float x = MotionEventCompat.getX(ev, pointerIndex);`
</div>
<div class="line number750 index749 alt1">
` ``final float dx = x - mLastMotionX;`
</div>
<div class="line number751 index750 alt2">
` ``final float xDiff = Math.abs(dx);`
</div>
<div class="line number752 index751 alt1">
` ``final float y = MotionEventCompat.getY(ev, pointerIndex);`
</div>
<div class="line number753 index752 alt2">
` ``final float dy = y - mLastMotionY;`
</div>
<div class="line number754 index753 alt1">
` ``final float yDiff = Math.abs(dy);`
</div>
<div class="line number755 index754 alt2">
` ``if (xDiff > (isMenuOpen()?mTouchSlop/2:mTouchSlop) && xDiff > yDiff && thisSlideAllowed(dx)) { `
</div>
<div class="line number756 index755 alt1">
` ``startDrag();`
</div>
<div class="line number757 index756 alt2">
` ``mLastMotionX = x;`
</div>
<div class="line number758 index757 alt1">
` ``mLastMotionY = y;`
</div>
<div class="line number759 index758 alt2">
` ``setScrollingCacheEnabled(true);`
</div>
<div class="line number760 index759 alt1">
` ``// TODO add back in touch slop check`
</div>
<div class="line number761 index760 alt2">
` ``} else if (xDiff > mTouchSlop) {`
</div>
<div class="line number762 index761 alt1">
` ``mIsUnableToDrag = true;`
</div>
<div class="line number763 index762 alt2">
` ``}`
</div>
<div class="line number764 index763 alt1">
` ``}`
</div>
<div class="line number765 index764 alt2">
</div>
<div class="line number766 index765 alt1">
` ``@Override`
</div>
<div class="line number767 index766 alt2">
` ``public void scrollTo(int x, int y) {`
</div>
<div class="line number768 index767 alt1">
` ``super.scrollTo(x, y);`
</div>
<div class="line number769 index768 alt2">
` ``mScrollX = x;`
</div>
<div class="line number770 index769 alt1">
` ``mViewBehind.scrollBehindTo(mContent, x, y);`
</div>
<div class="line number771 index770 alt2">
` ``((SlidingMenu)getParent()).manageLayers(getPercentOpen());`
</div>
<div class="line number772 index771 alt1">
</div>
<div class="line number773 index772 alt2">
` ``if (mTransformer != null) {`
</div>
<div class="line number774 index773 alt1">
` ``invalidate();`
</div>
<div class="line number775 index774 alt2">
` ``}`
</div>
<div class="line number776 index775 alt1">
` ``}`
</div>
<div class="line number777 index776 alt2">
</div>
<div class="line number778 index777 alt1">
` ``private int determineTargetPage(float pageOffset, int velocity, int deltaX) {`
</div>
<div class="line number779 index778 alt2">
` ``int targetPage = mCurItem;`
</div>
<div class="line number780 index779 alt1">
` ``if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {`
</div>
<div class="line number781 index780 alt2">
` ``if (velocity > 0 && deltaX > 0) {`
</div>
<div class="line number782 index781 alt1">
` ``targetPage -= 1;`
</div>
<div class="line number783 index782 alt2">
` ``} else if (velocity < 0 && deltaX < 0){`
</div>
<div class="line number784 index783 alt1">
` ``targetPage += 1;`
</div>
<div class="line number785 index784 alt2">
` ``}`
</div>
<div class="line number786 index785 alt1">
` ``} else {`
</div>
<div class="line number787 index786 alt2">
` ``targetPage = (int) Math.round(mCurItem + pageOffset);`
</div>
<div class="line number788 index787 alt1">
` ``}`
</div>
<div class="line number789 index788 alt2">
` ``return targetPage;`
</div>
<div class="line number790 index789 alt1">
` ``}`
</div>
<div class="line number791 index790 alt2">
</div>
<div class="line number792 index791 alt1">
` ``protected float getPercentOpen() {`
</div>
<div class="line number793 index792 alt2">
` ``return Math.abs(mScrollX-mContent.getLeft()) / getBehindWidth();`
</div>
<div class="line number794 index793 alt1">
` ``}`
</div>
<div class="line number795 index794 alt2">
</div>
<div class="line number796 index795 alt1">
` ``@Override`
</div>
<div class="line number797 index796 alt2">
` ``protected void dispatchDraw(Canvas canvas) {`
</div>
<div class="line number798 index797 alt1">
` ``// 这句要注释掉,否则会出现2个右侧的视图,一个有转场动画,一个没有转场动画`
</div>
<div class="line number799 index798 alt2">
` ``// super.dispatchDraw(canvas);`
</div>
<div class="line number800 index799 alt1">
` ``// Draw the margin drawable if needed.`
</div>
<div class="line number801 index800 alt2">
` ``mViewBehind.drawShadow(mContent, canvas);`
</div>
<div class="line number802 index801 alt1">
` ``mViewBehind.drawFade(mContent, canvas, getPercentOpen());`
</div>
<div class="line number803 index802 alt2">
` ``mViewBehind.drawSelector(mContent, canvas, getPercentOpen());`
</div>
<div class="line number804 index803 alt1">
` ``// 设置右侧视图的转场效果,主要是修改Canvas。`
</div>
<div class="line number805 index804 alt2">
` ``if (mTransformer != null) {`
</div>
<div class="line number806 index805 alt1">
` ``canvas.save();`
</div>
<div class="line number807 index806 alt2">
` ``mTransformer.transformCanvas(canvas, getPercentOpen());`
</div>
<div class="line number808 index807 alt1">
` ``super.dispatchDraw(canvas);`
</div>
<div class="line number809 index808 alt2">
` ``canvas.restore();`
</div>
<div class="line number810 index809 alt1">
` ``} else {`
</div>
<div class="line number811 index810 alt2">
` ``super.dispatchDraw(canvas);`
</div>
<div class="line number812 index811 alt1">
` ``}`
</div>
<div class="line number813 index812 alt2">
` ``}`
</div>
<div class="line number814 index813 alt1">
</div>
<div class="line number815 index814 alt2">
` ``// variables for drawing`
</div>
<div class="line number816 index815 alt1">
` ``private float mScrollX = 0.0f;`
</div>
<div class="line number817 index816 alt2">
</div>
<div class="line number818 index817 alt1">
` ``private void onSecondaryPointerUp(MotionEvent ev) {`
</div>
<div class="line number819 index818 alt2">
` ``if (DEBUG) Log.v(TAG, "onSecondaryPointerUp called");`
</div>
<div class="line number820 index819 alt1">
` ``final int pointerIndex = MotionEventCompat.getActionIndex(ev);`
</div>
<div class="line number821 index820 alt2">
` ``final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);`
</div>
<div class="line number822 index821 alt1">
` ``if (pointerId == mActivePointerId) {`
</div>
<div class="line number823 index822 alt2">
` ``// This was our active pointer going up. Choose a new`
</div>
<div class="line number824 index823 alt1">
` ``// active pointer and adjust accordingly.`
</div>
<div class="line number825 index824 alt2">
` ``final int newPointerIndex = pointerIndex == 0 ? 1 : 0;`
</div>
<div class="line number826 index825 alt1">
` ``mLastMotionX = MotionEventCompat.getX(ev, newPointerIndex);`
</div>
<div class="line number827 index826 alt2">
` ``mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);`
</div>
<div class="line number828 index827 alt1">
` ``if (mVelocityTracker != null) {`
</div>
<div class="line number829 index828 alt2">
` ``mVelocityTracker.clear();`
</div>
<div class="line number830 index829 alt1">
` ``}`
</div>
<div class="line number831 index830 alt2">
` ``}`
</div>
<div class="line number832 index831 alt1">
` ``}`
</div>
<div class="line number833 index832 alt2">
</div>
<div class="line number834 index833 alt1">
` ``private void startDrag() {`
</div>
<div class="line number835 index834 alt2">
` ``mIsBeingDragged = true;`
</div>
<div class="line number836 index835 alt1">
` ``mQuickReturn = false;`
</div>
<div class="line number837 index836 alt2">
` ``}`
</div>
<div class="line number838 index837 alt1">
</div>
<div class="line number839 index838 alt2">
` ``private void endDrag() {`
</div>
<div class="line number840 index839 alt1">
` ``mQuickReturn = false;`
</div>
<div class="line number841 index840 alt2">
` ``mIsBeingDragged = false;`
</div>
<div class="line number842 index841 alt1">
` ``mIsUnableToDrag = false;`
</div>
<div class="line number843 index842 alt2">
` ``mActivePointerId = INVALID_POINTER;`
</div>
<div class="line number844 index843 alt1">
</div>
<div class="line number845 index844 alt2">
` ``if (mVelocityTracker != null) {`
</div>
<div class="line number846 index845 alt1">
` ``mVelocityTracker.recycle();`
</div>
<div class="line number847 index846 alt2">
` ``mVelocityTracker = null;`
</div>
<div class="line number848 index847 alt1">
` ``}`
</div>
<div class="line number849 index848 alt2">
` ``}`
</div>
<div class="line number850 index849 alt1">
</div>
<div class="line number851 index850 alt2">
` ``private void setScrollingCacheEnabled(boolean enabled) {`
</div>
<div class="line number852 index851 alt1">
` ``if (mScrollingCacheEnabled != enabled) {`
</div>
<div class="line number853 index852 alt2">
` ``mScrollingCacheEnabled = enabled;`
</div>
<div class="line number854 index853 alt1">
` ``if (USE_CACHE) {`
</div>
<div class="line number855 index854 alt2">
` ``final int size = getChildCount();`
</div>
<div class="line number856 index855 alt1">
` ``for (int i = 0; i < size; ++i) {`
</div>
<div class="line number857 index856 alt2">
` ``final View child = getChildAt(i);`
</div>
<div class="line number858 index857 alt1">
` ``if (child.getVisibility() != GONE) {`
</div>
<div class="line number859 index858 alt2">
` ``child.setDrawingCacheEnabled(enabled);`
</div>
<div class="line number860 index859 alt1">
` ``}`
</div>
<div class="line number861 index860 alt2">
` ``}`
</div>
<div class="line number862 index861 alt1">
` ``}`
</div>
<div class="line number863 index862 alt2">
` ``}`
</div>
<div class="line number864 index863 alt1">
` ``}`
</div>
<div class="line number865 index864 alt2">
</div>
<div class="line number866 index865 alt1">
` ``/**`
</div>
<div class="line number867 index866 alt2">
` ``* Tests scrollability within child views of v given a delta of dx.`
</div>
<div class="line number868 index867 alt1">
` ``*`
</div>
<div class="line number869 index868 alt2">
` ``* @param v View to test for horizontal scrollability`
</div>
<div class="line number870 index869 alt1">
` ``* @param checkV Whether the view v passed should itself be checked for scrollability (true),`
</div>
<div class="line number871 index870 alt2">
` ``* or just its children (false).`
</div>
<div class="line number872 index871 alt1">
` ``* @param dx Delta scrolled in pixels`
</div>
<div class="line number873 index872 alt2">
` ``* @param x X coordinate of the active touch point`
</div>
<div class="line number874 index873 alt1">
` ``* @param y Y coordinate of the active touch point`
</div>
<div class="line number875 index874 alt2">
` ``* @return true if child views of v can be scrolled by delta of dx.`
</div>
<div class="line number876 index875 alt1">
` ``*/`
</div>
<div class="line number877 index876 alt2">
` ``protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {`
</div>
<div class="line number878 index877 alt1">
` ``if (v instanceof ViewGroup) {`
</div>
<div class="line number879 index878 alt2">
` ``final ViewGroup group = (ViewGroup) v;`
</div>
<div class="line number880 index879 alt1">
` ``final int scrollX = v.getScrollX();`
</div>
<div class="line number881 index880 alt2">
` ``final int scrollY = v.getScrollY();`
</div>
<div class="line number882 index881 alt1">
` ``final int count = group.getChildCount();`
</div>
<div class="line number883 index882 alt2">
` ``// Count backwards - let topmost views consume scroll distance first.`
</div>
<div class="line number884 index883 alt1">
` ``for (int i = count - 1; i >= 0; i--) {`
</div>
<div class="line number885 index884 alt2">
` ``final View child = group.getChildAt(i);`
</div>
<div class="line number886 index885 alt1">
` ``if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&`
</div>
<div class="line number887 index886 alt2">
` ``y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&`
</div>
<div class="line number888 index887 alt1">
` ``canScroll(child, true, dx, x + scrollX - child.getLeft(),`
</div>
<div class="line number889 index888 alt2">
` ``y + scrollY - child.getTop())) {`
</div>
<div class="line number890 index889 alt1">
` ``return true;`
</div>
<div class="line number891 index890 alt2">
` ``}`
</div>
<div class="line number892 index891 alt1">
` ``}`
</div>
<div class="line number893 index892 alt2">
` ``}`
</div>
<div class="line number894 index893 alt1">
</div>
<div class="line number895 index894 alt2">
` ``return checkV && ViewCompat.canScrollHorizontally(v, -dx);`
</div>
<div class="line number896 index895 alt1">
` ``}`
</div>
<div class="line number897 index896 alt2">
</div>
<div class="line number898 index897 alt1">
` ``@Override`
</div>
<div class="line number899 index898 alt2">
` ``public boolean dispatchKeyEvent(KeyEvent event) {`
</div>
<div class="line number900 index899 alt1">
` ``// Let the focused view and/or our descendants get the key first`
</div>
<div class="line number901 index900 alt2">
` ``return super.dispatchKeyEvent(event) || executeKeyEvent(event);`
</div>
<div class="line number902 index901 alt1">
` ``}`
</div>
<div class="line number903 index902 alt2">
</div>
<div class="line number904 index903 alt1">
` ``/**`
</div>
<div class="line number905 index904 alt2">
` ``* You can call this function yourself to have the scroll view perform`
</div>
<div class="line number906 index905 alt1">
` ``* scrolling from a key event, just as if the event had been dispatched to`
</div>
<div class="line number907 index906 alt2">
` ``* it by the view hierarchy.`
</div>
<div class="line number908 index907 alt1">
` ``*`
</div>
<div class="line number909 index908 alt2">
` ``* @param event The key event to execute.`
</div>
<div class="line number910 index909 alt1">
` ``* @return Return true if the event was handled, else false.`
</div>
<div class="line number911 index910 alt2">
` ``*/`
</div>
<div class="line number912 index911 alt1">
` ``public` `boolean` `executeKeyEvent(KeyEvent event) {`
</div>
<div class="line number913 index912 alt2">
` ``boolean` `handled = ``false``;`
</div>
<div class="line number914 index913 alt1">
` ``if` `(event.getAction() == KeyEvent.ACTION_DOWN) {`
</div>
<div class="line number915 index914 alt2">
` ``switch` `(event.getKeyCode()) {`
</div>
<div class="line number916 index915 alt1">
` ``case` `KeyEvent.KEYCODE_DPAD_LEFT:`
</div>
<div class="line number917 index916 alt2">
` ``handled = arrowScroll(FOCUS_LEFT);`
</div>
<div class="line number918 index917 alt1">
` ``break``;`
</div>
<div class="line number919 index918 alt2">
` ``case` `KeyEvent.KEYCODE_DPAD_RIGHT:`
</div>
<div class="line number920 index919 alt1">
` ``handled = arrowScroll(FOCUS_RIGHT);`
</div>
<div class="line number921 index920 alt2">
` ``break``;`
</div>
<div class="line number922 index921 alt1">
` ``case` `KeyEvent.KEYCODE_TAB:`
</div>
<div class="line number923 index922 alt2">
` ``if` `(Build.VERSION.SDK_INT >= ``11``) {`
</div>
<div class="line number924 index923 alt1">
` ``// The focus finder had a bug handling FOCUS_FORWARD and FOCUS_BACKWARD`
</div>
<div class="line number925 index924 alt2">
` ``// before Android 3.0. Ignore the tab key on those devices.`
</div>
<div class="line number926 index925 alt1">
` ``if` `(KeyEventCompat.hasNoModifiers(event)) {`
</div>
<div class="line number927 index926 alt2">
` ``handled = arrowScroll(FOCUS_FORWARD);`
</div>
<div class="line number928 index927 alt1">
` ``} ``else` `if` `(KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {`
</div>
<div class="line number929 index928 alt2">
` ``handled = arrowScroll(FOCUS_BACKWARD);`
</div>
<div class="line number930 index929 alt1">
` ``}`
</div>
<div class="line number931 index930 alt2">
` ``}`
</div>
<div class="line number932 index931 alt1">
` ``break``;`
</div>
<div class="line number933 index932 alt2">
` ``}`
</div>
<div class="line number934 index933 alt1">
` ``}`
</div>
<div class="line number935 index934 alt2">
` ``return` `handled;`
</div>
<div class="line number936 index935 alt1">
` ``}`
</div>
<div class="line number937 index936 alt2">
</div>
<div class="line number938 index937 alt1">
` ``public` `boolean` `arrowScroll(``int` `direction) {`
</div>
<div class="line number939 index938 alt2">
` ``View currentFocused = findFocus();`
</div>
<div class="line number940 index939 alt1">
` ``if` `(currentFocused == ``this``) currentFocused = ``null``;`
</div>
<div class="line number941 index940 alt2">
</div>
<div class="line number942 index941 alt1">
` ``boolean` `handled = ``false``;`
</div>
<div class="line number943 index942 alt2">
</div>
<div class="line number944 index943 alt1">
` ``View nextFocused = FocusFinder.getInstance().findNextFocus(``this``, currentFocused,`
</div>
<div class="line number945 index944 alt2">
` ``direction);`
</div>
<div class="line number946 index945 alt1">
` ``if` `(nextFocused != ``null` `&& nextFocused != currentFocused) {`
</div>
<div class="line number947 index946 alt2">
` ``if` `(direction == View.FOCUS_LEFT) {`
</div>
<div class="line number948 index947 alt1">
` ``handled = nextFocused.requestFocus();`
</div>
<div class="line number949 index948 alt2">
` ``} ``else` `if` `(direction == View.FOCUS_RIGHT) {`
</div>
<div class="line number950 index949 alt1">
` ``// If there is nothing to the right, or this is causing us to`
</div>
<div class="line number951 index950 alt2">
` ``// jump to the left, then what we really want to do is page right.`
</div>
<div class="line number952 index951 alt1">
` ``if` `(currentFocused != ``null` `&& nextFocused.getLeft() <= currentFocused.getLeft()) {`
</div>
<div class="line number953 index952 alt2">
` ``handled = pageRight();`
</div>
<div class="line number954 index953 alt1">
` ``} ``else` `{`
</div>
<div class="line number955 index954 alt2">
` ``handled = nextFocused.requestFocus();`
</div>
<div class="line number956 index955 alt1">
` ``}`
</div>
<div class="line number957 index956 alt2">
` ``}`
</div>
<div class="line number958 index957 alt1">
` ``} ``else` `if` `(direction == FOCUS_LEFT || direction == FOCUS_BACKWARD) {`
</div>
<div class="line number959 index958 alt2">
` ``// Trying to move left and nothing there; try to page.`
</div>
<div class="line number960 index959 alt1">
` ``handled = pageLeft();`
</div>
<div class="line number961 index960 alt2">
` ``} ``else` `if` `(direction == FOCUS_RIGHT || direction == FOCUS_FORWARD) {`
</div>
<div class="line number962 index961 alt1">
` ``// Trying to move right and nothing there; try to page.`
</div>
<div class="line number963 index962 alt2">
` ``handled = pageRight();`
</div>
<div class="line number964 index963 alt1">
` ``}`
</div>
<div class="line number965 index964 alt2">
` ``if` `(handled) {`
</div>
<div class="line number966 index965 alt1">
` ``playSoundEffect(SoundEffectConstants.getContantForFocusDirection(direction));`
</div>
<div class="line number967 index966 alt2">
` ``}`
</div>
<div class="line number968 index967 alt1">
` ``return` `handled;`
</div>
<div class="line number969 index968 alt2">
` ``}`
</div>
<div class="line number970 index969 alt1">
</div>
<div class="line number971 index970 alt2">
` ``boolean` `pageLeft() {`
</div>
<div class="line number972 index971 alt1">
` ``if` `(mCurItem > ````) {`
</div>
<div class="line number973 index972 alt2">
` ``setCurrentItem(mCurItem-``1``, ``true``);`
</div>
<div class="line number974 index973 alt1">
` ``return` `true``;`
</div>
<div class="line number975 index974 alt2">
` ``}`
</div>
<div class="line number976 index975 alt1">
` ``return` `false``;`
</div>
<div class="line number977 index976 alt2">
` ``}`
</div>
<div class="line number978 index977 alt1">
</div>
<div class="line number979 index978 alt2">
` ``boolean` `pageRight() {`
</div>
<div class="line number980 index979 alt1">
` ``if` `(mCurItem < ``1``) {`
</div>
<div class="line number981 index980 alt2">
` ``setCurrentItem(mCurItem+``1``, ``true``);`
</div>
<div class="line number982 index981 alt1">
` ``return` `true``;`
</div>
<div class="line number983 index982 alt2">
` ``}`
</div>
<div class="line number984 index983 alt1">
` ``return` `false``;`
</div>
<div class="line number985 index984 alt2">
` ``}`
</div>
<div class="line number986 index985 alt1">
</div>
<div class="line number987 index986 alt2">
` ``public` `void` `setCanvasTransformer(CanvasTransformer t) {`
</div>
<div class="line number988 index987 alt1">
` ``mTransformer = t;`
</div>
<div class="line number989 index988 alt2">
` ``}`
</div>
<div class="line number990 index989 alt1">
</div>
<div class="line number991 index990 alt2">
`}`
</div>
</div>
</td>
</tr>
</table>
如果想要使用这个侧滑菜单的动画效果,直接替换这两个类即可。同时,并不会影响SlidingMenu的固有功能。
下面看看如何配置SlidingMenu实例。
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1
</div>
<div class="line number2 index1 alt1">
2
</div>
<div class="line number3 index2 alt2">
3
</div>
<div class="line number4 index3 alt1">
4
</div>
<div class="line number5 index4 alt2">
5
</div>
<div class="line number6 index5 alt1">
6
</div>
<div class="line number7 index6 alt2">
7
</div>
<div class="line number8 index7 alt1">
8
</div>
<div class="line number9 index8 alt2">
9
</div>
<div class="line number10 index9 alt1">
10
</div>
<div class="line number11 index10 alt2">
11
</div>
<div class="line number12 index11 alt1">
12
</div>
<div class="line number13 index12 alt2">
13
</div>
<div class="line number14 index13 alt1">
14
</div>
<div class="line number15 index14 alt2">
15
</div>
<div class="line number16 index15 alt1">
16
</div>
<div class="line number17 index16 alt2">
17
</div>
<div class="line number18 index17 alt1">
18
</div>
<div class="line number19 index18 alt2">
19
</div>
<div class="line number20 index19 alt1">
20
</div>
<div class="line number21 index20 alt2">
21
</div>
<div class="line number22 index21 alt1">
22
</div>
<div class="line number23 index22 alt2">
23
</div>
<div class="line number24 index23 alt1">
24
</div>
<div class="line number25 index24 alt2">
25
</div>
<div class="line number26 index25 alt1">
26
</div>
<div class="line number27 index26 alt2">
27
</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
` ``SlidingMenu sm = getSlidingMenu();`
</div>
<div class="line number2 index1 alt1">
` ``sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);`
</div>
<div class="line number3 index2 alt2">
` ``sm.setFadeEnabled(``false``);`
</div>
<div class="line number4 index3 alt1">
` ``sm.setBehindScrollScale(````.25f);`
</div>
<div class="line number5 index4 alt2">
` ``sm.setFadeDegree(````.25f);`
</div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
` ``// 配置背景图片`
</div>
<div class="line number8 index7 alt1">
` ``sm.setBackgroundImage(R.drawable.img_frame_background);`
</div>
<div class="line number9 index8 alt2">
` ``// 设置专场动画效果`
</div>
<div class="line number10 index9 alt1">
` ``sm.setBehindCanvasTransformer(``new` `SlidingMenu.CanvasTransformer() {`
</div>
<div class="line number11 index10 alt2">
` ``@Override`
</div>
<div class="line number12 index11 alt1">
` ``public` `void` `transformCanvas(Canvas canvas, ``float` `percentOpen) {`
</div>
<div class="line number13 index12 alt2">
` ``float` `scale = (``float``) (percentOpen * ``0.25` `+ ``0.75``);`
</div>
<div class="line number14 index13 alt1">
` ``canvas.scale(scale, scale, -canvas.getWidth() / ``2``,`
</div>
<div class="line number15 index14 alt2">
` ``canvas.getHeight() / ``2``);`
</div>
<div class="line number16 index15 alt1">
` ``}`
</div>
<div class="line number17 index16 alt2">
` ``});`
</div>
<div class="line number18 index17 alt1">
</div>
<div class="line number19 index18 alt2">
` ``sm.setAboveCanvasTransformer(``new` `SlidingMenu.CanvasTransformer() {`
</div>
<div class="line number20 index19 alt1">
` ``@Override`
</div>
<div class="line number21 index20 alt2">
` ``public` `void` `transformCanvas(Canvas canvas, ``float` `percentOpen) {`
</div>
<div class="line number22 index21 alt1">
` ``float` `scale = (``float``) (``1` `- percentOpen * ``0.25``);`
</div>
<div class="line number23 index22 alt2">
` ``canvas.scale(scale, scale, ````, canvas.getHeight() / ``2``);`
</div>
<div class="line number24 index23 alt1">
` ``}`
</div>
<div class="line number25 index24 alt2">
` ``});`
</div>
<div class="line number26 index25 alt1">
</div>
<div class="line number27 index26 alt2">
`}`
</div>
</div>
</td>
</tr>
</table>
大功告成!
最后,附上Demo的下载地址。
百度网盘 http://pan.baidu.com/s/1jGrASui
转自:http://www.open-open.com/lib/view/open1411269966859.html
💬 评论