diff --git a/library_pullToRefresh b/library_pullToRefresh
deleted file mode 160000
index 45c04f1..0000000
--- a/library_pullToRefresh
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 45c04f1d20baac88af670a40f4ef373c66019c7a
diff --git a/library_pullToRefresh/.classpath b/library_pullToRefresh/.classpath
new file mode 100644
index 0000000..5176974
--- /dev/null
+++ b/library_pullToRefresh/.classpath
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/library_pullToRefresh/.project b/library_pullToRefresh/.project
new file mode 100644
index 0000000..cb7d5a1
--- /dev/null
+++ b/library_pullToRefresh/.project
@@ -0,0 +1,33 @@
+
+
+ library_pullToRefresh
+
+
+
+
+
+ com.android.ide.eclipse.adt.ResourceManagerBuilder
+
+
+
+
+ com.android.ide.eclipse.adt.PreCompilerBuilder
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ com.android.ide.eclipse.adt.ApkBuilder
+
+
+
+
+
+ com.android.ide.eclipse.adt.AndroidNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/library_pullToRefresh/.settings/org.eclipse.core.resources.prefs b/library_pullToRefresh/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/library_pullToRefresh/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/library_pullToRefresh/.settings/org.eclipse.jdt.core.prefs b/library_pullToRefresh/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b080d2d
--- /dev/null
+++ b/library_pullToRefresh/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/library_pullToRefresh/AndroidManifest.xml b/library_pullToRefresh/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/LICENSE b/library_pullToRefresh/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/library_pullToRefresh/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/library_pullToRefresh/bin/AndroidManifest.xml b/library_pullToRefresh/bin/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/bin/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/bin/R.txt b/library_pullToRefresh/bin/R.txt
new file mode 100644
index 0000000..80a1311
--- /dev/null
+++ b/library_pullToRefresh/bin/R.txt
@@ -0,0 +1,84 @@
+int anim progresbar_anim 0x7f040000
+int anim refresh_view 0x7f040001
+int anim slide_in_from_bottom 0x7f040002
+int anim slide_in_from_top 0x7f040003
+int anim slide_out_to_bottom 0x7f040004
+int anim slide_out_to_top 0x7f040005
+int attr ptrAdapterViewBackground 0x7f010010
+int attr ptrAnimationStyle 0x7f01000c
+int attr ptrDrawable 0x7f010006
+int attr ptrDrawableBottom 0x7f010012
+int attr ptrDrawableEnd 0x7f010008
+int attr ptrDrawableStart 0x7f010007
+int attr ptrDrawableTop 0x7f010011
+int attr ptrHeaderBackground 0x7f010001
+int attr ptrHeaderSubTextColor 0x7f010003
+int attr ptrHeaderTextAppearance 0x7f01000a
+int attr ptrHeaderTextColor 0x7f010002
+int attr ptrListViewExtrasEnabled 0x7f01000e
+int attr ptrMode 0x7f010004
+int attr ptrOverScroll 0x7f010009
+int attr ptrRefreshableViewBackground 0x7f010000
+int attr ptrRotateDrawableWhilePulling 0x7f01000f
+int attr ptrScrollingWhileRefreshingEnabled 0x7f01000d
+int attr ptrShowIndicator 0x7f010005
+int attr ptrSubHeaderTextAppearance 0x7f01000b
+int dimen header_footer_left_right_padding 0x7f050003
+int dimen header_footer_top_bottom_padding 0x7f050004
+int dimen indicator_corner_radius 0x7f050001
+int dimen indicator_internal_padding 0x7f050002
+int dimen indicator_right_padding 0x7f050000
+int drawable default_ptr_rotate 0x7f020000
+int drawable indicator_arrow 0x7f020001
+int drawable indicator_bg_bottom 0x7f020002
+int drawable indicator_bg_top 0x7f020003
+int drawable loading_01 0x7f020004
+int drawable loading_02 0x7f020005
+int drawable loading_03 0x7f020006
+int drawable loading_04 0x7f020007
+int drawable refresh_anim 0x7f020008
+int id both 0x7f060003
+int id disabled 0x7f060004
+int id fl_inner 0x7f06000c
+int id flip 0x7f06000a
+int id gridview 0x7f060000
+int id manualOnly 0x7f060005
+int id pullDownFromTop 0x7f060006
+int id pullFromEnd 0x7f060007
+int id pullFromStart 0x7f060008
+int id pullUpFromBottom 0x7f060009
+int id pull_to_refresh_image 0x7f06000d
+int id pull_to_refresh_progress 0x7f06000e
+int id pull_to_refresh_sub_text 0x7f060010
+int id pull_to_refresh_text 0x7f06000f
+int id rotate 0x7f06000b
+int id scrollview 0x7f060002
+int id webview 0x7f060001
+int layout pull_to_refresh_header_horizontal 0x7f030000
+int layout pull_to_refresh_header_vertical 0x7f030001
+int string pull_to_refresh_from_bottom_pull_label 0x7f070003
+int string pull_to_refresh_from_bottom_refreshing_label 0x7f070005
+int string pull_to_refresh_from_bottom_release_label 0x7f070004
+int string pull_to_refresh_pull_label 0x7f070000
+int string pull_to_refresh_refreshing_label 0x7f070002
+int string pull_to_refresh_release_label 0x7f070001
+int[] styleable PullToRefresh { 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f, 0x7f010010, 0x7f010011, 0x7f010012 }
+int styleable PullToRefresh_ptrAdapterViewBackground 16
+int styleable PullToRefresh_ptrAnimationStyle 12
+int styleable PullToRefresh_ptrDrawable 6
+int styleable PullToRefresh_ptrDrawableBottom 18
+int styleable PullToRefresh_ptrDrawableEnd 8
+int styleable PullToRefresh_ptrDrawableStart 7
+int styleable PullToRefresh_ptrDrawableTop 17
+int styleable PullToRefresh_ptrHeaderBackground 1
+int styleable PullToRefresh_ptrHeaderSubTextColor 3
+int styleable PullToRefresh_ptrHeaderTextAppearance 10
+int styleable PullToRefresh_ptrHeaderTextColor 2
+int styleable PullToRefresh_ptrListViewExtrasEnabled 14
+int styleable PullToRefresh_ptrMode 4
+int styleable PullToRefresh_ptrOverScroll 9
+int styleable PullToRefresh_ptrRefreshableViewBackground 0
+int styleable PullToRefresh_ptrRotateDrawableWhilePulling 15
+int styleable PullToRefresh_ptrScrollingWhileRefreshingEnabled 13
+int styleable PullToRefresh_ptrShowIndicator 5
+int styleable PullToRefresh_ptrSubHeaderTextAppearance 11
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/BuildConfig.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/BuildConfig.class
new file mode 100644
index 0000000..d25e128
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/BuildConfig.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/ILoadingLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/ILoadingLayout.class
new file mode 100644
index 0000000..eaf4c9e
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/ILoadingLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/IPullToRefresh.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/IPullToRefresh.class
new file mode 100644
index 0000000..3f616b1
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/IPullToRefresh.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class
new file mode 100644
index 0000000..a58eee5
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/OverscrollHelper.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/OverscrollHelper.class
new file mode 100644
index 0000000..16ad4c3
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/OverscrollHelper.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class
new file mode 100644
index 0000000..3e4604e
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class
new file mode 100644
index 0000000..f34652a
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class
new file mode 100644
index 0000000..373d060
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class
new file mode 100644
index 0000000..da864ca
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class
new file mode 100644
index 0000000..66aaec3
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class
new file mode 100644
index 0000000..2a17781
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class
new file mode 100644
index 0000000..83f2988
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class
new file mode 100644
index 0000000..dc74b8c
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class
new file mode 100644
index 0000000..03864d3
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class
new file mode 100644
index 0000000..d113c05
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class
new file mode 100644
index 0000000..25f6a48
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class
new file mode 100644
index 0000000..75bde1c
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class
new file mode 100644
index 0000000..183e3cc
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class
new file mode 100644
index 0000000..38426b0
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase.class
new file mode 100644
index 0000000..3c9c6fd
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshBase.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class
new file mode 100644
index 0000000..58988d7
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class
new file mode 100644
index 0000000..2e065c5
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class
new file mode 100644
index 0000000..362ba03
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class
new file mode 100644
index 0000000..db7fc11
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class
new file mode 100644
index 0000000..7b9e7a7
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView.class
new file mode 100644
index 0000000..9cc55ab
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshGridView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class
new file mode 100644
index 0000000..f57d677
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class
new file mode 100644
index 0000000..6d957ce
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class
new file mode 100644
index 0000000..9a3e875
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class
new file mode 100644
index 0000000..418588e
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView.class
new file mode 100644
index 0000000..7f19ff5
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshListView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class
new file mode 100644
index 0000000..bedfc60
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class
new file mode 100644
index 0000000..35bfb31
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class
new file mode 100644
index 0000000..ee474cd
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class
new file mode 100644
index 0000000..ace08ef
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class
new file mode 100644
index 0000000..75c8ae8
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView.class
new file mode 100644
index 0000000..33ae973
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/PullToRefreshWebView.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$anim.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$anim.class
new file mode 100644
index 0000000..a150d95
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$anim.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$attr.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$attr.class
new file mode 100644
index 0000000..c076659
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$attr.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$dimen.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$dimen.class
new file mode 100644
index 0000000..fdada82
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$dimen.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$drawable.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$drawable.class
new file mode 100644
index 0000000..a5f1c32
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$drawable.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$id.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$id.class
new file mode 100644
index 0000000..0ea8742
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$id.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$layout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$layout.class
new file mode 100644
index 0000000..2f04630
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$layout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$string.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$string.class
new file mode 100644
index 0000000..259c365
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$string.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$styleable.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$styleable.class
new file mode 100644
index 0000000..6493cbb
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R$styleable.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R.class
new file mode 100644
index 0000000..8ec87ca
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/R.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class
new file mode 100644
index 0000000..7f628ec
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class
new file mode 100644
index 0000000..a2151d4
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class
new file mode 100644
index 0000000..81fa269
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class
new file mode 100644
index 0000000..154f359
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class
new file mode 100644
index 0000000..0be539a
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class
new file mode 100644
index 0000000..6eae339
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/LoadingLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/LoadingLayout.class
new file mode 100644
index 0000000..01ea518
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/LoadingLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class
new file mode 100644
index 0000000..7f7de39
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class
new file mode 100644
index 0000000..d42634d
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/Utils.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/Utils.class
new file mode 100644
index 0000000..7699074
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/Utils.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class
new file mode 100644
index 0000000..9fd7c12
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class
new file mode 100644
index 0000000..49b2028
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class differ
diff --git a/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat.class b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat.class
new file mode 100644
index 0000000..fbf0deb
Binary files /dev/null and b/library_pullToRefresh/bin/classes/com/handmark/pulltorefresh/library/internal/ViewCompat.class differ
diff --git a/library_pullToRefresh/bin/jarlist.cache b/library_pullToRefresh/bin/jarlist.cache
new file mode 100644
index 0000000..0565465
--- /dev/null
+++ b/library_pullToRefresh/bin/jarlist.cache
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is
+# Encoding is UTF-8
diff --git a/library_pullToRefresh/bin/library_pulltorefresh.jar b/library_pullToRefresh/bin/library_pulltorefresh.jar
new file mode 100644
index 0000000..fb60783
Binary files /dev/null and b/library_pullToRefresh/bin/library_pulltorefresh.jar differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-hdpi/default_ptr_rotate.png b/library_pullToRefresh/bin/res/crunch/drawable-hdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..f0a4bfe
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-hdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-hdpi/indicator_arrow.png b/library_pullToRefresh/bin/res/crunch/drawable-hdpi/indicator_arrow.png
new file mode 100644
index 0000000..464d2f3
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-hdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-mdpi/default_ptr_rotate.png b/library_pullToRefresh/bin/res/crunch/drawable-mdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..8ae16e93
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-mdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-mdpi/indicator_arrow.png b/library_pullToRefresh/bin/res/crunch/drawable-mdpi/indicator_arrow.png
new file mode 100644
index 0000000..fc99373
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-mdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/default_ptr_rotate.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..495d087
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/indicator_arrow.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/indicator_arrow.png
new file mode 100644
index 0000000..2b8c086
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_01.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_01.png
new file mode 100644
index 0000000..8a64847
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_01.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_02.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_02.png
new file mode 100644
index 0000000..aa6f3de
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_02.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_03.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_03.png
new file mode 100644
index 0000000..1850fd4
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_03.png differ
diff --git a/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_04.png b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_04.png
new file mode 100644
index 0000000..befba85
Binary files /dev/null and b/library_pullToRefresh/bin/res/crunch/drawable-xhdpi/loading_04.png differ
diff --git a/library_pullToRefresh/build.gradle b/library_pullToRefresh/build.gradle
new file mode 100644
index 0000000..97828c0
--- /dev/null
+++ b/library_pullToRefresh/build.gradle
@@ -0,0 +1,37 @@
+apply plugin: 'android-library'
+
+dependencies {
+ compile fileTree(dir: 'libs', include: '*.jar')
+}
+
+android {
+ compileSdkVersion 26
+ buildToolsVersion "26.0.2"
+ lintOptions {
+ abortOnError false
+ }
+ sourceSets {
+ main {
+ manifest.srcFile 'AndroidManifest.xml'
+ jniLibs.srcDirs = ['libs']
+ java.srcDirs = ['src']
+ resources.srcDirs = ['src']
+ aidl.srcDirs = ['src']
+ renderscript.srcDirs = ['src']
+ res.srcDirs = ['res']
+ assets.srcDirs = ['assets']
+ }
+
+ // Move the tests to tests/java, tests/res, etc...
+ instrumentTest.setRoot('tests')
+
+ // Move the build types to build-types/
+ // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
+ // This moves them out of them default location under src//... which would
+ // conflict with src/ being used by the main source set.
+ // Adding new build types or product flavors should be accompanied
+ // by a similar customization.
+ debug.setRoot('build-types/debug')
+ release.setRoot('build-types/release')
+ }
+}
diff --git a/library_pullToRefresh/build/generated/source/buildConfig/debug/com/handmark/pulltorefresh/library/BuildConfig.java b/library_pullToRefresh/build/generated/source/buildConfig/debug/com/handmark/pulltorefresh/library/BuildConfig.java
new file mode 100644
index 0000000..f1c4d28
--- /dev/null
+++ b/library_pullToRefresh/build/generated/source/buildConfig/debug/com/handmark/pulltorefresh/library/BuildConfig.java
@@ -0,0 +1,13 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package com.handmark.pulltorefresh.library;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
+ public static final String APPLICATION_ID = "com.handmark.pulltorefresh.library";
+ public static final String BUILD_TYPE = "debug";
+ public static final String FLAVOR = "";
+ public static final int VERSION_CODE = 2110;
+ public static final String VERSION_NAME = "2.1.1";
+}
diff --git a/library_pullToRefresh/build/generated/source/buildConfig/release/com/handmark/pulltorefresh/library/BuildConfig.java b/library_pullToRefresh/build/generated/source/buildConfig/release/com/handmark/pulltorefresh/library/BuildConfig.java
new file mode 100644
index 0000000..5d1c82f
--- /dev/null
+++ b/library_pullToRefresh/build/generated/source/buildConfig/release/com/handmark/pulltorefresh/library/BuildConfig.java
@@ -0,0 +1,13 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package com.handmark.pulltorefresh.library;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = false;
+ public static final String APPLICATION_ID = "com.handmark.pulltorefresh.library";
+ public static final String BUILD_TYPE = "release";
+ public static final String FLAVOR = "";
+ public static final int VERSION_CODE = 2110;
+ public static final String VERSION_NAME = "2.1.1";
+}
diff --git a/library_pullToRefresh/build/generated/source/r/debug/com/handmark/pulltorefresh/library/R.java b/library_pullToRefresh/build/generated/source/r/debug/com/handmark/pulltorefresh/library/R.java
new file mode 100644
index 0000000..031be46
--- /dev/null
+++ b/library_pullToRefresh/build/generated/source/r/debug/com/handmark/pulltorefresh/library/R.java
@@ -0,0 +1,101 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * gradle plugin from the resource data it found. It
+ * should not be modified by hand.
+ */
+package com.handmark.pulltorefresh.library;
+
+public final class R {
+ public static final class anim {
+ public static int progresbar_anim = 0x7f010001;
+ public static int refresh_view = 0x7f010002;
+ public static int slide_in_from_bottom = 0x7f010003;
+ public static int slide_in_from_top = 0x7f010004;
+ public static int slide_out_to_bottom = 0x7f010005;
+ public static int slide_out_to_top = 0x7f010006;
+ }
+ public static final class attr {
+ public static int ptrAdapterViewBackground = 0x7f040001;
+ public static int ptrAnimationStyle = 0x7f040002;
+ public static int ptrDrawable = 0x7f040003;
+ public static int ptrDrawableBottom = 0x7f040004;
+ public static int ptrDrawableEnd = 0x7f040005;
+ public static int ptrDrawableStart = 0x7f040006;
+ public static int ptrDrawableTop = 0x7f040007;
+ public static int ptrHeaderBackground = 0x7f040008;
+ public static int ptrHeaderSubTextColor = 0x7f040009;
+ public static int ptrHeaderTextAppearance = 0x7f04000a;
+ public static int ptrHeaderTextColor = 0x7f04000b;
+ public static int ptrListViewExtrasEnabled = 0x7f04000c;
+ public static int ptrMode = 0x7f04000d;
+ public static int ptrOverScroll = 0x7f04000e;
+ public static int ptrRefreshableViewBackground = 0x7f04000f;
+ public static int ptrRotateDrawableWhilePulling = 0x7f040010;
+ public static int ptrScrollingWhileRefreshingEnabled = 0x7f040011;
+ public static int ptrShowIndicator = 0x7f040012;
+ public static int ptrSubHeaderTextAppearance = 0x7f040013;
+ }
+ public static final class dimen {
+ public static int header_footer_left_right_padding = 0x7f080001;
+ public static int header_footer_top_bottom_padding = 0x7f080002;
+ public static int indicator_corner_radius = 0x7f080003;
+ public static int indicator_internal_padding = 0x7f080004;
+ public static int indicator_right_padding = 0x7f080005;
+ }
+ public static final class drawable {
+ public static int default_ptr_rotate = 0x7f090001;
+ public static int indicator_arrow = 0x7f090002;
+ public static int indicator_bg_bottom = 0x7f090003;
+ public static int indicator_bg_top = 0x7f090004;
+ public static int loading_01 = 0x7f090005;
+ public static int loading_02 = 0x7f090006;
+ public static int loading_03 = 0x7f090007;
+ public static int loading_04 = 0x7f090008;
+ public static int refresh_anim = 0x7f090009;
+ }
+ public static final class id {
+ public static int fl_inner = 0x7f0c0001;
+ public static int gridview = 0x7f0c0002;
+ public static int pull_to_refresh_image = 0x7f0c0003;
+ public static int pull_to_refresh_progress = 0x7f0c0004;
+ public static int pull_to_refresh_sub_text = 0x7f0c0005;
+ public static int pull_to_refresh_text = 0x7f0c0006;
+ public static int scrollview = 0x7f0c0007;
+ public static int webview = 0x7f0c0008;
+ }
+ public static final class layout {
+ public static int pull_to_refresh_header_horizontal = 0x7f0f0001;
+ public static int pull_to_refresh_header_vertical = 0x7f0f0002;
+ }
+ public static final class string {
+ public static int pull_to_refresh_from_bottom_pull_label = 0x7f150001;
+ public static int pull_to_refresh_from_bottom_refreshing_label = 0x7f150002;
+ public static int pull_to_refresh_from_bottom_release_label = 0x7f150003;
+ public static int pull_to_refresh_pull_label = 0x7f150004;
+ public static int pull_to_refresh_refreshing_label = 0x7f150005;
+ public static int pull_to_refresh_release_label = 0x7f150006;
+ }
+ public static final class styleable {
+ public static int[] PullToRefresh = { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 };
+ public static int PullToRefresh_ptrAdapterViewBackground = 0;
+ public static int PullToRefresh_ptrAnimationStyle = 1;
+ public static int PullToRefresh_ptrDrawable = 2;
+ public static int PullToRefresh_ptrDrawableBottom = 3;
+ public static int PullToRefresh_ptrDrawableEnd = 4;
+ public static int PullToRefresh_ptrDrawableStart = 5;
+ public static int PullToRefresh_ptrDrawableTop = 6;
+ public static int PullToRefresh_ptrHeaderBackground = 7;
+ public static int PullToRefresh_ptrHeaderSubTextColor = 8;
+ public static int PullToRefresh_ptrHeaderTextAppearance = 9;
+ public static int PullToRefresh_ptrHeaderTextColor = 10;
+ public static int PullToRefresh_ptrListViewExtrasEnabled = 11;
+ public static int PullToRefresh_ptrMode = 12;
+ public static int PullToRefresh_ptrOverScroll = 13;
+ public static int PullToRefresh_ptrRefreshableViewBackground = 14;
+ public static int PullToRefresh_ptrRotateDrawableWhilePulling = 15;
+ public static int PullToRefresh_ptrScrollingWhileRefreshingEnabled = 16;
+ public static int PullToRefresh_ptrShowIndicator = 17;
+ public static int PullToRefresh_ptrSubHeaderTextAppearance = 18;
+ }
+}
diff --git a/library_pullToRefresh/build/generated/source/r/release/com/handmark/pulltorefresh/library/R.java b/library_pullToRefresh/build/generated/source/r/release/com/handmark/pulltorefresh/library/R.java
new file mode 100644
index 0000000..031be46
--- /dev/null
+++ b/library_pullToRefresh/build/generated/source/r/release/com/handmark/pulltorefresh/library/R.java
@@ -0,0 +1,101 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * gradle plugin from the resource data it found. It
+ * should not be modified by hand.
+ */
+package com.handmark.pulltorefresh.library;
+
+public final class R {
+ public static final class anim {
+ public static int progresbar_anim = 0x7f010001;
+ public static int refresh_view = 0x7f010002;
+ public static int slide_in_from_bottom = 0x7f010003;
+ public static int slide_in_from_top = 0x7f010004;
+ public static int slide_out_to_bottom = 0x7f010005;
+ public static int slide_out_to_top = 0x7f010006;
+ }
+ public static final class attr {
+ public static int ptrAdapterViewBackground = 0x7f040001;
+ public static int ptrAnimationStyle = 0x7f040002;
+ public static int ptrDrawable = 0x7f040003;
+ public static int ptrDrawableBottom = 0x7f040004;
+ public static int ptrDrawableEnd = 0x7f040005;
+ public static int ptrDrawableStart = 0x7f040006;
+ public static int ptrDrawableTop = 0x7f040007;
+ public static int ptrHeaderBackground = 0x7f040008;
+ public static int ptrHeaderSubTextColor = 0x7f040009;
+ public static int ptrHeaderTextAppearance = 0x7f04000a;
+ public static int ptrHeaderTextColor = 0x7f04000b;
+ public static int ptrListViewExtrasEnabled = 0x7f04000c;
+ public static int ptrMode = 0x7f04000d;
+ public static int ptrOverScroll = 0x7f04000e;
+ public static int ptrRefreshableViewBackground = 0x7f04000f;
+ public static int ptrRotateDrawableWhilePulling = 0x7f040010;
+ public static int ptrScrollingWhileRefreshingEnabled = 0x7f040011;
+ public static int ptrShowIndicator = 0x7f040012;
+ public static int ptrSubHeaderTextAppearance = 0x7f040013;
+ }
+ public static final class dimen {
+ public static int header_footer_left_right_padding = 0x7f080001;
+ public static int header_footer_top_bottom_padding = 0x7f080002;
+ public static int indicator_corner_radius = 0x7f080003;
+ public static int indicator_internal_padding = 0x7f080004;
+ public static int indicator_right_padding = 0x7f080005;
+ }
+ public static final class drawable {
+ public static int default_ptr_rotate = 0x7f090001;
+ public static int indicator_arrow = 0x7f090002;
+ public static int indicator_bg_bottom = 0x7f090003;
+ public static int indicator_bg_top = 0x7f090004;
+ public static int loading_01 = 0x7f090005;
+ public static int loading_02 = 0x7f090006;
+ public static int loading_03 = 0x7f090007;
+ public static int loading_04 = 0x7f090008;
+ public static int refresh_anim = 0x7f090009;
+ }
+ public static final class id {
+ public static int fl_inner = 0x7f0c0001;
+ public static int gridview = 0x7f0c0002;
+ public static int pull_to_refresh_image = 0x7f0c0003;
+ public static int pull_to_refresh_progress = 0x7f0c0004;
+ public static int pull_to_refresh_sub_text = 0x7f0c0005;
+ public static int pull_to_refresh_text = 0x7f0c0006;
+ public static int scrollview = 0x7f0c0007;
+ public static int webview = 0x7f0c0008;
+ }
+ public static final class layout {
+ public static int pull_to_refresh_header_horizontal = 0x7f0f0001;
+ public static int pull_to_refresh_header_vertical = 0x7f0f0002;
+ }
+ public static final class string {
+ public static int pull_to_refresh_from_bottom_pull_label = 0x7f150001;
+ public static int pull_to_refresh_from_bottom_refreshing_label = 0x7f150002;
+ public static int pull_to_refresh_from_bottom_release_label = 0x7f150003;
+ public static int pull_to_refresh_pull_label = 0x7f150004;
+ public static int pull_to_refresh_refreshing_label = 0x7f150005;
+ public static int pull_to_refresh_release_label = 0x7f150006;
+ }
+ public static final class styleable {
+ public static int[] PullToRefresh = { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 };
+ public static int PullToRefresh_ptrAdapterViewBackground = 0;
+ public static int PullToRefresh_ptrAnimationStyle = 1;
+ public static int PullToRefresh_ptrDrawable = 2;
+ public static int PullToRefresh_ptrDrawableBottom = 3;
+ public static int PullToRefresh_ptrDrawableEnd = 4;
+ public static int PullToRefresh_ptrDrawableStart = 5;
+ public static int PullToRefresh_ptrDrawableTop = 6;
+ public static int PullToRefresh_ptrHeaderBackground = 7;
+ public static int PullToRefresh_ptrHeaderSubTextColor = 8;
+ public static int PullToRefresh_ptrHeaderTextAppearance = 9;
+ public static int PullToRefresh_ptrHeaderTextColor = 10;
+ public static int PullToRefresh_ptrListViewExtrasEnabled = 11;
+ public static int PullToRefresh_ptrMode = 12;
+ public static int PullToRefresh_ptrOverScroll = 13;
+ public static int PullToRefresh_ptrRefreshableViewBackground = 14;
+ public static int PullToRefresh_ptrRotateDrawableWhilePulling = 15;
+ public static int PullToRefresh_ptrScrollingWhileRefreshingEnabled = 16;
+ public static int PullToRefresh_ptrShowIndicator = 17;
+ public static int PullToRefresh_ptrSubHeaderTextAppearance = 18;
+ }
+}
diff --git a/library_pullToRefresh/build/intermediates/attr/R.txt b/library_pullToRefresh/build/intermediates/attr/R.txt
new file mode 100644
index 0000000..a8028d5
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/attr/R.txt
@@ -0,0 +1,1347 @@
+int attr absListViewStyle 0x0101006a
+int attr accessibilityEventTypes 0x01010380
+int attr accessibilityFeedbackType 0x01010382
+int attr accessibilityFlags 0x01010384
+int attr accessibilityLiveRegion 0x010103ee
+int attr accessibilityTraversalAfter 0x010104d2
+int attr accessibilityTraversalBefore 0x010104d1
+int attr accountPreferences 0x0101029f
+int attr accountType 0x0101028f
+int attr action 0x0101002d
+int attr actionBarDivider 0x0101039b
+int attr actionBarItemBackground 0x0101039c
+int attr actionBarPopupTheme 0x0101048d
+int attr actionBarSize 0x010102eb
+int attr actionBarSplitStyle 0x01010388
+int attr actionBarStyle 0x010102ce
+int attr actionBarTabBarStyle 0x010102f4
+int attr actionBarTabStyle 0x010102f3
+int attr actionBarTabTextStyle 0x010102f5
+int attr actionBarTheme 0x01010431
+int attr actionBarWidgetTheme 0x01010397
+int attr actionButtonStyle 0x010102d8
+int attr actionDropDownStyle 0x010102d7
+int attr actionLayout 0x010102fb
+int attr actionMenuTextAppearance 0x01010360
+int attr actionMenuTextColor 0x01010361
+int attr actionModeBackground 0x010102db
+int attr actionModeCloseButtonStyle 0x010102f7
+int attr actionModeCloseDrawable 0x010102dc
+int attr actionModeCopyDrawable 0x01010312
+int attr actionModeCutDrawable 0x01010311
+int attr actionModeFindDrawable 0x0101047a
+int attr actionModePasteDrawable 0x01010313
+int attr actionModeSelectAllDrawable 0x0101037e
+int attr actionModeShareDrawable 0x01010479
+int attr actionModeSplitBackground 0x0101039d
+int attr actionModeStyle 0x01010394
+int attr actionModeWebSearchDrawable 0x0101047b
+int attr actionOverflowButtonStyle 0x010102f6
+int attr actionOverflowMenuStyle 0x01010444
+int attr actionProviderClass 0x01010389
+int attr actionViewClass 0x010102fc
+int attr activatedBackgroundIndicator 0x010102fd
+int attr activityCloseEnterAnimation 0x010100ba
+int attr activityCloseExitAnimation 0x010100bb
+int attr activityOpenEnterAnimation 0x010100b8
+int attr activityOpenExitAnimation 0x010100b9
+int attr addPrintersActivity 0x010103e6
+int attr addStatesFromChildren 0x010100f0
+int attr adjustViewBounds 0x0101011e
+int attr advancedPrintOptionsActivity 0x010103f1
+int attr alertDialogIcon 0x01010355
+int attr alertDialogStyle 0x0101005d
+int attr alertDialogTheme 0x01010309
+int attr alignmentMode 0x0101037a
+int attr allContactsName 0x010102cc
+int attr allowBackup 0x01010280
+int attr allowClearUserData 0x01010005
+int attr allowEmbedded 0x010103f5
+int attr allowParallelSyncs 0x01010332
+int attr allowSingleTap 0x01010259
+int attr allowTaskReparenting 0x01010204
+int attr allowUndo 0x010104df
+int attr alpha 0x0101031f
+int attr alphabeticModifiers 0x0101054e
+int attr alphabeticShortcut 0x010101e3
+int attr alwaysDrawnWithCache 0x010100ef
+int attr alwaysRetainTaskState 0x01010203
+int attr amPmBackgroundColor 0x010104a5
+int attr amPmTextColor 0x010104a4
+int attr ambientShadowAlpha 0x010104be
+int attr angle 0x010101a0
+int attr animateFirstView 0x010102d5
+int attr animateLayoutChanges 0x010102f2
+int attr animateOnClick 0x0101025c
+int attr animation 0x010101cd
+int attr animationCache 0x010100ed
+int attr animationDuration 0x01010112
+int attr animationOrder 0x010101ce
+int attr animationResolution 0x0101031a
+int attr antialias 0x0101011a
+int attr anyDensity 0x0101026c
+int attr apduServiceBanner 0x010103ed
+int attr apiKey 0x01010211
+int attr appCategory 0x01010545
+int attr author 0x010102b4
+int attr authorities 0x01010018
+int attr autoAdvanceViewId 0x0101030f
+int attr autoCompleteTextViewStyle 0x0101006b
+int attr autoLink 0x010100b0
+int attr autoMirrored 0x010103ea
+int attr autoRemoveFromRecents 0x01010447
+int attr autoSizeMaxTextSize 0x01010546
+int attr autoSizeMinTextSize 0x01010538
+int attr autoSizePresetSizes 0x01010537
+int attr autoSizeStepGranularity 0x01010536
+int attr autoSizeTextType 0x01010535
+int attr autoStart 0x010102b5
+int attr autoText 0x0101016a
+int attr autoUrlDetect 0x0101028c
+int attr autoVerify 0x010104ee
+int attr autofillHints 0x01010556
+int attr autofilledHighlight 0x01010568
+int attr background 0x010100d4
+int attr backgroundDimAmount 0x01010032
+int attr backgroundDimEnabled 0x0101021f
+int attr backgroundSplit 0x0101038b
+int attr backgroundStacked 0x0101038a
+int attr backgroundTint 0x0101046b
+int attr backgroundTintMode 0x0101046c
+int attr backupAgent 0x0101027f
+int attr backupInForeground 0x0101051a
+int attr banner 0x010103f2
+int attr baseline 0x0101031c
+int attr baselineAlignBottom 0x01010122
+int attr baselineAligned 0x01010126
+int attr baselineAlignedChildIndex 0x01010127
+int attr bitmap 0x01010516
+int attr borderlessButtonStyle 0x0101032b
+int attr bottom 0x010101b0
+int attr bottomBright 0x010100cd
+int attr bottomDark 0x010100c9
+int attr bottomLeftRadius 0x010101ab
+int attr bottomMedium 0x010100ce
+int attr bottomOffset 0x01010257
+int attr bottomRightRadius 0x010101ac
+int attr breadCrumbShortTitle 0x01010304
+int attr breadCrumbTitle 0x01010303
+int attr breakStrategy 0x010104dd
+int attr bufferType 0x0101014e
+int attr button 0x01010107
+int attr buttonBarButtonStyle 0x0101032f
+int attr buttonBarNegativeButtonStyle 0x0101048b
+int attr buttonBarNeutralButtonStyle 0x0101048a
+int attr buttonBarPositiveButtonStyle 0x01010489
+int attr buttonBarStyle 0x0101032e
+int attr buttonGravity 0x010104fe
+int attr buttonStyle 0x01010048
+int attr buttonStyleInset 0x0101004a
+int attr buttonStyleSmall 0x01010049
+int attr buttonStyleToggle 0x0101004b
+int attr buttonTint 0x0101046f
+int attr buttonTintMode 0x01010470
+int attr cacheColorHint 0x01010101
+int attr calendarTextColor 0x0101049b
+int attr calendarViewShown 0x0101034c
+int attr calendarViewStyle 0x0101035d
+int attr canControlMagnification 0x01010507
+int attr canPerformGestures 0x0101050d
+int attr canRecord 0x0101051c
+int attr canRequestEnhancedWebAccessibility 0x010103d8
+int attr canRequestFilterKeyEvents 0x010103d9
+int attr canRequestFingerprintGestures 0x0101054d
+int attr canRequestTouchExplorationMode 0x010103d7
+int attr canRetrieveWindowContent 0x01010385
+int attr candidatesTextStyleSpans 0x01010230
+int attr capitalize 0x01010169
+int attr category 0x010103e8
+int attr centerBright 0x010100cc
+int attr centerColor 0x0101020b
+int attr centerDark 0x010100c8
+int attr centerMedium 0x010100cf
+int attr centerX 0x010101a2
+int attr centerY 0x010101a3
+int attr certDigest 0x01010548
+int attr checkBoxPreferenceStyle 0x0101008f
+int attr checkMark 0x01010108
+int attr checkMarkTint 0x010104a7
+int attr checkMarkTintMode 0x010104a8
+int attr checkable 0x010101e5
+int attr checkableBehavior 0x010101e0
+int attr checkboxStyle 0x0101006c
+int attr checked 0x01010106
+int attr checkedButton 0x01010148
+int attr checkedTextViewStyle 0x010103c8
+int attr childDivider 0x01010111
+int attr childIndicator 0x0101010c
+int attr childIndicatorEnd 0x010103d4
+int attr childIndicatorLeft 0x0101010f
+int attr childIndicatorRight 0x01010110
+int attr childIndicatorStart 0x010103d3
+int attr choiceMode 0x0101012b
+int attr clearTaskOnLaunch 0x01010015
+int attr clickable 0x010100e5
+int attr clipChildren 0x010100ea
+int attr clipOrientation 0x0101020a
+int attr clipToPadding 0x010100eb
+int attr closeIcon 0x01010481
+int attr codes 0x01010242
+int attr collapseColumns 0x0101014b
+int attr collapseContentDescription 0x010104d0
+int attr collapseIcon 0x010104ff
+int attr color 0x010101a5
+int attr colorAccent 0x01010435
+int attr colorActivatedHighlight 0x01010390
+int attr colorBackground 0x01010031
+int attr colorBackgroundCacheHint 0x010102ab
+int attr colorBackgroundFloating 0x010104e2
+int attr colorButtonNormal 0x0101042b
+int attr colorControlActivated 0x0101042a
+int attr colorControlHighlight 0x0101042c
+int attr colorControlNormal 0x01010429
+int attr colorEdgeEffect 0x010104ce
+int attr colorError 0x01010543
+int attr colorFocusedHighlight 0x0101038f
+int attr colorForeground 0x01010030
+int attr colorForegroundInverse 0x01010206
+int attr colorLongPressedHighlight 0x0101038e
+int attr colorMode 0x0101054a
+int attr colorMultiSelectHighlight 0x01010391
+int attr colorPressedHighlight 0x0101038d
+int attr colorPrimary 0x01010433
+int attr colorPrimaryDark 0x01010434
+int attr colorSecondary 0x01010530
+int attr columnCount 0x01010377
+int attr columnDelay 0x010101cf
+int attr columnOrderPreserved 0x01010378
+int attr columnWidth 0x01010117
+int attr commitIcon 0x01010485
+int attr compatibleWidthLimitDp 0x01010365
+int attr completionHint 0x01010172
+int attr completionHintView 0x01010173
+int attr completionThreshold 0x01010174
+int attr configChanges 0x0101001f
+int attr configure 0x0101025d
+int attr constantSize 0x01010196
+int attr content 0x0101025b
+int attr contentAgeHint 0x010104b9
+int attr contentAuthority 0x01010290
+int attr contentDescription 0x01010273
+int attr contentInsetEnd 0x01010454
+int attr contentInsetEndWithActions 0x01010523
+int attr contentInsetLeft 0x01010455
+int attr contentInsetRight 0x01010456
+int attr contentInsetStart 0x01010453
+int attr contentInsetStartWithNavigation 0x01010522
+int attr contextClickable 0x010104e7
+int attr contextDescription 0x0101052e
+int attr contextPopupMenuStyle 0x01010501
+int attr contextUri 0x0101052d
+int attr controlX1 0x010103fc
+int attr controlX2 0x010103fe
+int attr controlY1 0x010103fd
+int attr controlY2 0x010103ff
+int attr countDown 0x0101051b
+int attr country 0x010104ba
+int attr cropToPadding 0x01010123
+int attr cursorVisible 0x01010152
+int attr customNavigationLayout 0x010102d2
+int attr customTokens 0x0101033b
+int attr cycles 0x010101d4
+int attr dashGap 0x010101a7
+int attr dashWidth 0x010101a6
+int attr data 0x0101002e
+int attr datePickerDialogTheme 0x010104ac
+int attr datePickerMode 0x010104b3
+int attr datePickerStyle 0x0101035c
+int attr dateTextAppearance 0x01010349
+int attr dayOfWeekBackground 0x01010494
+int attr dayOfWeekTextAppearance 0x01010495
+int attr debuggable 0x0101000f
+int attr defaultFocusHighlightEnabled 0x01010562
+int attr defaultHeight 0x010104f5
+int attr defaultToDeviceProtectedStorage 0x01010504
+int attr defaultValue 0x010101ed
+int attr defaultWidth 0x010104f4
+int attr delay 0x010101cc
+int attr dependency 0x010101ec
+int attr descendantFocusability 0x010100f1
+int attr description 0x01010020
+int attr detachWallpaper 0x010102a6
+int attr detailColumn 0x010102a3
+int attr detailSocialSummary 0x010102a4
+int attr detailsElementBackground 0x0101034e
+int attr dial 0x01010102
+int attr dialogIcon 0x010101f4
+int attr dialogLayout 0x010101f7
+int attr dialogMessage 0x010101f3
+int attr dialogPreferenceStyle 0x01010091
+int attr dialogPreferredPadding 0x010104d3
+int attr dialogTheme 0x01010308
+int attr dialogTitle 0x010101f2
+int attr digits 0x01010166
+int attr directBootAware 0x01010505
+int attr direction 0x010101d1
+int attr directionDescriptions 0x010103a1
+int attr directionPriority 0x010101d2
+int attr disableDependentsState 0x010101f1
+int attr disabledAlpha 0x01010033
+int attr displayOptions 0x010102d0
+int attr dither 0x0101011c
+int attr divider 0x01010129
+int attr dividerHeight 0x0101012a
+int attr dividerHorizontal 0x0101032c
+int attr dividerPadding 0x0101032a
+int attr dividerVertical 0x0101030a
+int attr documentLaunchMode 0x01010445
+int attr drawSelectorOnTop 0x010100fc
+int attr drawable 0x01010199
+int attr drawableBottom 0x0101016e
+int attr drawableEnd 0x01010393
+int attr drawableLeft 0x0101016f
+int attr drawablePadding 0x01010171
+int attr drawableRight 0x01010170
+int attr drawableStart 0x01010392
+int attr drawableTint 0x010104d6
+int attr drawableTintMode 0x010104d7
+int attr drawableTop 0x0101016d
+int attr drawingCacheQuality 0x010100e8
+int attr dropDownAnchor 0x01010263
+int attr dropDownHeight 0x01010283
+int attr dropDownHintAppearance 0x01010088
+int attr dropDownHorizontalOffset 0x010102ac
+int attr dropDownItemStyle 0x01010086
+int attr dropDownListViewStyle 0x0101006d
+int attr dropDownSelector 0x01010175
+int attr dropDownSpinnerStyle 0x010102d6
+int attr dropDownVerticalOffset 0x010102ad
+int attr dropDownWidth 0x01010262
+int attr duplicateParentState 0x010100e9
+int attr duration 0x01010198
+int attr editTextBackground 0x01010352
+int attr editTextColor 0x01010351
+int attr editTextPreferenceStyle 0x01010092
+int attr editTextStyle 0x0101006e
+int attr editable 0x0101016b
+int attr editorExtras 0x01010224
+int attr elegantTextHeight 0x0101045d
+int attr elevation 0x01010440
+int attr ellipsize 0x010100ab
+int attr ems 0x01010158
+int attr enableVrMode 0x01010525
+int attr enabled 0x0101000e
+int attr end 0x010104dc
+int attr endColor 0x0101019e
+int attr endX 0x01010512
+int attr endY 0x01010513
+int attr endYear 0x0101017d
+int attr enterFadeDuration 0x0101030c
+int attr entries 0x010100b2
+int attr entryValues 0x010101f8
+int attr eventsInterceptionEnabled 0x0101027d
+int attr excludeClass 0x01010442
+int attr excludeFromRecents 0x01010017
+int attr excludeId 0x01010441
+int attr excludeName 0x0101044e
+int attr exitFadeDuration 0x0101030d
+int attr expandableListPreferredChildIndicatorLeft 0x01010052
+int attr expandableListPreferredChildIndicatorRight 0x01010053
+int attr expandableListPreferredChildPaddingLeft 0x0101004f
+int attr expandableListPreferredItemIndicatorLeft 0x01010050
+int attr expandableListPreferredItemIndicatorRight 0x01010051
+int attr expandableListPreferredItemPaddingLeft 0x0101004e
+int attr expandableListViewStyle 0x0101006f
+int attr expandableListViewWhiteStyle 0x010102b6
+int attr exported 0x01010010
+int attr externalService 0x0101050e
+int attr extraTension 0x0101026b
+int attr extractNativeLibs 0x010104ea
+int attr factor 0x010101d3
+int attr fadeDuration 0x01010278
+int attr fadeEnabled 0x0101027e
+int attr fadeOffset 0x01010277
+int attr fadeScrollbars 0x010102aa
+int attr fadingEdge 0x010100df
+int attr fadingEdgeLength 0x010100e0
+int attr fadingMode 0x010103e1
+int attr fastScrollAlwaysVisible 0x01010335
+int attr fastScrollEnabled 0x01010226
+int attr fastScrollOverlayPosition 0x0101033a
+int attr fastScrollPreviewBackgroundLeft 0x01010337
+int attr fastScrollPreviewBackgroundRight 0x01010338
+int attr fastScrollStyle 0x010103f7
+int attr fastScrollTextColor 0x01010359
+int attr fastScrollThumbDrawable 0x01010336
+int attr fastScrollTrackDrawable 0x01010339
+int attr fillAfter 0x010101bd
+int attr fillAlpha 0x010104cc
+int attr fillBefore 0x010101bc
+int attr fillColor 0x01010404
+int attr fillEnabled 0x0101024f
+int attr fillType 0x0101051e
+int attr fillViewport 0x0101017a
+int attr filter 0x0101011b
+int attr filterTouchesWhenObscured 0x010102c4
+int attr fingerprintAuthDrawable 0x010104e8
+int attr finishOnCloseSystemDialogs 0x010102a7
+int attr finishOnTaskLaunch 0x01010014
+int attr firstDayOfWeek 0x0101033d
+int attr fitsSystemWindows 0x010100dd
+int attr flipInterval 0x01010179
+int attr focusable 0x010100da
+int attr focusableInTouchMode 0x010100db
+int attr focusedByDefault 0x01010544
+int attr focusedMonthDateColor 0x01010343
+int attr font 0x01010532
+int attr fontFamily 0x010103ac
+int attr fontFeatureSettings 0x010104b7
+int attr fontProviderAuthority 0x01010550
+int attr fontProviderCerts 0x0101055d
+int attr fontProviderPackage 0x01010557
+int attr fontProviderQuery 0x01010551
+int attr fontStyle 0x0101053f
+int attr fontWeight 0x01010533
+int attr footerDividersEnabled 0x0101022f
+int attr forceHasOverlappingRendering 0x01010521
+int attr foreground 0x01010109
+int attr foregroundGravity 0x01010200
+int attr foregroundTint 0x0101046d
+int attr foregroundTintMode 0x0101046e
+int attr format 0x01010105
+int attr format12Hour 0x010103ca
+int attr format24Hour 0x010103cb
+int attr fraction 0x010104d8
+int attr fragment 0x010102e3
+int attr fragmentAllowEnterTransitionOverlap 0x010104c8
+int attr fragmentAllowReturnTransitionOverlap 0x010104c9
+int attr fragmentCloseEnterAnimation 0x010102e7
+int attr fragmentCloseExitAnimation 0x010102e8
+int attr fragmentEnterTransition 0x010104c3
+int attr fragmentExitTransition 0x010104c2
+int attr fragmentFadeEnterAnimation 0x010102e9
+int attr fragmentFadeExitAnimation 0x010102ea
+int attr fragmentOpenEnterAnimation 0x010102e5
+int attr fragmentOpenExitAnimation 0x010102e6
+int attr fragmentReenterTransition 0x010104c7
+int attr fragmentReturnTransition 0x010104c5
+int attr fragmentSharedElementEnterTransition 0x010104c4
+int attr fragmentSharedElementReturnTransition 0x010104c6
+int attr freezesText 0x0101016c
+int attr fromAlpha 0x010101ca
+int attr fromDegrees 0x010101b3
+int attr fromId 0x0101044a
+int attr fromScene 0x010103dd
+int attr fromXDelta 0x010101c6
+int attr fromXScale 0x010101c2
+int attr fromYDelta 0x010101c8
+int attr fromYScale 0x010101c4
+int attr fullBackupContent 0x010104eb
+int attr fullBackupOnly 0x01010473
+int attr fullBright 0x010100ca
+int attr fullDark 0x010100c6
+int attr functionalTest 0x01010023
+int attr galleryItemBackground 0x0101004c
+int attr galleryStyle 0x01010070
+int attr gestureColor 0x01010275
+int attr gestureStrokeAngleThreshold 0x0101027c
+int attr gestureStrokeLengthThreshold 0x0101027a
+int attr gestureStrokeSquarenessThreshold 0x0101027b
+int attr gestureStrokeType 0x01010279
+int attr gestureStrokeWidth 0x01010274
+int attr glEsVersion 0x01010281
+int attr goIcon 0x01010482
+int attr gradientRadius 0x010101a4
+int attr grantUriPermissions 0x0101001b
+int attr gravity 0x010100af
+int attr gridViewStyle 0x01010071
+int attr groupIndicator 0x0101010b
+int attr hand_hour 0x01010103
+int attr hand_minute 0x01010104
+int attr handle 0x0101025a
+int attr handleProfiling 0x01010022
+int attr hapticFeedbackEnabled 0x0101025e
+int attr hardwareAccelerated 0x010102d3
+int attr hasCode 0x0101000c
+int attr headerAmPmTextAppearance 0x010104a0
+int attr headerBackground 0x0101012f
+int attr headerDayOfMonthTextAppearance 0x01010497
+int attr headerDividersEnabled 0x0101022e
+int attr headerMonthTextAppearance 0x01010496
+int attr headerTimeTextAppearance 0x0101049f
+int attr headerYearTextAppearance 0x01010498
+int attr height 0x01010155
+int attr hideOnContentScroll 0x01010443
+int attr hint 0x01010150
+int attr homeAsUpIndicator 0x0101030b
+int attr homeLayout 0x0101031d
+int attr horizontalDivider 0x0101012d
+int attr horizontalGap 0x0101023f
+int attr horizontalScrollViewStyle 0x01010353
+int attr horizontalSpacing 0x01010114
+int attr host 0x01010028
+int attr hotSpotX 0x01010517
+int attr hotSpotY 0x01010518
+int attr hyphenationFrequency 0x010104de
+int attr icon 0x01010002
+int attr iconPreview 0x01010249
+int attr iconSpaceReserved 0x01010561
+int attr iconTint 0x0101055e
+int attr iconTintMode 0x0101055f
+int attr iconifiedByDefault 0x010102fa
+int attr id 0x010100d0
+int attr ignoreGravity 0x010101ff
+int attr imageButtonStyle 0x01010072
+int attr imageWellStyle 0x01010073
+int attr imeActionId 0x01010266
+int attr imeActionLabel 0x01010265
+int attr imeExtractEnterAnimation 0x01010268
+int attr imeExtractExitAnimation 0x01010269
+int attr imeFullscreenBackground 0x0101022c
+int attr imeOptions 0x01010264
+int attr imeSubtypeExtraValue 0x010102ee
+int attr imeSubtypeLocale 0x010102ec
+int attr imeSubtypeMode 0x010102ed
+int attr immersive 0x010102c0
+int attr importantForAccessibility 0x010103aa
+int attr importantForAutofill 0x01010558
+int attr inAnimation 0x01010177
+int attr includeFontPadding 0x0101015f
+int attr includeInGlobalSearch 0x0101026e
+int attr indeterminate 0x01010139
+int attr indeterminateBehavior 0x0101013e
+int attr indeterminateDrawable 0x0101013b
+int attr indeterminateDuration 0x0101013d
+int attr indeterminateOnly 0x0101013a
+int attr indeterminateProgressStyle 0x01010318
+int attr indeterminateTint 0x01010469
+int attr indeterminateTintMode 0x0101046a
+int attr indicatorEnd 0x010103d2
+int attr indicatorLeft 0x0101010d
+int attr indicatorRight 0x0101010e
+int attr indicatorStart 0x010103d1
+int attr inflatedId 0x010100f3
+int attr initOrder 0x0101001a
+int attr initialKeyguardLayout 0x010103c2
+int attr initialLayout 0x01010251
+int attr innerRadius 0x0101025f
+int attr innerRadiusRatio 0x0101019b
+int attr inputMethod 0x01010168
+int attr inputType 0x01010220
+int attr inset 0x010104b5
+int attr insetBottom 0x010101ba
+int attr insetLeft 0x010101b7
+int attr insetRight 0x010101b8
+int attr insetTop 0x010101b9
+int attr installLocation 0x010102b7
+int attr interpolator 0x01010141
+int attr isAlwaysSyncable 0x01010333
+int attr isAsciiCapable 0x010103e9
+int attr isAuxiliary 0x0101037f
+int attr isDefault 0x01010221
+int attr isFeatureSplit 0x0101055b
+int attr isGame 0x010103f4
+int attr isIndicator 0x01010147
+int attr isModifier 0x01010246
+int attr isRepeatable 0x01010248
+int attr isScrollContainer 0x0101024e
+int attr isStatic 0x0101055a
+int attr isSticky 0x01010247
+int attr isolatedProcess 0x010103a9
+int attr isolatedSplits 0x0101054b
+int attr itemBackground 0x01010130
+int attr itemIconDisabledAlpha 0x01010131
+int attr itemPadding 0x0101032d
+int attr itemTextAppearance 0x0101012c
+int attr justificationMode 0x01010567
+int attr keepScreenOn 0x01010216
+int attr key 0x010101e8
+int attr keyBackground 0x01010233
+int attr keyEdgeFlags 0x01010245
+int attr keyHeight 0x0101023e
+int attr keyIcon 0x0101024c
+int attr keyLabel 0x0101024b
+int attr keyOutputText 0x0101024a
+int attr keyPreviewHeight 0x01010239
+int attr keyPreviewLayout 0x01010237
+int attr keyPreviewOffset 0x01010238
+int attr keySet 0x010103db
+int attr keyTextColor 0x01010236
+int attr keyTextSize 0x01010234
+int attr keyWidth 0x0101023d
+int attr keyboardLayout 0x010103ab
+int attr keyboardMode 0x0101024d
+int attr keyboardNavigationCluster 0x01010540
+int attr keycode 0x010100c5
+int attr killAfterRestore 0x0101029c
+int attr label 0x01010001
+int attr labelFor 0x010103c6
+int attr labelTextSize 0x01010235
+int attr languageTag 0x01010508
+int attr largeHeap 0x0101035a
+int attr largeScreens 0x01010286
+int attr largestWidthLimitDp 0x01010366
+int attr launchMode 0x0101001d
+int attr launchTaskBehindSourceAnimation 0x01010492
+int attr launchTaskBehindTargetAnimation 0x01010491
+int attr layerType 0x01010354
+int attr layout 0x010100f2
+int attr layoutAnimation 0x010100ec
+int attr layoutDirection 0x010103b2
+int attr layoutMode 0x010103da
+int attr layout_above 0x01010184
+int attr layout_alignBaseline 0x01010186
+int attr layout_alignBottom 0x0101018a
+int attr layout_alignEnd 0x010103ba
+int attr layout_alignLeft 0x01010187
+int attr layout_alignParentBottom 0x0101018e
+int attr layout_alignParentEnd 0x010103bc
+int attr layout_alignParentLeft 0x0101018b
+int attr layout_alignParentRight 0x0101018d
+int attr layout_alignParentStart 0x010103bb
+int attr layout_alignParentTop 0x0101018c
+int attr layout_alignRight 0x01010189
+int attr layout_alignStart 0x010103b9
+int attr layout_alignTop 0x01010188
+int attr layout_alignWithParentIfMissing 0x01010192
+int attr layout_below 0x01010185
+int attr layout_centerHorizontal 0x01010190
+int attr layout_centerInParent 0x0101018f
+int attr layout_centerVertical 0x01010191
+int attr layout_column 0x0101014c
+int attr layout_columnSpan 0x0101037d
+int attr layout_columnWeight 0x01010459
+int attr layout_gravity 0x010100b3
+int attr layout_height 0x010100f5
+int attr layout_margin 0x010100f6
+int attr layout_marginBottom 0x010100fa
+int attr layout_marginEnd 0x010103b6
+int attr layout_marginHorizontal 0x0101053b
+int attr layout_marginLeft 0x010100f7
+int attr layout_marginRight 0x010100f9
+int attr layout_marginStart 0x010103b5
+int attr layout_marginTop 0x010100f8
+int attr layout_marginVertical 0x0101053c
+int attr layout_row 0x0101037b
+int attr layout_rowSpan 0x0101037c
+int attr layout_rowWeight 0x01010458
+int attr layout_scale 0x01010193
+int attr layout_span 0x0101014d
+int attr layout_toEndOf 0x010103b8
+int attr layout_toLeftOf 0x01010182
+int attr layout_toRightOf 0x01010183
+int attr layout_toStartOf 0x010103b7
+int attr layout_weight 0x01010181
+int attr layout_width 0x010100f4
+int attr layout_x 0x0101017f
+int attr layout_y 0x01010180
+int attr left 0x010101ad
+int attr letterSpacing 0x010104b6
+int attr level 0x01010500
+int attr lineSpacingExtra 0x01010217
+int attr lineSpacingMultiplier 0x01010218
+int attr lines 0x01010154
+int attr linksClickable 0x010100b1
+int attr listChoiceBackgroundIndicator 0x010102f0
+int attr listChoiceIndicatorMultiple 0x0101021a
+int attr listChoiceIndicatorSingle 0x01010219
+int attr listDivider 0x01010214
+int attr listDividerAlertDialog 0x01010305
+int attr listMenuViewStyle 0x010104f2
+int attr listPopupWindowStyle 0x010102ff
+int attr listPreferredItemHeight 0x0101004d
+int attr listPreferredItemHeightLarge 0x01010386
+int attr listPreferredItemHeightSmall 0x01010387
+int attr listPreferredItemPaddingEnd 0x010103be
+int attr listPreferredItemPaddingLeft 0x010103a3
+int attr listPreferredItemPaddingRight 0x010103a4
+int attr listPreferredItemPaddingStart 0x010103bd
+int attr listSelector 0x010100fb
+int attr listSeparatorTextViewStyle 0x01010208
+int attr listViewStyle 0x01010074
+int attr listViewWhiteStyle 0x01010075
+int attr lockTaskMode 0x010104ed
+int attr logo 0x010102be
+int attr logoDescription 0x010104e9
+int attr longClickable 0x010100e6
+int attr loopViews 0x01010307
+int attr manageSpaceActivity 0x01010004
+int attr mapViewStyle 0x0101008a
+int attr marqueeRepeatLimit 0x0101021d
+int attr matchOrder 0x0101044f
+int attr max 0x01010136
+int attr maxAspectRatio 0x01010560
+int attr maxButtonHeight 0x010104fd
+int attr maxDate 0x01010340
+int attr maxEms 0x01010157
+int attr maxHeight 0x01010120
+int attr maxItemsPerRow 0x01010134
+int attr maxLength 0x01010160
+int attr maxLevel 0x010101b2
+int attr maxLines 0x01010153
+int attr maxRecents 0x01010446
+int attr maxRows 0x01010133
+int attr maxSdkVersion 0x01010271
+int attr maxWidth 0x0101011f
+int attr maximumAngle 0x0101047f
+int attr measureAllChildren 0x0101010a
+int attr measureWithLargestChild 0x010102d4
+int attr mediaRouteButtonStyle 0x010103ad
+int attr mediaRouteTypes 0x010103ae
+int attr menuCategory 0x010101de
+int attr mimeType 0x01010026
+int attr min 0x01010539
+int attr minDate 0x0101033f
+int attr minEms 0x0101015a
+int attr minHeight 0x01010140
+int attr minLevel 0x010101b1
+int attr minLines 0x01010156
+int attr minResizeHeight 0x01010396
+int attr minResizeWidth 0x01010395
+int attr minSdkVersion 0x0101020c
+int attr minWidth 0x0101013f
+int attr minimumHorizontalAngle 0x0101047d
+int attr minimumVerticalAngle 0x0101047e
+int attr mipMap 0x010103cd
+int attr mirrorForRtl 0x010103ce
+int attr mode 0x0101017e
+int attr moreIcon 0x01010135
+int attr multiArch 0x0101048e
+int attr multiprocess 0x01010013
+int attr name 0x01010003
+int attr navigationBarColor 0x01010452
+int attr navigationContentDescription 0x010104c1
+int attr navigationIcon 0x010104c0
+int attr navigationMode 0x010102cf
+int attr negativeButtonText 0x010101f6
+int attr nestedScrollingEnabled 0x01010436
+int attr networkSecurityConfig 0x01010527
+int attr nextClusterForward 0x01010542
+int attr nextFocusDown 0x010100e4
+int attr nextFocusForward 0x0101033c
+int attr nextFocusLeft 0x010100e1
+int attr nextFocusRight 0x010100e2
+int attr nextFocusUp 0x010100e3
+int attr noHistory 0x0101022d
+int attr normalScreens 0x01010285
+int attr notificationTimeout 0x01010383
+int attr numColumns 0x01010118
+int attr numStars 0x01010144
+int attr numberPickerStyle 0x01010524
+int attr numbersBackgroundColor 0x010104a2
+int attr numbersInnerTextColor 0x010104e1
+int attr numbersSelectorColor 0x010104a3
+int attr numbersTextColor 0x010104a1
+int attr numeric 0x01010165
+int attr numericModifiers 0x0101054f
+int attr numericShortcut 0x010101e4
+int attr offset 0x01010514
+int attr onClick 0x0101026f
+int attr oneshot 0x01010197
+int attr opacity 0x0101031e
+int attr order 0x010101ea
+int attr orderInCategory 0x010101df
+int attr ordering 0x010102e2
+int attr orderingFromXml 0x010101e7
+int attr orientation 0x010100c4
+int attr outAnimation 0x01010178
+int attr outlineProvider 0x010104b8
+int attr overScrollFooter 0x010102c3
+int attr overScrollHeader 0x010102c2
+int attr overScrollMode 0x010102c1
+int attr overlapAnchor 0x01010462
+int attr overridesImplicitlyEnabledSubtype 0x010103a2
+int attr packageNames 0x01010381
+int attr padding 0x010100d5
+int attr paddingBottom 0x010100d9
+int attr paddingEnd 0x010103b4
+int attr paddingHorizontal 0x0101053d
+int attr paddingLeft 0x010100d6
+int attr paddingMode 0x01010457
+int attr paddingRight 0x010100d8
+int attr paddingStart 0x010103b3
+int attr paddingTop 0x010100d7
+int attr paddingVertical 0x0101053e
+int attr panelBackground 0x0101005e
+int attr panelColorBackground 0x01010061
+int attr panelColorForeground 0x01010060
+int attr panelFullBackground 0x0101005f
+int attr panelTextAppearance 0x01010062
+int attr parentActivityName 0x010103a7
+int attr password 0x0101015c
+int attr path 0x0101002a
+int attr pathData 0x01010405
+int attr pathPattern 0x0101002c
+int attr pathPrefix 0x0101002b
+int attr patternPathData 0x010104ca
+int attr permission 0x01010006
+int attr permissionFlags 0x010103c7
+int attr permissionGroup 0x0101000a
+int attr permissionGroupFlags 0x010103c5
+int attr persistableMode 0x0101042d
+int attr persistent 0x0101000d
+int attr persistentDrawingCache 0x010100ee
+int attr persistentWhenFeatureAvailable 0x01010563
+int attr phoneNumber 0x01010167
+int attr pivotX 0x010101b5
+int attr pivotY 0x010101b6
+int attr pointerIcon 0x01010509
+int attr popupAnimationStyle 0x010102c9
+int attr popupBackground 0x01010176
+int attr popupCharacters 0x01010244
+int attr popupElevation 0x0101048c
+int attr popupEnterTransition 0x0101051f
+int attr popupExitTransition 0x01010520
+int attr popupKeyboard 0x01010243
+int attr popupLayout 0x0101023b
+int attr popupMenuStyle 0x01010300
+int attr popupTheme 0x010104a9
+int attr popupWindowStyle 0x01010076
+int attr port 0x01010029
+int attr positiveButtonText 0x010101f5
+int attr preferenceCategoryStyle 0x0101008c
+int attr preferenceFragmentStyle 0x01010506
+int attr preferenceInformationStyle 0x0101008d
+int attr preferenceLayoutChild 0x01010094
+int attr preferenceScreenStyle 0x0101008b
+int attr preferenceStyle 0x0101008e
+int attr presentationTheme 0x010103c0
+int attr previewImage 0x010102da
+int attr primaryContentAlpha 0x01010552
+int attr priority 0x0101001c
+int attr privateImeOptions 0x01010223
+int attr process 0x01010011
+int attr progress 0x01010137
+int attr progressBackgroundTint 0x01010465
+int attr progressBackgroundTintMode 0x01010466
+int attr progressBarPadding 0x01010319
+int attr progressBarStyle 0x01010077
+int attr progressBarStyleHorizontal 0x01010078
+int attr progressBarStyleInverse 0x01010287
+int attr progressBarStyleLarge 0x0101007a
+int attr progressBarStyleLargeInverse 0x01010289
+int attr progressBarStyleSmall 0x01010079
+int attr progressBarStyleSmallInverse 0x01010288
+int attr progressBarStyleSmallTitle 0x0101020f
+int attr progressDrawable 0x0101013c
+int attr progressTint 0x01010463
+int attr progressTintMode 0x01010464
+int attr prompt 0x0101017b
+int attr propertyName 0x010102e1
+int attr propertyXName 0x01010474
+int attr propertyYName 0x01010475
+int attr protectionLevel 0x01010009
+int attr publicKey 0x010103a6
+int attr queryActionMsg 0x010101db
+int attr queryAfterZeroResults 0x01010282
+int attr queryBackground 0x01010487
+int attr queryHint 0x01010358
+int attr quickContactBadgeStyleSmallWindowLarge 0x010102b3
+int attr quickContactBadgeStyleSmallWindowMedium 0x010102b2
+int attr quickContactBadgeStyleSmallWindowSmall 0x010102b1
+int attr quickContactBadgeStyleWindowLarge 0x010102b0
+int attr quickContactBadgeStyleWindowMedium 0x010102af
+int attr quickContactBadgeStyleWindowSmall 0x010102ae
+int attr radioButtonStyle 0x0101007e
+int attr radius 0x010101a8
+int attr rating 0x01010145
+int attr ratingBarStyle 0x0101007c
+int attr ratingBarStyleIndicator 0x01010210
+int attr ratingBarStyleSmall 0x0101007d
+int attr readPermission 0x01010007
+int attr recognitionService 0x0101049c
+int attr recreateOnConfigChanges 0x01010547
+int attr recycleEnabled 0x01010559
+int attr relinquishTaskIdentity 0x01010476
+int attr reparent 0x010104bc
+int attr reparentWithOverlay 0x010104bd
+int attr repeatCount 0x010101bf
+int attr repeatMode 0x010101c0
+int attr reqFiveWayNav 0x01010232
+int attr reqHardKeyboard 0x01010229
+int attr reqKeyboardType 0x01010228
+int attr reqNavigation 0x0101022a
+int attr reqTouchScreen 0x01010227
+int attr requireDeviceUnlock 0x010103ec
+int attr required 0x0101028e
+int attr requiredAccountType 0x010103d6
+int attr requiredFeature 0x01010554
+int attr requiredForAllUsers 0x010103d0
+int attr requiredNotFeature 0x01010555
+int attr requiresFadingEdge 0x010103a5
+int attr requiresSmallestWidthDp 0x01010364
+int attr resizeClip 0x010104cf
+int attr resizeMode 0x01010363
+int attr resizeable 0x0101028d
+int attr resizeableActivity 0x010104f6
+int attr resource 0x01010025
+int attr restoreAnyVersion 0x010102ba
+int attr restoreNeedsApplication 0x0101029d
+int attr restrictedAccountType 0x010103d5
+int attr restrictionType 0x01010493
+int attr resumeWhilePausing 0x010104b2
+int attr reversible 0x0101044b
+int attr revisionCode 0x010104d5
+int attr right 0x010101af
+int attr ringtonePreferenceStyle 0x01010093
+int attr ringtoneType 0x010101f9
+int attr rotation 0x01010326
+int attr rotationAnimation 0x0101053a
+int attr rotationX 0x01010327
+int attr rotationY 0x01010328
+int attr roundIcon 0x0101052c
+int attr rowCount 0x01010375
+int attr rowDelay 0x010101d0
+int attr rowEdgeFlags 0x01010241
+int attr rowHeight 0x01010132
+int attr rowOrderPreserved 0x01010376
+int attr saveEnabled 0x010100e7
+int attr scaleGravity 0x010101fe
+int attr scaleHeight 0x010101fd
+int attr scaleType 0x0101011d
+int attr scaleWidth 0x010101fc
+int attr scaleX 0x01010324
+int attr scaleY 0x01010325
+int attr scheme 0x01010027
+int attr screenDensity 0x010102cb
+int attr screenOrientation 0x0101001e
+int attr screenSize 0x010102ca
+int attr scrollHorizontally 0x0101015b
+int attr scrollIndicators 0x010104e6
+int attr scrollViewStyle 0x01010080
+int attr scrollX 0x010100d2
+int attr scrollY 0x010100d3
+int attr scrollbarAlwaysDrawHorizontalTrack 0x01010068
+int attr scrollbarAlwaysDrawVerticalTrack 0x01010069
+int attr scrollbarDefaultDelayBeforeFade 0x010102a9
+int attr scrollbarFadeDuration 0x010102a8
+int attr scrollbarSize 0x01010063
+int attr scrollbarStyle 0x0101007f
+int attr scrollbarThumbHorizontal 0x01010064
+int attr scrollbarThumbVertical 0x01010065
+int attr scrollbarTrackHorizontal 0x01010066
+int attr scrollbarTrackVertical 0x01010067
+int attr scrollbars 0x010100de
+int attr scrollingCache 0x010100fe
+int attr searchButtonText 0x01010205
+int attr searchHintIcon 0x010104d4
+int attr searchIcon 0x01010483
+int attr searchMode 0x010101d5
+int attr searchSettingsDescription 0x0101028a
+int attr searchSuggestAuthority 0x010101d6
+int attr searchSuggestIntentAction 0x010101d9
+int attr searchSuggestIntentData 0x010101da
+int attr searchSuggestPath 0x010101d7
+int attr searchSuggestSelection 0x010101d8
+int attr searchSuggestThreshold 0x0101026d
+int attr searchViewStyle 0x01010480
+int attr secondaryContentAlpha 0x01010553
+int attr secondaryProgress 0x01010138
+int attr secondaryProgressTint 0x01010467
+int attr secondaryProgressTintMode 0x01010468
+int attr seekBarStyle 0x0101007b
+int attr segmentedButtonStyle 0x01010330
+int attr selectAllOnFocus 0x0101015e
+int attr selectable 0x010101e6
+int attr selectableItemBackground 0x0101030e
+int attr selectableItemBackgroundBorderless 0x0101045c
+int attr selectedDateVerticalBar 0x01010347
+int attr selectedWeekBackgroundColor 0x01010342
+int attr sessionService 0x0101043d
+int attr settingsActivity 0x01010225
+int attr setupActivity 0x010103f6
+int attr shadowColor 0x01010161
+int attr shadowDx 0x01010162
+int attr shadowDy 0x01010163
+int attr shadowRadius 0x01010164
+int attr shape 0x0101019a
+int attr shareInterpolator 0x010101bb
+int attr sharedUserId 0x0101000b
+int attr sharedUserLabel 0x01010261
+int attr shortcutDisabledMessage 0x0101052b
+int attr shortcutId 0x01010528
+int attr shortcutLongLabel 0x0101052a
+int attr shortcutShortLabel 0x01010529
+int attr shouldDisableView 0x010101ee
+int attr showAsAction 0x010102d9
+int attr showDefault 0x010101fa
+int attr showDividers 0x01010329
+int attr showForAllUsers 0x010104ef
+int attr showMetadataInPreview 0x0101052f
+int attr showOnLockScreen 0x010103c9
+int attr showSilent 0x010101fb
+int attr showText 0x010104ad
+int attr showWeekNumber 0x0101033e
+int attr shownWeekCount 0x01010341
+int attr shrinkColumns 0x0101014a
+int attr singleLine 0x0101015d
+int attr singleLineTitle 0x0101055c
+int attr singleUser 0x010103bf
+int attr slideEdge 0x01010430
+int attr smallIcon 0x0101029e
+int attr smallScreens 0x01010284
+int attr smoothScrollbar 0x01010231
+int attr soundEffectsEnabled 0x01010215
+int attr spacing 0x01010113
+int attr spinnerDropDownItemStyle 0x01010087
+int attr spinnerItemStyle 0x01010089
+int attr spinnerMode 0x010102f1
+int attr spinnerStyle 0x01010081
+int attr spinnersShown 0x0101034b
+int attr splitMotionEvents 0x010102ef
+int attr splitName 0x01010549
+int attr splitTrack 0x0101044c
+int attr spotShadowAlpha 0x010104bf
+int attr src 0x01010119
+int attr ssp 0x010103e3
+int attr sspPattern 0x010103e5
+int attr sspPrefix 0x010103e4
+int attr stackFromBottom 0x010100fd
+int attr stackViewStyle 0x0101043e
+int attr starStyle 0x01010082
+int attr start 0x010104db
+int attr startColor 0x0101019d
+int attr startDelay 0x010103e2
+int attr startOffset 0x010101be
+int attr startX 0x01010510
+int attr startY 0x01010511
+int attr startYear 0x0101017c
+int attr stateListAnimator 0x01010448
+int attr stateNotNeeded 0x01010016
+int attr state_above_anchor 0x010100aa
+int attr state_accelerated 0x0101031b
+int attr state_activated 0x010102fe
+int attr state_active 0x010100a2
+int attr state_checkable 0x0101009f
+int attr state_checked 0x010100a0
+int attr state_drag_can_accept 0x01010368
+int attr state_drag_hovered 0x01010369
+int attr state_empty 0x010100a9
+int attr state_enabled 0x0101009e
+int attr state_expanded 0x010100a8
+int attr state_first 0x010100a4
+int attr state_focused 0x0101009c
+int attr state_hovered 0x01010367
+int attr state_last 0x010100a6
+int attr state_long_pressable 0x0101023c
+int attr state_middle 0x010100a5
+int attr state_multiline 0x0101034d
+int attr state_pressed 0x010100a7
+int attr state_selected 0x010100a1
+int attr state_single 0x010100a3
+int attr state_window_focused 0x0101009d
+int attr staticWallpaperPreview 0x01010331
+int attr statusBarColor 0x01010451
+int attr stepSize 0x01010146
+int attr stopWithTask 0x0101036a
+int attr streamType 0x01010209
+int attr stretchColumns 0x01010149
+int attr stretchMode 0x01010116
+int attr strokeAlpha 0x010104cb
+int attr strokeColor 0x01010406
+int attr strokeLineCap 0x0101040b
+int attr strokeLineJoin 0x0101040c
+int attr strokeMiterLimit 0x0101040d
+int attr strokeWidth 0x01010407
+int attr subMenuArrow 0x010104f3
+int attr submitBackground 0x01010488
+int attr subtitle 0x010102d1
+int attr subtitleTextAppearance 0x0101042f
+int attr subtitleTextColor 0x010104e4
+int attr subtitleTextStyle 0x010102f9
+int attr subtypeExtraValue 0x0101039a
+int attr subtypeId 0x010103c1
+int attr subtypeLocale 0x01010399
+int attr suggestActionMsg 0x010101dc
+int attr suggestActionMsgColumn 0x010101dd
+int attr suggestionRowLayout 0x01010486
+int attr summary 0x010101e9
+int attr summaryColumn 0x010102a2
+int attr summaryOff 0x010101f0
+int attr summaryOn 0x010101ef
+int attr supportsAssist 0x010104f0
+int attr supportsLaunchVoiceAssistFromKeyguard 0x010104f1
+int attr supportsLocalInteraction 0x0101050f
+int attr supportsPictureInPicture 0x010104f7
+int attr supportsRtl 0x010103af
+int attr supportsSwitchingToNextInputMethod 0x010103eb
+int attr supportsUploading 0x0101029b
+int attr switchMinWidth 0x01010370
+int attr switchPadding 0x01010371
+int attr switchPreferenceStyle 0x0101036d
+int attr switchStyle 0x0101043f
+int attr switchTextAppearance 0x0101036e
+int attr switchTextOff 0x0101036c
+int attr switchTextOn 0x0101036b
+int attr syncable 0x01010019
+int attr tabStripEnabled 0x010102bd
+int attr tabStripLeft 0x010102bb
+int attr tabStripRight 0x010102bc
+int attr tabWidgetStyle 0x01010083
+int attr tag 0x010100d1
+int attr targetActivity 0x01010202
+int attr targetClass 0x0101002f
+int attr targetDescriptions 0x010103a0
+int attr targetId 0x010103dc
+int attr targetName 0x0101044d
+int attr targetPackage 0x01010021
+int attr targetProcesses 0x01010541
+int attr targetSandboxVersion 0x0101054c
+int attr targetSdkVersion 0x01010270
+int attr taskAffinity 0x01010012
+int attr taskCloseEnterAnimation 0x010100be
+int attr taskCloseExitAnimation 0x010100bf
+int attr taskOpenEnterAnimation 0x010100bc
+int attr taskOpenExitAnimation 0x010100bd
+int attr taskToBackEnterAnimation 0x010100c2
+int attr taskToBackExitAnimation 0x010100c3
+int attr taskToFrontEnterAnimation 0x010100c0
+int attr taskToFrontExitAnimation 0x010100c1
+int attr tension 0x0101026a
+int attr testOnly 0x01010272
+int attr text 0x0101014f
+int attr textAlignment 0x010103b1
+int attr textAllCaps 0x0101038c
+int attr textAppearance 0x01010034
+int attr textAppearanceButton 0x01010207
+int attr textAppearanceInverse 0x01010035
+int attr textAppearanceLarge 0x01010040
+int attr textAppearanceLargeInverse 0x01010043
+int attr textAppearanceLargePopupMenu 0x01010301
+int attr textAppearanceListItem 0x0101039e
+int attr textAppearanceListItemSecondary 0x01010432
+int attr textAppearanceListItemSmall 0x0101039f
+int attr textAppearanceMedium 0x01010041
+int attr textAppearanceMediumInverse 0x01010044
+int attr textAppearancePopupMenuHeader 0x01010502
+int attr textAppearanceSearchResultSubtitle 0x010102a0
+int attr textAppearanceSearchResultTitle 0x010102a1
+int attr textAppearanceSmall 0x01010042
+int attr textAppearanceSmallInverse 0x01010045
+int attr textAppearanceSmallPopupMenu 0x01010302
+int attr textCheckMark 0x01010046
+int attr textCheckMarkInverse 0x01010047
+int attr textColor 0x01010098
+int attr textColorAlertDialogListItem 0x01010306
+int attr textColorHighlight 0x01010099
+int attr textColorHighlightInverse 0x0101034f
+int attr textColorHint 0x0101009a
+int attr textColorHintInverse 0x0101003f
+int attr textColorLink 0x0101009b
+int attr textColorLinkInverse 0x01010350
+int attr textColorPrimary 0x01010036
+int attr textColorPrimaryDisableOnly 0x01010037
+int attr textColorPrimaryInverse 0x01010039
+int attr textColorPrimaryInverseDisableOnly 0x0101028b
+int attr textColorPrimaryInverseNoDisable 0x0101003d
+int attr textColorPrimaryNoDisable 0x0101003b
+int attr textColorSecondary 0x01010038
+int attr textColorSecondaryInverse 0x0101003a
+int attr textColorSecondaryInverseNoDisable 0x0101003e
+int attr textColorSecondaryNoDisable 0x0101003c
+int attr textColorTertiary 0x01010212
+int attr textColorTertiaryInverse 0x01010213
+int attr textCursorDrawable 0x01010362
+int attr textDirection 0x010103b0
+int attr textEditNoPasteWindowLayout 0x01010315
+int attr textEditPasteWindowLayout 0x01010314
+int attr textEditSideNoPasteWindowLayout 0x0101035f
+int attr textEditSidePasteWindowLayout 0x0101035e
+int attr textEditSuggestionItemLayout 0x01010374
+int attr textFilterEnabled 0x010100ff
+int attr textIsSelectable 0x01010316
+int attr textOff 0x01010125
+int attr textOn 0x01010124
+int attr textScaleX 0x01010151
+int attr textSelectHandle 0x010102c7
+int attr textSelectHandleLeft 0x010102c5
+int attr textSelectHandleRight 0x010102c6
+int attr textSelectHandleWindowStyle 0x010102c8
+int attr textSize 0x01010095
+int attr textStyle 0x01010097
+int attr textSuggestionsWindowStyle 0x01010373
+int attr textViewStyle 0x01010084
+int attr theme 0x01010000
+int attr thickness 0x01010260
+int attr thicknessRatio 0x0101019c
+int attr thumb 0x01010142
+int attr thumbOffset 0x01010143
+int attr thumbPosition 0x010104e5
+int attr thumbTextPadding 0x01010372
+int attr thumbTint 0x01010471
+int attr thumbTintMode 0x01010472
+int attr thumbnail 0x010102a5
+int attr tickMark 0x0101050a
+int attr tickMarkTint 0x0101050b
+int attr tickMarkTintMode 0x0101050c
+int attr tileMode 0x01010201
+int attr tileModeX 0x01010477
+int attr tileModeY 0x01010478
+int attr timePickerDialogTheme 0x0101049e
+int attr timePickerMode 0x010104b4
+int attr timePickerStyle 0x0101049d
+int attr timeZone 0x010103cc
+int attr tint 0x01010121
+int attr tintMode 0x010103fb
+int attr title 0x010101e1
+int attr titleCondensed 0x010101e2
+int attr titleMargin 0x010104f8
+int attr titleMarginBottom 0x010104fc
+int attr titleMarginEnd 0x010104fa
+int attr titleMarginStart 0x010104f9
+int attr titleMarginTop 0x010104fb
+int attr titleTextAppearance 0x0101042e
+int attr titleTextColor 0x010104e3
+int attr titleTextStyle 0x010102f8
+int attr toAlpha 0x010101cb
+int attr toDegrees 0x010101b4
+int attr toId 0x01010449
+int attr toScene 0x010103de
+int attr toXDelta 0x010101c7
+int attr toXScale 0x010101c3
+int attr toYDelta 0x010101c9
+int attr toYScale 0x010101c5
+int attr toolbarStyle 0x010104aa
+int attr tooltipText 0x01010534
+int attr top 0x010101ae
+int attr topBright 0x010100cb
+int attr topDark 0x010100c7
+int attr topLeftRadius 0x010101a9
+int attr topOffset 0x01010258
+int attr topRightRadius 0x010101aa
+int attr touchscreenBlocksFocus 0x0101048f
+int attr track 0x0101036f
+int attr trackTint 0x010104d9
+int attr trackTintMode 0x010104da
+int attr transcriptMode 0x01010100
+int attr transformPivotX 0x01010320
+int attr transformPivotY 0x01010321
+int attr transition 0x010103df
+int attr transitionGroup 0x01010401
+int attr transitionName 0x01010400
+int attr transitionOrdering 0x010103e0
+int attr transitionVisibilityMode 0x0101047c
+int attr translateX 0x0101045a
+int attr translateY 0x0101045b
+int attr translationX 0x01010322
+int attr translationY 0x01010323
+int attr translationZ 0x010103fa
+int attr trimPathEnd 0x01010409
+int attr trimPathOffset 0x0101040a
+int attr trimPathStart 0x01010408
+int attr tunerCount 0x0101051d
+int attr type 0x010101a1
+int attr typeface 0x01010096
+int attr uiOptions 0x01010398
+int attr uncertainGestureColor 0x01010276
+int attr unfocusedMonthDateColor 0x01010344
+int attr unselectedAlpha 0x0101020e
+int attr updatePeriodMillis 0x01010250
+int attr use32bitAbi 0x01010515
+int attr useDefaultMargins 0x01010379
+int attr useIntrinsicSizeAsMinimum 0x01010310
+int attr useLevel 0x0101019f
+int attr userVisible 0x01010291
+int attr usesCleartextTraffic 0x010104ec
+int attr value 0x01010024
+int attr valueFrom 0x010102de
+int attr valueTo 0x010102df
+int attr valueType 0x010102e0
+int attr variablePadding 0x01010195
+int attr vendor 0x010103e7
+int attr version 0x01010519
+int attr versionCode 0x0101021b
+int attr versionName 0x0101021c
+int attr verticalCorrection 0x0101023a
+int attr verticalDivider 0x0101012e
+int attr verticalGap 0x01010240
+int attr verticalScrollbarPosition 0x01010334
+int attr verticalSpacing 0x01010115
+int attr viewportHeight 0x01010403
+int attr viewportWidth 0x01010402
+int attr visibility 0x010100dc
+int attr visible 0x01010194
+int attr visibleToInstantApps 0x01010531
+int attr vmSafeMode 0x010102b8
+int attr voiceIcon 0x01010484
+int attr voiceLanguage 0x01010255
+int attr voiceLanguageModel 0x01010253
+int attr voiceMaxResults 0x01010256
+int attr voicePromptText 0x01010254
+int attr voiceSearchMode 0x01010252
+int attr wallpaperCloseEnterAnimation 0x01010295
+int attr wallpaperCloseExitAnimation 0x01010296
+int attr wallpaperIntraCloseEnterAnimation 0x01010299
+int attr wallpaperIntraCloseExitAnimation 0x0101029a
+int attr wallpaperIntraOpenEnterAnimation 0x01010297
+int attr wallpaperIntraOpenExitAnimation 0x01010298
+int attr wallpaperOpenEnterAnimation 0x01010293
+int attr wallpaperOpenExitAnimation 0x01010294
+int attr webTextViewStyle 0x010102b9
+int attr webViewStyle 0x01010085
+int attr weekDayTextAppearance 0x01010348
+int attr weekNumberColor 0x01010345
+int attr weekSeparatorLineColor 0x01010346
+int attr weightSum 0x01010128
+int attr widgetCategory 0x010103c4
+int attr widgetLayout 0x010101eb
+int attr width 0x01010159
+int attr windowActionBar 0x010102cd
+int attr windowActionBarOverlay 0x010102e4
+int attr windowActionModeOverlay 0x010102dd
+int attr windowActivityTransitions 0x010104cd
+int attr windowAllowEnterTransitionOverlap 0x0101043c
+int attr windowAllowReturnTransitionOverlap 0x0101043b
+int attr windowAnimationStyle 0x010100ae
+int attr windowBackground 0x01010054
+int attr windowBackgroundFallback 0x01010503
+int attr windowClipToOutline 0x010104ab
+int attr windowCloseOnTouchOutside 0x0101035b
+int attr windowContentOverlay 0x01010059
+int attr windowContentTransitionManager 0x010103f9
+int attr windowContentTransitions 0x010103f8
+int attr windowDisablePreview 0x01010222
+int attr windowDrawsSystemBarBackgrounds 0x01010450
+int attr windowElevation 0x01010490
+int attr windowEnableSplitTouch 0x01010317
+int attr windowEnterAnimation 0x010100b4
+int attr windowEnterTransition 0x01010437
+int attr windowExitAnimation 0x010100b5
+int attr windowExitTransition 0x01010438
+int attr windowFrame 0x01010055
+int attr windowFullscreen 0x0101020d
+int attr windowHideAnimation 0x010100b7
+int attr windowIsFloating 0x01010057
+int attr windowIsTranslucent 0x01010058
+int attr windowLightStatusBar 0x010104e0
+int attr windowMinWidthMajor 0x01010356
+int attr windowMinWidthMinor 0x01010357
+int attr windowNoDisplay 0x0101021e
+int attr windowNoTitle 0x01010056
+int attr windowOverscan 0x010103cf
+int attr windowReenterTransition 0x010104af
+int attr windowReturnTransition 0x010104ae
+int attr windowSharedElementEnterTransition 0x01010439
+int attr windowSharedElementExitTransition 0x0101043a
+int attr windowSharedElementReenterTransition 0x010104b1
+int attr windowSharedElementReturnTransition 0x010104b0
+int attr windowSharedElementsUseOverlay 0x010104bb
+int attr windowShowAnimation 0x010100b6
+int attr windowShowWallpaper 0x01010292
+int attr windowSoftInputMode 0x0101022b
+int attr windowSplashscreenContent 0x01010564
+int attr windowSwipeToDismiss 0x010103f3
+int attr windowTitleBackgroundStyle 0x0101005c
+int attr windowTitleSize 0x0101005a
+int attr windowTitleStyle 0x0101005b
+int attr windowTransitionBackgroundFadeDuration 0x01010461
+int attr windowTranslucentNavigation 0x010103f0
+int attr windowTranslucentStatus 0x010103ef
+int attr writePermission 0x01010008
+int attr x 0x010100ac
+int attr xlargeScreens 0x010102bf
+int attr y 0x010100ad
+int attr yearListItemTextAppearance 0x01010499
+int attr yearListSelectorColor 0x0101049a
+int attr yesNoPreferenceStyle 0x01010090
+int attr zAdjustment 0x010101c1
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/R.txt b/library_pullToRefresh/build/intermediates/bundles/debug/R.txt
new file mode 100644
index 0000000..dea95e1
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/R.txt
@@ -0,0 +1,75 @@
+int anim progresbar_anim 0x7f010001
+int anim refresh_view 0x7f010002
+int anim slide_in_from_bottom 0x7f010003
+int anim slide_in_from_top 0x7f010004
+int anim slide_out_to_bottom 0x7f010005
+int anim slide_out_to_top 0x7f010006
+int attr ptrAdapterViewBackground 0x7f040001
+int attr ptrAnimationStyle 0x7f040002
+int attr ptrDrawable 0x7f040003
+int attr ptrDrawableBottom 0x7f040004
+int attr ptrDrawableEnd 0x7f040005
+int attr ptrDrawableStart 0x7f040006
+int attr ptrDrawableTop 0x7f040007
+int attr ptrHeaderBackground 0x7f040008
+int attr ptrHeaderSubTextColor 0x7f040009
+int attr ptrHeaderTextAppearance 0x7f04000a
+int attr ptrHeaderTextColor 0x7f04000b
+int attr ptrListViewExtrasEnabled 0x7f04000c
+int attr ptrMode 0x7f04000d
+int attr ptrOverScroll 0x7f04000e
+int attr ptrRefreshableViewBackground 0x7f04000f
+int attr ptrRotateDrawableWhilePulling 0x7f040010
+int attr ptrScrollingWhileRefreshingEnabled 0x7f040011
+int attr ptrShowIndicator 0x7f040012
+int attr ptrSubHeaderTextAppearance 0x7f040013
+int dimen header_footer_left_right_padding 0x7f080001
+int dimen header_footer_top_bottom_padding 0x7f080002
+int dimen indicator_corner_radius 0x7f080003
+int dimen indicator_internal_padding 0x7f080004
+int dimen indicator_right_padding 0x7f080005
+int drawable default_ptr_rotate 0x7f090001
+int drawable indicator_arrow 0x7f090002
+int drawable indicator_bg_bottom 0x7f090003
+int drawable indicator_bg_top 0x7f090004
+int drawable loading_01 0x7f090005
+int drawable loading_02 0x7f090006
+int drawable loading_03 0x7f090007
+int drawable loading_04 0x7f090008
+int drawable refresh_anim 0x7f090009
+int id fl_inner 0x7f0c0001
+int id gridview 0x7f0c0002
+int id pull_to_refresh_image 0x7f0c0003
+int id pull_to_refresh_progress 0x7f0c0004
+int id pull_to_refresh_sub_text 0x7f0c0005
+int id pull_to_refresh_text 0x7f0c0006
+int id scrollview 0x7f0c0007
+int id webview 0x7f0c0008
+int layout pull_to_refresh_header_horizontal 0x7f0f0001
+int layout pull_to_refresh_header_vertical 0x7f0f0002
+int string pull_to_refresh_from_bottom_pull_label 0x7f150001
+int string pull_to_refresh_from_bottom_refreshing_label 0x7f150002
+int string pull_to_refresh_from_bottom_release_label 0x7f150003
+int string pull_to_refresh_pull_label 0x7f150004
+int string pull_to_refresh_refreshing_label 0x7f150005
+int string pull_to_refresh_release_label 0x7f150006
+int[] styleable PullToRefresh { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 }
+int styleable PullToRefresh_ptrAdapterViewBackground 0
+int styleable PullToRefresh_ptrAnimationStyle 1
+int styleable PullToRefresh_ptrDrawable 2
+int styleable PullToRefresh_ptrDrawableBottom 3
+int styleable PullToRefresh_ptrDrawableEnd 4
+int styleable PullToRefresh_ptrDrawableStart 5
+int styleable PullToRefresh_ptrDrawableTop 6
+int styleable PullToRefresh_ptrHeaderBackground 7
+int styleable PullToRefresh_ptrHeaderSubTextColor 8
+int styleable PullToRefresh_ptrHeaderTextAppearance 9
+int styleable PullToRefresh_ptrHeaderTextColor 10
+int styleable PullToRefresh_ptrListViewExtrasEnabled 11
+int styleable PullToRefresh_ptrMode 12
+int styleable PullToRefresh_ptrOverScroll 13
+int styleable PullToRefresh_ptrRefreshableViewBackground 14
+int styleable PullToRefresh_ptrRotateDrawableWhilePulling 15
+int styleable PullToRefresh_ptrScrollingWhileRefreshingEnabled 16
+int styleable PullToRefresh_ptrShowIndicator 17
+int styleable PullToRefresh_ptrSubHeaderTextAppearance 18
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/progresbar_anim.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/progresbar_anim.xml
new file mode 100644
index 0000000..9783fc6
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/progresbar_anim.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/refresh_view.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/refresh_view.xml
new file mode 100644
index 0000000..751d2da
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/refresh_view.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_bottom.xml
new file mode 100644
index 0000000..bb430ce
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_top.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_top.xml
new file mode 100644
index 0000000..52d91af
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_in_from_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_bottom.xml
new file mode 100644
index 0000000..83eca5a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_top.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_top.xml
new file mode 100644
index 0000000..5105ae1
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/anim/slide_out_to_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..dc641b7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..8ae7977
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-hdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..95b22bd
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..20fe2c1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-mdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..00225c9
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..810ff59
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_01.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_01.png
new file mode 100644
index 0000000..a833952
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_01.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_02.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_02.png
new file mode 100644
index 0000000..4cb3d40
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_02.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_03.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_03.png
new file mode 100644
index 0000000..aa3d0fa
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_03.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_04.png b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_04.png
new file mode 100644
index 0000000..c987a1b
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/loading_04.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_bottom.xml
new file mode 100644
index 0000000..81a91aa
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_bottom.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_top.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_top.xml
new file mode 100644
index 0000000..59fa9cf
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/indicator_bg_top.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/refresh_anim.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/refresh_anim.xml
new file mode 100644
index 0000000..8de1faa
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/drawable/refresh_anim.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_horizontal.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_horizontal.xml
new file mode 100644
index 0000000..f05bb03
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_horizontal.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_vertical.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_vertical.xml
new file mode 100644
index 0000000..31f4229
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/layout/pull_to_refresh_header_vertical.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ar/values-ar.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ar/values-ar.xml
new file mode 100644
index 0000000..7c621e0
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ar/values-ar.xml
@@ -0,0 +1,6 @@
+
+
+ اسحب للتحديث…
+ تحميل…
+ اترك للتحديث…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-cs/values-cs.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-cs/values-cs.xml
new file mode 100644
index 0000000..8c93d2f
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-cs/values-cs.xml
@@ -0,0 +1,6 @@
+
+
+ Tažením aktualizujete…
+ Načítání…
+ Uvolněním aktualizujete…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-de/values-de.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-de/values-de.xml
new file mode 100644
index 0000000..cf8ca26
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-de/values-de.xml
@@ -0,0 +1,6 @@
+
+
+ Ziehen zum Aktualisieren…
+ Laden…
+ Loslassen zum Aktualisieren…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-es/values-es.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-es/values-es.xml
new file mode 100644
index 0000000..774c075
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-es/values-es.xml
@@ -0,0 +1,6 @@
+
+
+ Tirar para actualizar…
+ Cargando…
+ Soltar para actualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fi/values-fi.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fi/values-fi.xml
new file mode 100644
index 0000000..573149e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fi/values-fi.xml
@@ -0,0 +1,9 @@
+
+
+ Päivitä vetämällä ylös…
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ Päivitä vetämällä alas…
+ Päivitetään…
+ Päivitä vapauttamalla…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fr/values-fr.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fr/values-fr.xml
new file mode 100644
index 0000000..0975919
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-fr/values-fr.xml
@@ -0,0 +1,6 @@
+
+
+ Tirez pour rafraîchir…
+ Chargement…
+ Relâcher pour rafraîchir…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-he/values-he.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-he/values-he.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-he/values-he.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-it/values-it.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-it/values-it.xml
new file mode 100644
index 0000000..325075b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-it/values-it.xml
@@ -0,0 +1,6 @@
+
+
+ Tira per aggiornare…
+ Caricamento…
+ Rilascia per aggionare…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-iw/values-iw.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-iw/values-iw.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-iw/values-iw.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ja/values-ja.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ja/values-ja.xml
new file mode 100644
index 0000000..45f6760
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ja/values-ja.xml
@@ -0,0 +1,6 @@
+
+
+ 画面を引っ張って…
+ 読み込み中…
+ 指を離して更新…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ko/values-ko.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ko/values-ko.xml
new file mode 100644
index 0000000..89c9ea3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ko/values-ko.xml
@@ -0,0 +1,6 @@
+
+
+ 당겨서 새로 고침…
+ 로드 중…
+ 놓아서 새로 고침…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-nl/values-nl.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-nl/values-nl.xml
new file mode 100644
index 0000000..70a3fe3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-nl/values-nl.xml
@@ -0,0 +1,6 @@
+
+
+ Sleep om te vernieuwen…
+ Laden…
+ Loslaten om te vernieuwen…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pl/values-pl.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pl/values-pl.xml
new file mode 100644
index 0000000..dbb5e3b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pl/values-pl.xml
@@ -0,0 +1,6 @@
+
+
+ Pociągnij, aby odświeżyć…
+ Wczytywanie…
+ Puść, aby odświeżyć…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt-rBR/values-pt-rBR.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt-rBR/values-pt-rBR.xml
new file mode 100644
index 0000000..9d00764
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt-rBR/values-pt-rBR.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Carregando…
+ Libere para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt/values-pt.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt/values-pt.xml
new file mode 100644
index 0000000..af108bd
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-pt/values-pt.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ A carregar…
+ Liberação para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ro/values-ro.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ro/values-ro.xml
new file mode 100644
index 0000000..ce3466a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ro/values-ro.xml
@@ -0,0 +1,6 @@
+
+
+ Trage pentru a reîmprospăta…
+ Încărcare…
+ Eliberează pentru a reîmprospăta…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ru/values-ru.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ru/values-ru.xml
new file mode 100644
index 0000000..7c2072e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-ru/values-ru.xml
@@ -0,0 +1,6 @@
+
+
+ Потяните для обновления…
+ Загрузка…
+ Отпустите для обновления…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values-zh/values-zh.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-zh/values-zh.xml
new file mode 100644
index 0000000..93d4129
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values-zh/values-zh.xml
@@ -0,0 +1,6 @@
+
+
+ 下拉刷新
+ 正在载入…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/debug/res/values/values.xml b/library_pullToRefresh/build/intermediates/bundles/debug/res/values/values.xml
new file mode 100644
index 0000000..570e8b3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/debug/res/values/values.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 24dp
+ 12dp
+ 12dp
+ 4dp
+ 10dp
+
+
+
+ @string/pull_to_refresh_pull_label
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ 下拉刷新
+ 正在刷新…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/R.txt b/library_pullToRefresh/build/intermediates/bundles/release/R.txt
new file mode 100644
index 0000000..dea95e1
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/R.txt
@@ -0,0 +1,75 @@
+int anim progresbar_anim 0x7f010001
+int anim refresh_view 0x7f010002
+int anim slide_in_from_bottom 0x7f010003
+int anim slide_in_from_top 0x7f010004
+int anim slide_out_to_bottom 0x7f010005
+int anim slide_out_to_top 0x7f010006
+int attr ptrAdapterViewBackground 0x7f040001
+int attr ptrAnimationStyle 0x7f040002
+int attr ptrDrawable 0x7f040003
+int attr ptrDrawableBottom 0x7f040004
+int attr ptrDrawableEnd 0x7f040005
+int attr ptrDrawableStart 0x7f040006
+int attr ptrDrawableTop 0x7f040007
+int attr ptrHeaderBackground 0x7f040008
+int attr ptrHeaderSubTextColor 0x7f040009
+int attr ptrHeaderTextAppearance 0x7f04000a
+int attr ptrHeaderTextColor 0x7f04000b
+int attr ptrListViewExtrasEnabled 0x7f04000c
+int attr ptrMode 0x7f04000d
+int attr ptrOverScroll 0x7f04000e
+int attr ptrRefreshableViewBackground 0x7f04000f
+int attr ptrRotateDrawableWhilePulling 0x7f040010
+int attr ptrScrollingWhileRefreshingEnabled 0x7f040011
+int attr ptrShowIndicator 0x7f040012
+int attr ptrSubHeaderTextAppearance 0x7f040013
+int dimen header_footer_left_right_padding 0x7f080001
+int dimen header_footer_top_bottom_padding 0x7f080002
+int dimen indicator_corner_radius 0x7f080003
+int dimen indicator_internal_padding 0x7f080004
+int dimen indicator_right_padding 0x7f080005
+int drawable default_ptr_rotate 0x7f090001
+int drawable indicator_arrow 0x7f090002
+int drawable indicator_bg_bottom 0x7f090003
+int drawable indicator_bg_top 0x7f090004
+int drawable loading_01 0x7f090005
+int drawable loading_02 0x7f090006
+int drawable loading_03 0x7f090007
+int drawable loading_04 0x7f090008
+int drawable refresh_anim 0x7f090009
+int id fl_inner 0x7f0c0001
+int id gridview 0x7f0c0002
+int id pull_to_refresh_image 0x7f0c0003
+int id pull_to_refresh_progress 0x7f0c0004
+int id pull_to_refresh_sub_text 0x7f0c0005
+int id pull_to_refresh_text 0x7f0c0006
+int id scrollview 0x7f0c0007
+int id webview 0x7f0c0008
+int layout pull_to_refresh_header_horizontal 0x7f0f0001
+int layout pull_to_refresh_header_vertical 0x7f0f0002
+int string pull_to_refresh_from_bottom_pull_label 0x7f150001
+int string pull_to_refresh_from_bottom_refreshing_label 0x7f150002
+int string pull_to_refresh_from_bottom_release_label 0x7f150003
+int string pull_to_refresh_pull_label 0x7f150004
+int string pull_to_refresh_refreshing_label 0x7f150005
+int string pull_to_refresh_release_label 0x7f150006
+int[] styleable PullToRefresh { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 }
+int styleable PullToRefresh_ptrAdapterViewBackground 0
+int styleable PullToRefresh_ptrAnimationStyle 1
+int styleable PullToRefresh_ptrDrawable 2
+int styleable PullToRefresh_ptrDrawableBottom 3
+int styleable PullToRefresh_ptrDrawableEnd 4
+int styleable PullToRefresh_ptrDrawableStart 5
+int styleable PullToRefresh_ptrDrawableTop 6
+int styleable PullToRefresh_ptrHeaderBackground 7
+int styleable PullToRefresh_ptrHeaderSubTextColor 8
+int styleable PullToRefresh_ptrHeaderTextAppearance 9
+int styleable PullToRefresh_ptrHeaderTextColor 10
+int styleable PullToRefresh_ptrListViewExtrasEnabled 11
+int styleable PullToRefresh_ptrMode 12
+int styleable PullToRefresh_ptrOverScroll 13
+int styleable PullToRefresh_ptrRefreshableViewBackground 14
+int styleable PullToRefresh_ptrRotateDrawableWhilePulling 15
+int styleable PullToRefresh_ptrScrollingWhileRefreshingEnabled 16
+int styleable PullToRefresh_ptrShowIndicator 17
+int styleable PullToRefresh_ptrSubHeaderTextAppearance 18
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/progresbar_anim.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/progresbar_anim.xml
new file mode 100644
index 0000000..9783fc6
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/progresbar_anim.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/refresh_view.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/refresh_view.xml
new file mode 100644
index 0000000..751d2da
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/refresh_view.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_bottom.xml
new file mode 100644
index 0000000..bb430ce
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_top.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_top.xml
new file mode 100644
index 0000000..52d91af
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_in_from_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_bottom.xml
new file mode 100644
index 0000000..83eca5a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_top.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_top.xml
new file mode 100644
index 0000000..5105ae1
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/anim/slide_out_to_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..dc641b7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..8ae7977
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-hdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..95b22bd
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..20fe2c1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-mdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/default_ptr_rotate.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/default_ptr_rotate.png
new file mode 100644
index 0000000..00225c9
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/indicator_arrow.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/indicator_arrow.png
new file mode 100644
index 0000000..810ff59
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/indicator_arrow.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_01.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_01.png
new file mode 100644
index 0000000..a833952
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_01.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_02.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_02.png
new file mode 100644
index 0000000..4cb3d40
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_02.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_03.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_03.png
new file mode 100644
index 0000000..aa3d0fa
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_03.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_04.png b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_04.png
new file mode 100644
index 0000000..c987a1b
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable-xhdpi-v4/loading_04.png differ
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_bottom.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_bottom.xml
new file mode 100644
index 0000000..81a91aa
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_bottom.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_top.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_top.xml
new file mode 100644
index 0000000..59fa9cf
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/indicator_bg_top.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/refresh_anim.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/refresh_anim.xml
new file mode 100644
index 0000000..8de1faa
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/drawable/refresh_anim.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_horizontal.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_horizontal.xml
new file mode 100644
index 0000000..f05bb03
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_horizontal.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_vertical.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_vertical.xml
new file mode 100644
index 0000000..31f4229
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/layout/pull_to_refresh_header_vertical.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-ar/values-ar.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ar/values-ar.xml
new file mode 100644
index 0000000..7c621e0
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ar/values-ar.xml
@@ -0,0 +1,6 @@
+
+
+ اسحب للتحديث…
+ تحميل…
+ اترك للتحديث…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-cs/values-cs.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-cs/values-cs.xml
new file mode 100644
index 0000000..8c93d2f
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-cs/values-cs.xml
@@ -0,0 +1,6 @@
+
+
+ Tažením aktualizujete…
+ Načítání…
+ Uvolněním aktualizujete…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-de/values-de.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-de/values-de.xml
new file mode 100644
index 0000000..cf8ca26
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-de/values-de.xml
@@ -0,0 +1,6 @@
+
+
+ Ziehen zum Aktualisieren…
+ Laden…
+ Loslassen zum Aktualisieren…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-es/values-es.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-es/values-es.xml
new file mode 100644
index 0000000..774c075
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-es/values-es.xml
@@ -0,0 +1,6 @@
+
+
+ Tirar para actualizar…
+ Cargando…
+ Soltar para actualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-fi/values-fi.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-fi/values-fi.xml
new file mode 100644
index 0000000..573149e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-fi/values-fi.xml
@@ -0,0 +1,9 @@
+
+
+ Päivitä vetämällä ylös…
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ Päivitä vetämällä alas…
+ Päivitetään…
+ Päivitä vapauttamalla…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-fr/values-fr.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-fr/values-fr.xml
new file mode 100644
index 0000000..0975919
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-fr/values-fr.xml
@@ -0,0 +1,6 @@
+
+
+ Tirez pour rafraîchir…
+ Chargement…
+ Relâcher pour rafraîchir…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-he/values-he.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-he/values-he.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-he/values-he.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-it/values-it.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-it/values-it.xml
new file mode 100644
index 0000000..325075b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-it/values-it.xml
@@ -0,0 +1,6 @@
+
+
+ Tira per aggiornare…
+ Caricamento…
+ Rilascia per aggionare…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-iw/values-iw.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-iw/values-iw.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-iw/values-iw.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-ja/values-ja.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ja/values-ja.xml
new file mode 100644
index 0000000..45f6760
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ja/values-ja.xml
@@ -0,0 +1,6 @@
+
+
+ 画面を引っ張って…
+ 読み込み中…
+ 指を離して更新…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-ko/values-ko.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ko/values-ko.xml
new file mode 100644
index 0000000..89c9ea3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ko/values-ko.xml
@@ -0,0 +1,6 @@
+
+
+ 당겨서 새로 고침…
+ 로드 중…
+ 놓아서 새로 고침…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-nl/values-nl.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-nl/values-nl.xml
new file mode 100644
index 0000000..70a3fe3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-nl/values-nl.xml
@@ -0,0 +1,6 @@
+
+
+ Sleep om te vernieuwen…
+ Laden…
+ Loslaten om te vernieuwen…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-pl/values-pl.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pl/values-pl.xml
new file mode 100644
index 0000000..dbb5e3b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pl/values-pl.xml
@@ -0,0 +1,6 @@
+
+
+ Pociągnij, aby odświeżyć…
+ Wczytywanie…
+ Puść, aby odświeżyć…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt-rBR/values-pt-rBR.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt-rBR/values-pt-rBR.xml
new file mode 100644
index 0000000..9d00764
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt-rBR/values-pt-rBR.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Carregando…
+ Libere para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt/values-pt.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt/values-pt.xml
new file mode 100644
index 0000000..af108bd
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-pt/values-pt.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ A carregar…
+ Liberação para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-ro/values-ro.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ro/values-ro.xml
new file mode 100644
index 0000000..ce3466a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ro/values-ro.xml
@@ -0,0 +1,6 @@
+
+
+ Trage pentru a reîmprospăta…
+ Încărcare…
+ Eliberează pentru a reîmprospăta…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-ru/values-ru.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ru/values-ru.xml
new file mode 100644
index 0000000..7c2072e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-ru/values-ru.xml
@@ -0,0 +1,6 @@
+
+
+ Потяните для обновления…
+ Загрузка…
+ Отпустите для обновления…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values-zh/values-zh.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values-zh/values-zh.xml
new file mode 100644
index 0000000..93d4129
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values-zh/values-zh.xml
@@ -0,0 +1,6 @@
+
+
+ 下拉刷新
+ 正在载入…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/bundles/release/res/values/values.xml b/library_pullToRefresh/build/intermediates/bundles/release/res/values/values.xml
new file mode 100644
index 0000000..570e8b3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/bundles/release/res/values/values.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 24dp
+ 12dp
+ 12dp
+ 4dp
+ 10dp
+
+
+
+ @string/pull_to_refresh_pull_label
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ 下拉刷新
+ 正在刷新…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/BuildConfig.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/BuildConfig.class
new file mode 100644
index 0000000..51ff631
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/BuildConfig.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/ILoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/ILoadingLayout.class
new file mode 100644
index 0000000..8cd5c3d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/ILoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/IPullToRefresh.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/IPullToRefresh.class
new file mode 100644
index 0000000..db76bc6
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/IPullToRefresh.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class
new file mode 100644
index 0000000..24c46da
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper$1.class
new file mode 100644
index 0000000..0aa4f09
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper.class
new file mode 100644
index 0000000..a84b523
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/OverscrollHelper.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class
new file mode 100644
index 0000000..30d0539
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class
new file mode 100644
index 0000000..9c4f3f5
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class
new file mode 100644
index 0000000..59afc3a
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class
new file mode 100644
index 0000000..12fe9ba
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class
new file mode 100644
index 0000000..dd9adc4
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class
new file mode 100644
index 0000000..9d750aa
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class
new file mode 100644
index 0000000..8468589
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class
new file mode 100644
index 0000000..0aa530f
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class
new file mode 100644
index 0000000..f5b7e37
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class
new file mode 100644
index 0000000..63bad96
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class
new file mode 100644
index 0000000..acb1bfc
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class
new file mode 100644
index 0000000..6f25167
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class
new file mode 100644
index 0000000..32f6dfc
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class
new file mode 100644
index 0000000..a0bf7d7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class
new file mode 100644
index 0000000..f8742e8
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class
new file mode 100644
index 0000000..9cc6b3f
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase.class
new file mode 100644
index 0000000..961c88e
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshBase.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class
new file mode 100644
index 0000000..71b8cf8
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class
new file mode 100644
index 0000000..b79637a
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class
new file mode 100644
index 0000000..dbb6799
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class
new file mode 100644
index 0000000..1704542
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class
new file mode 100644
index 0000000..1c62e0d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView.class
new file mode 100644
index 0000000..04f5357
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshGridView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class
new file mode 100644
index 0000000..5e99d41
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class
new file mode 100644
index 0000000..bad12ca
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class
new file mode 100644
index 0000000..e799525
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class
new file mode 100644
index 0000000..1a2e160
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class
new file mode 100644
index 0000000..a5f1dcb
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView.class
new file mode 100644
index 0000000..298a7f2
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class
new file mode 100644
index 0000000..54ebb93
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class
new file mode 100644
index 0000000..177b022
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class
new file mode 100644
index 0000000..2202ee3
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class
new file mode 100644
index 0000000..be352a5
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class
new file mode 100644
index 0000000..c244395
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView.class
new file mode 100644
index 0000000..14038c9
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/PullToRefreshWebView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$anim.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$anim.class
new file mode 100644
index 0000000..a0a49de
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$anim.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$attr.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$attr.class
new file mode 100644
index 0000000..b2e62ab
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$attr.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$dimen.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$dimen.class
new file mode 100644
index 0000000..49d5ba0
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$dimen.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$drawable.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$drawable.class
new file mode 100644
index 0000000..15df5bb
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$drawable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$id.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$id.class
new file mode 100644
index 0000000..b87c81d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$id.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$layout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$layout.class
new file mode 100644
index 0000000..b9f80c1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$layout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$string.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$string.class
new file mode 100644
index 0000000..422ffd7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$string.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$styleable.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$styleable.class
new file mode 100644
index 0000000..67a4990
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R$styleable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R.class
new file mode 100644
index 0000000..248bdb1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/R.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class
new file mode 100644
index 0000000..70a86ec
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class
new file mode 100644
index 0000000..f8d1f21
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class
new file mode 100644
index 0000000..2dfa225
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class
new file mode 100644
index 0000000..3fdb0e1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class
new file mode 100644
index 0000000..663f1ce
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class
new file mode 100644
index 0000000..580994e
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class
new file mode 100644
index 0000000..61d8de4
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class
new file mode 100644
index 0000000..97640d3
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class
new file mode 100644
index 0000000..1295074
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout.class
new file mode 100644
index 0000000..ac9cd71
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/LoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class
new file mode 100644
index 0000000..a431ded
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class
new file mode 100644
index 0000000..ef38d78
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/Utils.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/Utils.class
new file mode 100644
index 0000000..f3bbe78
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/Utils.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class
new file mode 100644
index 0000000..12d2c89
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class
new file mode 100644
index 0000000..b9ab75b
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat.class b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat.class
new file mode 100644
index 0000000..1c6ffe7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/debug/com/handmark/pulltorefresh/library/internal/ViewCompat.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/BuildConfig.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/BuildConfig.class
new file mode 100644
index 0000000..a06eefa
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/BuildConfig.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/ILoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/ILoadingLayout.class
new file mode 100644
index 0000000..8cd5c3d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/ILoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/IPullToRefresh.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/IPullToRefresh.class
new file mode 100644
index 0000000..db76bc6
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/IPullToRefresh.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class
new file mode 100644
index 0000000..24c46da
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/LoadingLayoutProxy.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper$1.class
new file mode 100644
index 0000000..0aa4f09
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper.class
new file mode 100644
index 0000000..a84b523
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/OverscrollHelper.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class
new file mode 100644
index 0000000..30d0539
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class
new file mode 100644
index 0000000..9c4f3f5
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class
new file mode 100644
index 0000000..59afc3a
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class
new file mode 100644
index 0000000..12fe9ba
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class
new file mode 100644
index 0000000..dd9adc4
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$3.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class
new file mode 100644
index 0000000..9d750aa
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$4.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class
new file mode 100644
index 0000000..8468589
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$AnimationStyle.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class
new file mode 100644
index 0000000..0aa530f
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Mode.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class
new file mode 100644
index 0000000..f5b7e37
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnLastItemVisibleListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class
new file mode 100644
index 0000000..63bad96
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnPullEventListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class
new file mode 100644
index 0000000..acb1bfc
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class
new file mode 100644
index 0000000..6f25167
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnRefreshListener2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class
new file mode 100644
index 0000000..32f6dfc
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$OnSmoothScrollFinishedListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class
new file mode 100644
index 0000000..a0bf7d7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$Orientation.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class
new file mode 100644
index 0000000..f8742e8
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$SmoothScrollRunnable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class
new file mode 100644
index 0000000..9cc6b3f
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase$State.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase.class
new file mode 100644
index 0000000..961c88e
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshBase.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class
new file mode 100644
index 0000000..71b8cf8
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class
new file mode 100644
index 0000000..b79637a
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView$InternalExpandableListViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class
new file mode 100644
index 0000000..dbb6799
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class
new file mode 100644
index 0000000..1704542
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class
new file mode 100644
index 0000000..1c62e0d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView$InternalGridViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView.class
new file mode 100644
index 0000000..04f5357
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshGridView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class
new file mode 100644
index 0000000..5e99d41
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView$InternalHorizontalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class
new file mode 100644
index 0000000..bad12ca
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class
new file mode 100644
index 0000000..e799525
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class
new file mode 100644
index 0000000..1a2e160
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class
new file mode 100644
index 0000000..a5f1dcb
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView$InternalListViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView.class
new file mode 100644
index 0000000..298a7f2
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshListView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class
new file mode 100644
index 0000000..54ebb93
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView$InternalScrollViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class
new file mode 100644
index 0000000..177b022
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshScrollView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class
new file mode 100644
index 0000000..2202ee3
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class
new file mode 100644
index 0000000..be352a5
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class
new file mode 100644
index 0000000..c244395
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView$InternalWebViewSDK9.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView.class
new file mode 100644
index 0000000..14038c9
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/PullToRefreshWebView.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$anim.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$anim.class
new file mode 100644
index 0000000..a0a49de
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$anim.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$attr.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$attr.class
new file mode 100644
index 0000000..b2e62ab
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$attr.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$dimen.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$dimen.class
new file mode 100644
index 0000000..49d5ba0
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$dimen.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$drawable.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$drawable.class
new file mode 100644
index 0000000..15df5bb
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$drawable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$id.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$id.class
new file mode 100644
index 0000000..b87c81d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$id.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$layout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$layout.class
new file mode 100644
index 0000000..b9f80c1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$layout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$string.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$string.class
new file mode 100644
index 0000000..422ffd7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$string.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$styleable.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$styleable.class
new file mode 100644
index 0000000..67a4990
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R$styleable.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R.class
new file mode 100644
index 0000000..248bdb1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/R.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class
new file mode 100644
index 0000000..70a86ec
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2$JsValueCallback.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class
new file mode 100644
index 0000000..f8d1f21
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class
new file mode 100644
index 0000000..2dfa225
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class
new file mode 100644
index 0000000..3fdb0e1
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class
new file mode 100644
index 0000000..663f1ce
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class
new file mode 100644
index 0000000..580994e
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class
new file mode 100644
index 0000000..61d8de4
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class
new file mode 100644
index 0000000..97640d3
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/IndicatorLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class
new file mode 100644
index 0000000..1295074
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout$1.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout.class
new file mode 100644
index 0000000..ac9cd71
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/LoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class
new file mode 100644
index 0000000..a431ded
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class
new file mode 100644
index 0000000..ef38d78
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/Utils.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/Utils.class
new file mode 100644
index 0000000..f3bbe78
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/Utils.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class
new file mode 100644
index 0000000..12d2c89
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK11.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class
new file mode 100644
index 0000000..b9ab75b
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat$SDK16.class differ
diff --git a/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat.class b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat.class
new file mode 100644
index 0000000..1c6ffe7
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/classes/release/com/handmark/pulltorefresh/library/internal/ViewCompat.class differ
diff --git a/library_pullToRefresh/build/intermediates/incremental/compileDebugAidl/dependency.store b/library_pullToRefresh/build/intermediates/incremental/compileDebugAidl/dependency.store
new file mode 100644
index 0000000..8b8400d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/incremental/compileDebugAidl/dependency.store differ
diff --git a/library_pullToRefresh/build/intermediates/incremental/compileReleaseAidl/dependency.store b/library_pullToRefresh/build/intermediates/incremental/compileReleaseAidl/dependency.store
new file mode 100644
index 0000000..8b8400d
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/incremental/compileReleaseAidl/dependency.store differ
diff --git a/library_pullToRefresh/build/intermediates/incremental/debug-mergeJniLibs/merge-state b/library_pullToRefresh/build/intermediates/incremental/debug-mergeJniLibs/merge-state
new file mode 100644
index 0000000..26445ea
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/incremental/debug-mergeJniLibs/merge-state differ
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeDebugAssets/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeDebugAssets/merger.xml
new file mode 100644
index 0000000..5cf18c7
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeDebugAssets/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
new file mode 100644
index 0000000..6efb5aa
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeDebugShaders/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeDebugShaders/merger.xml
new file mode 100644
index 0000000..552ed07
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeDebugShaders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseAssets/merger.xml
new file mode 100644
index 0000000..6354bbc
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseAssets/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
new file mode 100644
index 0000000..a87568a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseShaders/merger.xml
new file mode 100644
index 0000000..83b6969
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/mergeReleaseShaders/merger.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
new file mode 100644
index 0000000..67a3cb6
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
@@ -0,0 +1,22 @@
+#Thu Nov 05 15:37:01 CST 2020
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\layout\\pull_to_refresh_header_vertical.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\layout\\pull_to_refresh_header_vertical.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-mdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-hdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_out_to_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\slide_out_to_bottom.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_04.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\loading_04.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-hdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-hdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\refresh_view.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\refresh_view.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_in_from_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\slide_in_from_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_01.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\loading_01.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\indicator_bg_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable\\indicator_bg_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_out_to_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\slide_out_to_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-mdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-mdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_03.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\loading_03.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\layout\\pull_to_refresh_header_horizontal.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\layout\\pull_to_refresh_header_horizontal.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\indicator_bg_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable\\indicator_bg_bottom.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\refresh_anim.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable\\refresh_anim.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_02.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\loading_02.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\progresbar_anim.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\progresbar_anim.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_in_from_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\debug\\res\\anim\\slide_in_from_bottom.xml
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ar/values-ar.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ar/values-ar.xml
new file mode 100644
index 0000000..7c621e0
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ar/values-ar.xml
@@ -0,0 +1,6 @@
+
+
+ اسحب للتحديث…
+ تحميل…
+ اترك للتحديث…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-cs/values-cs.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-cs/values-cs.xml
new file mode 100644
index 0000000..8c93d2f
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-cs/values-cs.xml
@@ -0,0 +1,6 @@
+
+
+ Tažením aktualizujete…
+ Načítání…
+ Uvolněním aktualizujete…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-de/values-de.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-de/values-de.xml
new file mode 100644
index 0000000..cf8ca26
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-de/values-de.xml
@@ -0,0 +1,6 @@
+
+
+ Ziehen zum Aktualisieren…
+ Laden…
+ Loslassen zum Aktualisieren…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-es/values-es.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-es/values-es.xml
new file mode 100644
index 0000000..774c075
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-es/values-es.xml
@@ -0,0 +1,6 @@
+
+
+ Tirar para actualizar…
+ Cargando…
+ Soltar para actualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fi/values-fi.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fi/values-fi.xml
new file mode 100644
index 0000000..573149e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fi/values-fi.xml
@@ -0,0 +1,9 @@
+
+
+ Päivitä vetämällä ylös…
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ Päivitä vetämällä alas…
+ Päivitetään…
+ Päivitä vapauttamalla…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fr/values-fr.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fr/values-fr.xml
new file mode 100644
index 0000000..0975919
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-fr/values-fr.xml
@@ -0,0 +1,6 @@
+
+
+ Tirez pour rafraîchir…
+ Chargement…
+ Relâcher pour rafraîchir…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-he/values-he.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-he/values-he.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-he/values-he.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-it/values-it.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-it/values-it.xml
new file mode 100644
index 0000000..325075b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-it/values-it.xml
@@ -0,0 +1,6 @@
+
+
+ Tira per aggiornare…
+ Caricamento…
+ Rilascia per aggionare…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-iw/values-iw.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-iw/values-iw.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-iw/values-iw.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ja/values-ja.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ja/values-ja.xml
new file mode 100644
index 0000000..45f6760
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ja/values-ja.xml
@@ -0,0 +1,6 @@
+
+
+ 画面を引っ張って…
+ 読み込み中…
+ 指を離して更新…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ko/values-ko.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ko/values-ko.xml
new file mode 100644
index 0000000..89c9ea3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ko/values-ko.xml
@@ -0,0 +1,6 @@
+
+
+ 당겨서 새로 고침…
+ 로드 중…
+ 놓아서 새로 고침…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-nl/values-nl.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-nl/values-nl.xml
new file mode 100644
index 0000000..70a3fe3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-nl/values-nl.xml
@@ -0,0 +1,6 @@
+
+
+ Sleep om te vernieuwen…
+ Laden…
+ Loslaten om te vernieuwen…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pl/values-pl.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pl/values-pl.xml
new file mode 100644
index 0000000..dbb5e3b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pl/values-pl.xml
@@ -0,0 +1,6 @@
+
+
+ Pociągnij, aby odświeżyć…
+ Wczytywanie…
+ Puść, aby odświeżyć…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt-rBR/values-pt-rBR.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
new file mode 100644
index 0000000..9d00764
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Carregando…
+ Libere para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt/values-pt.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt/values-pt.xml
new file mode 100644
index 0000000..af108bd
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-pt/values-pt.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ A carregar…
+ Liberação para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ro/values-ro.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ro/values-ro.xml
new file mode 100644
index 0000000..ce3466a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ro/values-ro.xml
@@ -0,0 +1,6 @@
+
+
+ Trage pentru a reîmprospăta…
+ Încărcare…
+ Eliberează pentru a reîmprospăta…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ru/values-ru.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ru/values-ru.xml
new file mode 100644
index 0000000..7c2072e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-ru/values-ru.xml
@@ -0,0 +1,6 @@
+
+
+ Потяните для обновления…
+ Загрузка…
+ Отпустите для обновления…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-zh/values-zh.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-zh/values-zh.xml
new file mode 100644
index 0000000..93d4129
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values-zh/values-zh.xml
@@ -0,0 +1,6 @@
+
+
+ 下拉刷新
+ 正在载入…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
new file mode 100644
index 0000000..570e8b3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 24dp
+ 12dp
+ 12dp
+ 4dp
+ 10dp
+
+
+
+ @string/pull_to_refresh_pull_label
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ 下拉刷新
+ 正在刷新…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merger.xml b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merger.xml
new file mode 100644
index 0000000..3ca1440
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageDebugResources/merger.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties
new file mode 100644
index 0000000..d0d4c41
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties
@@ -0,0 +1,22 @@
+#Mon Oct 12 15:12:22 CST 2020
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\layout\\pull_to_refresh_header_vertical.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\layout\\pull_to_refresh_header_vertical.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-mdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-mdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-hdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-hdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_out_to_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\slide_out_to_bottom.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_04.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\loading_04.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-hdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-hdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\refresh_view.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\refresh_view.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_in_from_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\slide_in_from_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_01.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\loading_01.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\indicator_bg_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable\\indicator_bg_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\indicator_arrow.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\indicator_arrow.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_out_to_top.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\slide_out_to_top.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-mdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-mdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_03.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\loading_03.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\layout\\pull_to_refresh_header_horizontal.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\layout\\pull_to_refresh_header_horizontal.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\indicator_bg_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable\\indicator_bg_bottom.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable\\refresh_anim.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable\\refresh_anim.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\loading_02.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\loading_02.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\progresbar_anim.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\progresbar_anim.xml
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\drawable-xhdpi\\default_ptr_rotate.png=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\drawable-xhdpi-v4\\default_ptr_rotate.png
+F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\res\\anim\\slide_in_from_bottom.xml=F\:\\202076work\\ApplicationPatient\\library_pullToRefresh\\build\\intermediates\\bundles\\release\\res\\anim\\slide_in_from_bottom.xml
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ar/values-ar.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ar/values-ar.xml
new file mode 100644
index 0000000..7c621e0
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ar/values-ar.xml
@@ -0,0 +1,6 @@
+
+
+ اسحب للتحديث…
+ تحميل…
+ اترك للتحديث…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-cs/values-cs.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-cs/values-cs.xml
new file mode 100644
index 0000000..8c93d2f
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-cs/values-cs.xml
@@ -0,0 +1,6 @@
+
+
+ Tažením aktualizujete…
+ Načítání…
+ Uvolněním aktualizujete…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-de/values-de.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-de/values-de.xml
new file mode 100644
index 0000000..cf8ca26
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-de/values-de.xml
@@ -0,0 +1,6 @@
+
+
+ Ziehen zum Aktualisieren…
+ Laden…
+ Loslassen zum Aktualisieren…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-es/values-es.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-es/values-es.xml
new file mode 100644
index 0000000..774c075
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-es/values-es.xml
@@ -0,0 +1,6 @@
+
+
+ Tirar para actualizar…
+ Cargando…
+ Soltar para actualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fi/values-fi.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fi/values-fi.xml
new file mode 100644
index 0000000..573149e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fi/values-fi.xml
@@ -0,0 +1,9 @@
+
+
+ Päivitä vetämällä ylös…
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ Päivitä vetämällä alas…
+ Päivitetään…
+ Päivitä vapauttamalla…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fr/values-fr.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fr/values-fr.xml
new file mode 100644
index 0000000..0975919
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-fr/values-fr.xml
@@ -0,0 +1,6 @@
+
+
+ Tirez pour rafraîchir…
+ Chargement…
+ Relâcher pour rafraîchir…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-he/values-he.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-he/values-he.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-he/values-he.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-it/values-it.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-it/values-it.xml
new file mode 100644
index 0000000..325075b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-it/values-it.xml
@@ -0,0 +1,6 @@
+
+
+ Tira per aggiornare…
+ Caricamento…
+ Rilascia per aggionare…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-iw/values-iw.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-iw/values-iw.xml
new file mode 100644
index 0000000..220c681
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-iw/values-iw.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ טוען…
+ שחרר לרענון…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ja/values-ja.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ja/values-ja.xml
new file mode 100644
index 0000000..45f6760
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ja/values-ja.xml
@@ -0,0 +1,6 @@
+
+
+ 画面を引っ張って…
+ 読み込み中…
+ 指を離して更新…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ko/values-ko.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ko/values-ko.xml
new file mode 100644
index 0000000..89c9ea3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ko/values-ko.xml
@@ -0,0 +1,6 @@
+
+
+ 당겨서 새로 고침…
+ 로드 중…
+ 놓아서 새로 고침…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-nl/values-nl.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-nl/values-nl.xml
new file mode 100644
index 0000000..70a3fe3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-nl/values-nl.xml
@@ -0,0 +1,6 @@
+
+
+ Sleep om te vernieuwen…
+ Laden…
+ Loslaten om te vernieuwen…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pl/values-pl.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pl/values-pl.xml
new file mode 100644
index 0000000..dbb5e3b
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pl/values-pl.xml
@@ -0,0 +1,6 @@
+
+
+ Pociągnij, aby odświeżyć…
+ Wczytywanie…
+ Puść, aby odświeżyć…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
new file mode 100644
index 0000000..9d00764
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt-rBR/values-pt-rBR.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Carregando…
+ Libere para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt/values-pt.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt/values-pt.xml
new file mode 100644
index 0000000..af108bd
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-pt/values-pt.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ A carregar…
+ Liberação para atualizar…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ro/values-ro.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ro/values-ro.xml
new file mode 100644
index 0000000..ce3466a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ro/values-ro.xml
@@ -0,0 +1,6 @@
+
+
+ Trage pentru a reîmprospăta…
+ Încărcare…
+ Eliberează pentru a reîmprospăta…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ru/values-ru.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ru/values-ru.xml
new file mode 100644
index 0000000..7c2072e
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-ru/values-ru.xml
@@ -0,0 +1,6 @@
+
+
+ Потяните для обновления…
+ Загрузка…
+ Отпустите для обновления…
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-zh/values-zh.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-zh/values-zh.xml
new file mode 100644
index 0000000..93d4129
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values-zh/values-zh.xml
@@ -0,0 +1,6 @@
+
+
+ 下拉刷新
+ 正在载入…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values/values.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values/values.xml
new file mode 100644
index 0000000..570e8b3
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merged.dir/values/values.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 24dp
+ 12dp
+ 12dp
+ 4dp
+ 10dp
+
+
+
+ @string/pull_to_refresh_pull_label
+ @string/pull_to_refresh_refreshing_label
+ @string/pull_to_refresh_release_label
+ 下拉刷新
+ 正在刷新…
+ 释放立即刷新
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merger.xml b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merger.xml
new file mode 100644
index 0000000..3db3784
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/incremental/packageReleaseResources/merger.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/incremental/release-mergeJniLibs/merge-state b/library_pullToRefresh/build/intermediates/incremental/release-mergeJniLibs/merge-state
new file mode 100644
index 0000000..e75a103
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/incremental/release-mergeJniLibs/merge-state differ
diff --git a/library_pullToRefresh/build/intermediates/intermediate-jars/debug/classes.jar b/library_pullToRefresh/build/intermediates/intermediate-jars/debug/classes.jar
new file mode 100644
index 0000000..c1fde76
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/intermediate-jars/debug/classes.jar differ
diff --git a/library_pullToRefresh/build/intermediates/intermediate-jars/debug/res.jar b/library_pullToRefresh/build/intermediates/intermediate-jars/debug/res.jar
new file mode 100644
index 0000000..15cb0ec
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/intermediate-jars/debug/res.jar differ
diff --git a/library_pullToRefresh/build/intermediates/intermediate-jars/release/classes.jar b/library_pullToRefresh/build/intermediates/intermediate-jars/release/classes.jar
new file mode 100644
index 0000000..2686b32
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/intermediate-jars/release/classes.jar differ
diff --git a/library_pullToRefresh/build/intermediates/intermediate-jars/release/res.jar b/library_pullToRefresh/build/intermediates/intermediate-jars/release/res.jar
new file mode 100644
index 0000000..15cb0ec
Binary files /dev/null and b/library_pullToRefresh/build/intermediates/intermediate-jars/release/res.jar differ
diff --git a/library_pullToRefresh/build/intermediates/javaPrecompile/debug/annotationProcessors.json b/library_pullToRefresh/build/intermediates/javaPrecompile/debug/annotationProcessors.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/javaPrecompile/debug/annotationProcessors.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/javaPrecompile/release/annotationProcessors.json b/library_pullToRefresh/build/intermediates/javaPrecompile/release/annotationProcessors.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/javaPrecompile/release/annotationProcessors.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/aapt/debug/AndroidManifest.xml b/library_pullToRefresh/build/intermediates/manifests/aapt/debug/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/aapt/debug/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/aapt/debug/output.json b/library_pullToRefresh/build/intermediates/manifests/aapt/debug/output.json
new file mode 100644
index 0000000..a5993a7
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/aapt/debug/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"AndroidManifest.xml","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/aapt/release/AndroidManifest.xml b/library_pullToRefresh/build/intermediates/manifests/aapt/release/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/aapt/release/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/aapt/release/output.json b/library_pullToRefresh/build/intermediates/manifests/aapt/release/output.json
new file mode 100644
index 0000000..a5993a7
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/aapt/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"AndroidManifest.xml","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/full/debug/AndroidManifest.xml b/library_pullToRefresh/build/intermediates/manifests/full/debug/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/full/debug/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/full/debug/output.json b/library_pullToRefresh/build/intermediates/manifests/full/debug/output.json
new file mode 100644
index 0000000..bd23df7
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/full/debug/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"MERGED_MANIFESTS"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"AndroidManifest.xml","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/full/release/AndroidManifest.xml b/library_pullToRefresh/build/intermediates/manifests/full/release/AndroidManifest.xml
new file mode 100644
index 0000000..c3db567
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/full/release/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/manifests/full/release/output.json b/library_pullToRefresh/build/intermediates/manifests/full/release/output.json
new file mode 100644
index 0000000..bd23df7
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/manifests/full/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"MERGED_MANIFESTS"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"AndroidManifest.xml","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/res/debug/output.json b/library_pullToRefresh/build/intermediates/res/debug/output.json
new file mode 100644
index 0000000..09ed7a2
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/res/debug/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"PROCESSED_RES"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"resources-debug.ap_","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/res/release/output.json b/library_pullToRefresh/build/intermediates/res/release/output.json
new file mode 100644
index 0000000..a3bd80f
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/res/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"PROCESSED_RES"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":2110},"path":"resources-release.ap_","properties":{"packageId":"com.handmark.pulltorefresh.library","split":""}}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt b/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
new file mode 100644
index 0000000..daf889a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
@@ -0,0 +1,76 @@
+com.handmark.pulltorefresh.library
+int anim progresbar_anim 0x7f010001
+int anim refresh_view 0x7f010002
+int anim slide_in_from_bottom 0x7f010003
+int anim slide_in_from_top 0x7f010004
+int anim slide_out_to_bottom 0x7f010005
+int anim slide_out_to_top 0x7f010006
+int attr ptrAdapterViewBackground 0x7f040001
+int attr ptrAnimationStyle 0x7f040002
+int attr ptrDrawable 0x7f040003
+int attr ptrDrawableBottom 0x7f040004
+int attr ptrDrawableEnd 0x7f040005
+int attr ptrDrawableStart 0x7f040006
+int attr ptrDrawableTop 0x7f040007
+int attr ptrHeaderBackground 0x7f040008
+int attr ptrHeaderSubTextColor 0x7f040009
+int attr ptrHeaderTextAppearance 0x7f04000a
+int attr ptrHeaderTextColor 0x7f04000b
+int attr ptrListViewExtrasEnabled 0x7f04000c
+int attr ptrMode 0x7f04000d
+int attr ptrOverScroll 0x7f04000e
+int attr ptrRefreshableViewBackground 0x7f04000f
+int attr ptrRotateDrawableWhilePulling 0x7f040010
+int attr ptrScrollingWhileRefreshingEnabled 0x7f040011
+int attr ptrShowIndicator 0x7f040012
+int attr ptrSubHeaderTextAppearance 0x7f040013
+int dimen header_footer_left_right_padding 0x7f080001
+int dimen header_footer_top_bottom_padding 0x7f080002
+int dimen indicator_corner_radius 0x7f080003
+int dimen indicator_internal_padding 0x7f080004
+int dimen indicator_right_padding 0x7f080005
+int drawable default_ptr_rotate 0x7f090001
+int drawable indicator_arrow 0x7f090002
+int drawable indicator_bg_bottom 0x7f090003
+int drawable indicator_bg_top 0x7f090004
+int drawable loading_01 0x7f090005
+int drawable loading_02 0x7f090006
+int drawable loading_03 0x7f090007
+int drawable loading_04 0x7f090008
+int drawable refresh_anim 0x7f090009
+int id fl_inner 0x7f0c0001
+int id gridview 0x7f0c0002
+int id pull_to_refresh_image 0x7f0c0003
+int id pull_to_refresh_progress 0x7f0c0004
+int id pull_to_refresh_sub_text 0x7f0c0005
+int id pull_to_refresh_text 0x7f0c0006
+int id scrollview 0x7f0c0007
+int id webview 0x7f0c0008
+int layout pull_to_refresh_header_horizontal 0x7f0f0001
+int layout pull_to_refresh_header_vertical 0x7f0f0002
+int string pull_to_refresh_from_bottom_pull_label 0x7f150001
+int string pull_to_refresh_from_bottom_refreshing_label 0x7f150002
+int string pull_to_refresh_from_bottom_release_label 0x7f150003
+int string pull_to_refresh_pull_label 0x7f150004
+int string pull_to_refresh_refreshing_label 0x7f150005
+int string pull_to_refresh_release_label 0x7f150006
+int[] styleable PullToRefresh { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 }
+int styleable PullToRefresh_ptrAdapterViewBackground 0
+int styleable PullToRefresh_ptrAnimationStyle 1
+int styleable PullToRefresh_ptrDrawable 2
+int styleable PullToRefresh_ptrDrawableBottom 3
+int styleable PullToRefresh_ptrDrawableEnd 4
+int styleable PullToRefresh_ptrDrawableStart 5
+int styleable PullToRefresh_ptrDrawableTop 6
+int styleable PullToRefresh_ptrHeaderBackground 7
+int styleable PullToRefresh_ptrHeaderSubTextColor 8
+int styleable PullToRefresh_ptrHeaderTextAppearance 9
+int styleable PullToRefresh_ptrHeaderTextColor 10
+int styleable PullToRefresh_ptrListViewExtrasEnabled 11
+int styleable PullToRefresh_ptrMode 12
+int styleable PullToRefresh_ptrOverScroll 13
+int styleable PullToRefresh_ptrRefreshableViewBackground 14
+int styleable PullToRefresh_ptrRotateDrawableWhilePulling 15
+int styleable PullToRefresh_ptrScrollingWhileRefreshingEnabled 16
+int styleable PullToRefresh_ptrShowIndicator 17
+int styleable PullToRefresh_ptrSubHeaderTextAppearance 18
diff --git a/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/release/package-aware-r.txt b/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/release/package-aware-r.txt
new file mode 100644
index 0000000..daf889a
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/res/symbol-table-with-package/release/package-aware-r.txt
@@ -0,0 +1,76 @@
+com.handmark.pulltorefresh.library
+int anim progresbar_anim 0x7f010001
+int anim refresh_view 0x7f010002
+int anim slide_in_from_bottom 0x7f010003
+int anim slide_in_from_top 0x7f010004
+int anim slide_out_to_bottom 0x7f010005
+int anim slide_out_to_top 0x7f010006
+int attr ptrAdapterViewBackground 0x7f040001
+int attr ptrAnimationStyle 0x7f040002
+int attr ptrDrawable 0x7f040003
+int attr ptrDrawableBottom 0x7f040004
+int attr ptrDrawableEnd 0x7f040005
+int attr ptrDrawableStart 0x7f040006
+int attr ptrDrawableTop 0x7f040007
+int attr ptrHeaderBackground 0x7f040008
+int attr ptrHeaderSubTextColor 0x7f040009
+int attr ptrHeaderTextAppearance 0x7f04000a
+int attr ptrHeaderTextColor 0x7f04000b
+int attr ptrListViewExtrasEnabled 0x7f04000c
+int attr ptrMode 0x7f04000d
+int attr ptrOverScroll 0x7f04000e
+int attr ptrRefreshableViewBackground 0x7f04000f
+int attr ptrRotateDrawableWhilePulling 0x7f040010
+int attr ptrScrollingWhileRefreshingEnabled 0x7f040011
+int attr ptrShowIndicator 0x7f040012
+int attr ptrSubHeaderTextAppearance 0x7f040013
+int dimen header_footer_left_right_padding 0x7f080001
+int dimen header_footer_top_bottom_padding 0x7f080002
+int dimen indicator_corner_radius 0x7f080003
+int dimen indicator_internal_padding 0x7f080004
+int dimen indicator_right_padding 0x7f080005
+int drawable default_ptr_rotate 0x7f090001
+int drawable indicator_arrow 0x7f090002
+int drawable indicator_bg_bottom 0x7f090003
+int drawable indicator_bg_top 0x7f090004
+int drawable loading_01 0x7f090005
+int drawable loading_02 0x7f090006
+int drawable loading_03 0x7f090007
+int drawable loading_04 0x7f090008
+int drawable refresh_anim 0x7f090009
+int id fl_inner 0x7f0c0001
+int id gridview 0x7f0c0002
+int id pull_to_refresh_image 0x7f0c0003
+int id pull_to_refresh_progress 0x7f0c0004
+int id pull_to_refresh_sub_text 0x7f0c0005
+int id pull_to_refresh_text 0x7f0c0006
+int id scrollview 0x7f0c0007
+int id webview 0x7f0c0008
+int layout pull_to_refresh_header_horizontal 0x7f0f0001
+int layout pull_to_refresh_header_vertical 0x7f0f0002
+int string pull_to_refresh_from_bottom_pull_label 0x7f150001
+int string pull_to_refresh_from_bottom_refreshing_label 0x7f150002
+int string pull_to_refresh_from_bottom_release_label 0x7f150003
+int string pull_to_refresh_pull_label 0x7f150004
+int string pull_to_refresh_refreshing_label 0x7f150005
+int string pull_to_refresh_release_label 0x7f150006
+int[] styleable PullToRefresh { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000e, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013 }
+int styleable PullToRefresh_ptrAdapterViewBackground 0
+int styleable PullToRefresh_ptrAnimationStyle 1
+int styleable PullToRefresh_ptrDrawable 2
+int styleable PullToRefresh_ptrDrawableBottom 3
+int styleable PullToRefresh_ptrDrawableEnd 4
+int styleable PullToRefresh_ptrDrawableStart 5
+int styleable PullToRefresh_ptrDrawableTop 6
+int styleable PullToRefresh_ptrHeaderBackground 7
+int styleable PullToRefresh_ptrHeaderSubTextColor 8
+int styleable PullToRefresh_ptrHeaderTextAppearance 9
+int styleable PullToRefresh_ptrHeaderTextColor 10
+int styleable PullToRefresh_ptrListViewExtrasEnabled 11
+int styleable PullToRefresh_ptrMode 12
+int styleable PullToRefresh_ptrOverScroll 13
+int styleable PullToRefresh_ptrRefreshableViewBackground 14
+int styleable PullToRefresh_ptrRotateDrawableWhilePulling 15
+int styleable PullToRefresh_ptrScrollingWhileRefreshingEnabled 16
+int styleable PullToRefresh_ptrShowIndicator 17
+int styleable PullToRefresh_ptrSubHeaderTextAppearance 18
diff --git a/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/debug/__content__.json b/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/debug/__content__.json
new file mode 100644
index 0000000..49b1382
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/debug/__content__.json
@@ -0,0 +1 @@
+[{"name":"resources","index":0,"scopes":["PROJECT"],"types":["NATIVE_LIBS"],"format":"DIRECTORY","present":false}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/release/__content__.json b/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/release/__content__.json
new file mode 100644
index 0000000..49b1382
--- /dev/null
+++ b/library_pullToRefresh/build/intermediates/transforms/mergeJniLibs/release/__content__.json
@@ -0,0 +1 @@
+[{"name":"resources","index":0,"scopes":["PROJECT"],"types":["NATIVE_LIBS"],"format":"DIRECTORY","present":false}]
\ No newline at end of file
diff --git a/library_pullToRefresh/build/outputs/logs/manifest-merger-debug-report.txt b/library_pullToRefresh/build/outputs/logs/manifest-merger-debug-report.txt
new file mode 100644
index 0000000..67fe89c
--- /dev/null
+++ b/library_pullToRefresh/build/outputs/logs/manifest-merger-debug-report.txt
@@ -0,0 +1,29 @@
+-- Merging decision tree log ---
+manifest
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+ package
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:3:5-49
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ android:versionName
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:5:5-32
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ xmlns:android
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:11-69
+ android:versionCode
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:4:5-31
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+uses-sdk
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:7:5-43
+ android:minSdkVersion
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:7:15-40
+application
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:9:5-20
diff --git a/library_pullToRefresh/build/outputs/logs/manifest-merger-release-report.txt b/library_pullToRefresh/build/outputs/logs/manifest-merger-release-report.txt
new file mode 100644
index 0000000..67fe89c
--- /dev/null
+++ b/library_pullToRefresh/build/outputs/logs/manifest-merger-release-report.txt
@@ -0,0 +1,29 @@
+-- Merging decision tree log ---
+manifest
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:1-11:12
+ package
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:3:5-49
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ android:versionName
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:5:5-32
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ xmlns:android
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:2:11-69
+ android:versionCode
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:4:5-31
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+ INJECTED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml
+uses-sdk
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:7:5-43
+ android:minSdkVersion
+ ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:7:15-40
+application
+ADDED from F:\202076work\ApplicationPatient\library_pullToRefresh\AndroidManifest.xml:9:5-20
diff --git a/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/BuildConfig.java b/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/BuildConfig.java
new file mode 100644
index 0000000..2358e13
--- /dev/null
+++ b/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/BuildConfig.java
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.handmark.pulltorefresh.library;
+
+public final class BuildConfig {
+ public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff --git a/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/R.java b/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/R.java
new file mode 100644
index 0000000..b3aa5b8
--- /dev/null
+++ b/library_pullToRefresh/gen/com/handmark/pulltorefresh/library/R.java
@@ -0,0 +1,560 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.handmark.pulltorefresh.library;
+
+public final class R {
+ public static final class anim {
+ public static int progresbar_anim=0x7f040000;
+ public static int refresh_view=0x7f040001;
+ public static int slide_in_from_bottom=0x7f040002;
+ public static int slide_in_from_top=0x7f040003;
+ public static int slide_out_to_bottom=0x7f040004;
+ public static int slide_out_to_top=0x7f040005;
+ }
+ public static final class attr {
+ /** BELOW HERE ARE DEPRECEATED. DO NOT USE.
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+ */
+ public static int ptrAdapterViewBackground=0x7f010010;
+ /** Style of Animation should be used displayed when pulling.
+
Must be one or more (separated by '|') of the following constant values.
+
+
+
+
+
Constant
Value
Description
+
rotate
0x0
+
flip
0x1
flip(翻转动画), rotate(旋转动画)
+
+ */
+ public static int ptrAnimationStyle=0x7f01000c;
+ /** Drawable to use as Loading Indicator. Changes both Header and Footer.
+ 同时改变头部和底部的图标
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrDrawable=0x7f010006;
+ /**
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrDrawableBottom=0x7f010012;
+ /** Drawable to use as Loading Indicator in the Footer View. Overrides value set in ptrDrawable.
+ 底部视图的图标
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrDrawableEnd=0x7f010008;
+ /** Drawable to use as Loading Indicator in the Header View. Overrides value set in ptrDrawable.
+ 头部视图的图标
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrDrawableStart=0x7f010007;
+ /**
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrDrawableTop=0x7f010011;
+ /** A drawable to use as the background of the Header and Footer Loading Views
+ 设置下拉Header或者上拉Footer的背景色
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+ */
+ public static int ptrHeaderBackground=0x7f010001;
+ /** Text Color of the Header and Footer Loading Views Sub Header
+ 用于设置Header与Footer中上次刷新时间的颜色
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+ */
+ public static int ptrHeaderSubTextColor=0x7f010003;
+ /** Base text color, typeface, size, and style for Header and Footer Loading Views
+ 分别设置拉Header或者上拉Footer中字体的类型颜色等等
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrHeaderTextAppearance=0x7f01000a;
+ /** Text Color of the Header and Footer Loading Views
+ 用于设置Header与Footer中文本的颜色
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+ */
+ public static int ptrHeaderTextColor=0x7f010002;
+ /**
+ Whether PullToRefreshListView has it's extras enabled. This allows the user to be
+ able to scroll while refreshing, and behaves better. It acheives this by adding
+ Header and/or Footer Views to the ListView.
+
+ 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+ */
+ public static int ptrListViewExtrasEnabled=0x7f01000e;
+ /** Mode of Pull-to-Refresh that should be used
+
Must be one or more (separated by '|') of the following constant values.
+
+
+
+
+
Constant
Value
Description
+
disabled
0x0
+
pullFromStart
0x1
禁用下拉刷新
+
pullFromEnd
0x2
仅支持下拉刷新
+
both
0x3
仅支持上拉刷新
+
manualOnly
0x4
上拉刷新和下拉刷新都支持
+
pullDownFromTop
0x1
只允许手动触发
+ These last two are depreacted
+
pullUpFromBottom
0x2
+
+ */
+ public static int ptrMode=0x7f010004;
+ /** Whether Android's built-in Over Scroll should be utilised for Pull-to-Refresh.
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+ */
+ public static int ptrOverScroll=0x7f010009;
+ /** A drawable to use as the background of the Refreshable View
+ 设置整个刷新列表的背景色
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+ */
+ public static int ptrRefreshableViewBackground=0x7f010000;
+ /**
+ Whether the Drawable should be continually rotated as you pull. This only
+ takes effect when using the 'Rotate' Animation Style.
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+ */
+ public static int ptrRotateDrawableWhilePulling=0x7f01000f;
+ /** Whether the user can scroll while the View is Refreshing
+ 刷新的时候,是否允许ListView或GridView滚动
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+ */
+ public static int ptrScrollingWhileRefreshingEnabled=0x7f01000d;
+ /** Whether the Indicator overlay(s) should be used
+ 如果为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+ */
+ public static int ptrShowIndicator=0x7f010005;
+ /** Base text color, typeface, size, and style for Header and Footer Loading Views Sub Header
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ */
+ public static int ptrSubHeaderTextAppearance=0x7f01000b;
+ }
+ public static final class dimen {
+ public static int header_footer_left_right_padding=0x7f050003;
+ public static int header_footer_top_bottom_padding=0x7f050004;
+ public static int indicator_corner_radius=0x7f050001;
+ public static int indicator_internal_padding=0x7f050002;
+ public static int indicator_right_padding=0x7f050000;
+ }
+ public static final class drawable {
+ public static int default_ptr_rotate=0x7f020000;
+ public static int indicator_arrow=0x7f020001;
+ public static int indicator_bg_bottom=0x7f020002;
+ public static int indicator_bg_top=0x7f020003;
+ public static int loading_01=0x7f020004;
+ public static int loading_02=0x7f020005;
+ public static int loading_03=0x7f020006;
+ public static int loading_04=0x7f020007;
+ public static int refresh_anim=0x7f020008;
+ }
+ public static final class id {
+ public static int both=0x7f060003;
+ public static int disabled=0x7f060004;
+ public static int fl_inner=0x7f06000c;
+ public static int flip=0x7f06000a;
+ public static int gridview=0x7f060000;
+ public static int manualOnly=0x7f060005;
+ public static int pullDownFromTop=0x7f060006;
+ public static int pullFromEnd=0x7f060007;
+ public static int pullFromStart=0x7f060008;
+ public static int pullUpFromBottom=0x7f060009;
+ public static int pull_to_refresh_image=0x7f06000d;
+ public static int pull_to_refresh_progress=0x7f06000e;
+ public static int pull_to_refresh_sub_text=0x7f060010;
+ public static int pull_to_refresh_text=0x7f06000f;
+ public static int rotate=0x7f06000b;
+ public static int scrollview=0x7f060002;
+ public static int webview=0x7f060001;
+ }
+ public static final class layout {
+ public static int pull_to_refresh_header_horizontal=0x7f030000;
+ public static int pull_to_refresh_header_vertical=0x7f030001;
+ }
+ public static final class string {
+ /** Just use standard Pull Down String when pulling up. These can be set for languages which require it
+ Just use standard Pull Down String when pulling up. These can be set for languages which require it
+ */
+ public static int pull_to_refresh_from_bottom_pull_label=0x7f070003;
+ public static int pull_to_refresh_from_bottom_refreshing_label=0x7f070005;
+ public static int pull_to_refresh_from_bottom_release_label=0x7f070004;
+ public static int pull_to_refresh_pull_label=0x7f070000;
+ public static int pull_to_refresh_refreshing_label=0x7f070002;
+ public static int pull_to_refresh_release_label=0x7f070001;
+ }
+ public static final class styleable {
+ /** Attributes that can be used with a PullToRefresh.
+
+ @attr description
+ BELOW HERE ARE DEPRECEATED. DO NOT USE.
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrAdapterViewBackground
+ */
+ public static int PullToRefresh_ptrAdapterViewBackground = 16;
+ /**
+
+ @attr description
+ Style of Animation should be used displayed when pulling.
+
+
+
Must be one or more (separated by '|') of the following constant values.
+
+
+
+
+
Constant
Value
Description
+
rotate
0x0
+
flip
0x1
flip(翻转动画), rotate(旋转动画)
+
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrAnimationStyle
+ */
+ public static int PullToRefresh_ptrAnimationStyle = 12;
+ /**
+
+ @attr description
+ Drawable to use as Loading Indicator. Changes both Header and Footer.
+ 同时改变头部和底部的图标
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrDrawable
+ */
+ public static int PullToRefresh_ptrDrawable = 6;
+ /**
+
This symbol is the offset where the {@link com.handmark.pulltorefresh.library.R.attr#ptrDrawableBottom}
+ attribute's value can be found in the {@link #PullToRefresh} array.
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ @attr name com.handmark.pulltorefresh.library:ptrDrawableBottom
+ */
+ public static int PullToRefresh_ptrDrawableBottom = 18;
+ /**
+
+ @attr description
+ Drawable to use as Loading Indicator in the Footer View. Overrides value set in ptrDrawable.
+ 底部视图的图标
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrDrawableEnd
+ */
+ public static int PullToRefresh_ptrDrawableEnd = 8;
+ /**
+
+ @attr description
+ Drawable to use as Loading Indicator in the Header View. Overrides value set in ptrDrawable.
+ 头部视图的图标
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrDrawableStart
+ */
+ public static int PullToRefresh_ptrDrawableStart = 7;
+ /**
+
This symbol is the offset where the {@link com.handmark.pulltorefresh.library.R.attr#ptrDrawableTop}
+ attribute's value can be found in the {@link #PullToRefresh} array.
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+ @attr name com.handmark.pulltorefresh.library:ptrDrawableTop
+ */
+ public static int PullToRefresh_ptrDrawableTop = 17;
+ /**
+
+ @attr description
+ A drawable to use as the background of the Header and Footer Loading Views
+ 设置下拉Header或者上拉Footer的背景色
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrHeaderBackground
+ */
+ public static int PullToRefresh_ptrHeaderBackground = 1;
+ /**
+
+ @attr description
+ Text Color of the Header and Footer Loading Views Sub Header
+ 用于设置Header与Footer中上次刷新时间的颜色
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrHeaderSubTextColor
+ */
+ public static int PullToRefresh_ptrHeaderSubTextColor = 3;
+ /**
+
+ @attr description
+ Base text color, typeface, size, and style for Header and Footer Loading Views
+ 分别设置拉Header或者上拉Footer中字体的类型颜色等等
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrHeaderTextAppearance
+ */
+ public static int PullToRefresh_ptrHeaderTextAppearance = 10;
+ /**
+
+ @attr description
+ Text Color of the Header and Footer Loading Views
+ 用于设置Header与Footer中文本的颜色
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrHeaderTextColor
+ */
+ public static int PullToRefresh_ptrHeaderTextColor = 2;
+ /**
+
+ @attr description
+
+ Whether PullToRefreshListView has it's extras enabled. This allows the user to be
+ able to scroll while refreshing, and behaves better. It acheives this by adding
+ Header and/or Footer Views to the ListView.
+
+ 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrListViewExtrasEnabled
+ */
+ public static int PullToRefresh_ptrListViewExtrasEnabled = 14;
+ /**
+
+ @attr description
+ Mode of Pull-to-Refresh that should be used
+
+
+
Must be one or more (separated by '|') of the following constant values.
+
+
+
+
+
Constant
Value
Description
+
disabled
0x0
+
pullFromStart
0x1
禁用下拉刷新
+
pullFromEnd
0x2
仅支持下拉刷新
+
both
0x3
仅支持上拉刷新
+
manualOnly
0x4
上拉刷新和下拉刷新都支持
+
pullDownFromTop
0x1
只允许手动触发
+ These last two are depreacted
+
pullUpFromBottom
0x2
+
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrMode
+ */
+ public static int PullToRefresh_ptrMode = 4;
+ /**
+
+ @attr description
+ Whether Android's built-in Over Scroll should be utilised for Pull-to-Refresh.
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrOverScroll
+ */
+ public static int PullToRefresh_ptrOverScroll = 9;
+ /**
+
+ @attr description
+ A drawable to use as the background of the Refreshable View
+ 设置整个刷新列表的背景色
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a color value, in the form of "#rgb", "#argb",
+"#rrggbb", or "#aarrggbb".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrRefreshableViewBackground
+ */
+ public static int PullToRefresh_ptrRefreshableViewBackground = 0;
+ /**
+
+ @attr description
+
+ Whether the Drawable should be continually rotated as you pull. This only
+ takes effect when using the 'Rotate' Animation Style.
+
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrRotateDrawableWhilePulling
+ */
+ public static int PullToRefresh_ptrRotateDrawableWhilePulling = 15;
+ /**
+
+ @attr description
+ Whether the user can scroll while the View is Refreshing
+ 刷新的时候,是否允许ListView或GridView滚动
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrScrollingWhileRefreshingEnabled
+ */
+ public static int PullToRefresh_ptrScrollingWhileRefreshingEnabled = 13;
+ /**
+
+ @attr description
+ Whether the Indicator overlay(s) should be used
+ 如果为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的
+
+
+
May be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
May be a boolean value, either "true" or "false".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrShowIndicator
+ */
+ public static int PullToRefresh_ptrShowIndicator = 5;
+ /**
+
+ @attr description
+ Base text color, typeface, size, and style for Header and Footer Loading Views Sub Header
+
+
+
Must be a reference to another resource, in the form "@[+][package:]type:name"
+or to a theme attribute in the form "?[package:][type:]name".
+
This is a private symbol.
+ @attr name com.handmark.pulltorefresh.library:ptrSubHeaderTextAppearance
+ */
+ public static int PullToRefresh_ptrSubHeaderTextAppearance = 11;
+ };
+}
diff --git a/library_pullToRefresh/lint.xml b/library_pullToRefresh/lint.xml
new file mode 100644
index 0000000..715caf3
--- /dev/null
+++ b/library_pullToRefresh/lint.xml
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/pom.xml b/library_pullToRefresh/pom.xml
new file mode 100644
index 0000000..6b48e0a
--- /dev/null
+++ b/library_pullToRefresh/pom.xml
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+
+ com.github.chrisbanes.pulltorefresh
+ library
+ apklib
+ Android-PullToRefresh Library
+
+
+ com.github.chrisbanes.pulltorefresh
+ parent
+ 2.1.2-SNAPSHOT
+
+
+
+
+ com.google.android
+ android
+
+
+
+
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-eclipse-plugin
+
+
+
+
diff --git a/library_pullToRefresh/project.properties b/library_pullToRefresh/project.properties
new file mode 100644
index 0000000..95228a4
--- /dev/null
+++ b/library_pullToRefresh/project.properties
@@ -0,0 +1,12 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-22
+android.library=true
diff --git a/library_pullToRefresh/res/anim/progresbar_anim.xml b/library_pullToRefresh/res/anim/progresbar_anim.xml
new file mode 100644
index 0000000..9783fc6
--- /dev/null
+++ b/library_pullToRefresh/res/anim/progresbar_anim.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/anim/refresh_view.xml b/library_pullToRefresh/res/anim/refresh_view.xml
new file mode 100644
index 0000000..751d2da
--- /dev/null
+++ b/library_pullToRefresh/res/anim/refresh_view.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/anim/slide_in_from_bottom.xml b/library_pullToRefresh/res/anim/slide_in_from_bottom.xml
new file mode 100644
index 0000000..bb430ce
--- /dev/null
+++ b/library_pullToRefresh/res/anim/slide_in_from_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/res/anim/slide_in_from_top.xml b/library_pullToRefresh/res/anim/slide_in_from_top.xml
new file mode 100644
index 0000000..52d91af
--- /dev/null
+++ b/library_pullToRefresh/res/anim/slide_in_from_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/res/anim/slide_out_to_bottom.xml b/library_pullToRefresh/res/anim/slide_out_to_bottom.xml
new file mode 100644
index 0000000..83eca5a
--- /dev/null
+++ b/library_pullToRefresh/res/anim/slide_out_to_bottom.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/res/anim/slide_out_to_top.xml b/library_pullToRefresh/res/anim/slide_out_to_top.xml
new file mode 100644
index 0000000..5105ae1
--- /dev/null
+++ b/library_pullToRefresh/res/anim/slide_out_to_top.xml
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/library_pullToRefresh/res/drawable-hdpi/default_ptr_rotate.png b/library_pullToRefresh/res/drawable-hdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..dc641b7
Binary files /dev/null and b/library_pullToRefresh/res/drawable-hdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/res/drawable-hdpi/indicator_arrow.png b/library_pullToRefresh/res/drawable-hdpi/indicator_arrow.png
new file mode 100644
index 0000000..8ae7977
Binary files /dev/null and b/library_pullToRefresh/res/drawable-hdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/res/drawable-mdpi/default_ptr_rotate.png b/library_pullToRefresh/res/drawable-mdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..95b22bd
Binary files /dev/null and b/library_pullToRefresh/res/drawable-mdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/res/drawable-mdpi/indicator_arrow.png b/library_pullToRefresh/res/drawable-mdpi/indicator_arrow.png
new file mode 100644
index 0000000..20fe2c1
Binary files /dev/null and b/library_pullToRefresh/res/drawable-mdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/default_ptr_rotate.png b/library_pullToRefresh/res/drawable-xhdpi/default_ptr_rotate.png
new file mode 100644
index 0000000..00225c9
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/default_ptr_rotate.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/indicator_arrow.png b/library_pullToRefresh/res/drawable-xhdpi/indicator_arrow.png
new file mode 100644
index 0000000..810ff59
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/indicator_arrow.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/loading_01.png b/library_pullToRefresh/res/drawable-xhdpi/loading_01.png
new file mode 100644
index 0000000..a833952
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/loading_01.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/loading_02.png b/library_pullToRefresh/res/drawable-xhdpi/loading_02.png
new file mode 100644
index 0000000..4cb3d40
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/loading_02.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/loading_03.png b/library_pullToRefresh/res/drawable-xhdpi/loading_03.png
new file mode 100644
index 0000000..aa3d0fa
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/loading_03.png differ
diff --git a/library_pullToRefresh/res/drawable-xhdpi/loading_04.png b/library_pullToRefresh/res/drawable-xhdpi/loading_04.png
new file mode 100644
index 0000000..c987a1b
Binary files /dev/null and b/library_pullToRefresh/res/drawable-xhdpi/loading_04.png differ
diff --git a/library_pullToRefresh/res/drawable/indicator_bg_bottom.xml b/library_pullToRefresh/res/drawable/indicator_bg_bottom.xml
new file mode 100644
index 0000000..81a91aa
--- /dev/null
+++ b/library_pullToRefresh/res/drawable/indicator_bg_bottom.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/drawable/indicator_bg_top.xml b/library_pullToRefresh/res/drawable/indicator_bg_top.xml
new file mode 100644
index 0000000..59fa9cf
--- /dev/null
+++ b/library_pullToRefresh/res/drawable/indicator_bg_top.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/drawable/refresh_anim.xml b/library_pullToRefresh/res/drawable/refresh_anim.xml
new file mode 100644
index 0000000..8de1faa
--- /dev/null
+++ b/library_pullToRefresh/res/drawable/refresh_anim.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/layout/pull_to_refresh_header_horizontal.xml b/library_pullToRefresh/res/layout/pull_to_refresh_header_horizontal.xml
new file mode 100644
index 0000000..f05bb03
--- /dev/null
+++ b/library_pullToRefresh/res/layout/pull_to_refresh_header_horizontal.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/layout/pull_to_refresh_header_vertical.xml b/library_pullToRefresh/res/layout/pull_to_refresh_header_vertical.xml
new file mode 100644
index 0000000..31f4229
--- /dev/null
+++ b/library_pullToRefresh/res/layout/pull_to_refresh_header_vertical.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/values-ar/pull_refresh_strings.xml b/library_pullToRefresh/res/values-ar/pull_refresh_strings.xml
new file mode 100644
index 0000000..9177a97
--- /dev/null
+++ b/library_pullToRefresh/res/values-ar/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ اسحب للتحديث…
+ اترك للتحديث…
+ تحميل…
+
diff --git a/library_pullToRefresh/res/values-cs/pull_refresh_strings.xml b/library_pullToRefresh/res/values-cs/pull_refresh_strings.xml
new file mode 100644
index 0000000..c878da0
--- /dev/null
+++ b/library_pullToRefresh/res/values-cs/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Tažením aktualizujete…
+ Uvolněním aktualizujete…
+ Načítání…
+
diff --git a/library_pullToRefresh/res/values-de/pull_refresh_strings.xml b/library_pullToRefresh/res/values-de/pull_refresh_strings.xml
new file mode 100644
index 0000000..901291b
--- /dev/null
+++ b/library_pullToRefresh/res/values-de/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Ziehen zum Aktualisieren…
+ Loslassen zum Aktualisieren…
+ Laden…
+
diff --git a/library_pullToRefresh/res/values-es/pull_refresh_strings.xml b/library_pullToRefresh/res/values-es/pull_refresh_strings.xml
new file mode 100644
index 0000000..5e9d280
--- /dev/null
+++ b/library_pullToRefresh/res/values-es/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Tirar para actualizar…
+ Soltar para actualizar…
+ Cargando…
+
diff --git a/library_pullToRefresh/res/values-fi/pull_refresh_strings.xml b/library_pullToRefresh/res/values-fi/pull_refresh_strings.xml
new file mode 100644
index 0000000..0381287
--- /dev/null
+++ b/library_pullToRefresh/res/values-fi/pull_refresh_strings.xml
@@ -0,0 +1,13 @@
+
+
+
+ Päivitä vetämällä alas…
+ Päivitä vapauttamalla…
+ Päivitetään…
+
+
+ Päivitä vetämällä ylös…
+ @string/pull_to_refresh_release_label
+ @string/pull_to_refresh_refreshing_label
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/values-fr/pull_refresh_strings.xml b/library_pullToRefresh/res/values-fr/pull_refresh_strings.xml
new file mode 100644
index 0000000..fb53ef8
--- /dev/null
+++ b/library_pullToRefresh/res/values-fr/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Tirez pour rafraîchir…
+ Relâcher pour rafraîchir…
+ Chargement…
+
diff --git a/library_pullToRefresh/res/values-he/pull_refresh_strings.xml b/library_pullToRefresh/res/values-he/pull_refresh_strings.xml
new file mode 100644
index 0000000..beedc1f
--- /dev/null
+++ b/library_pullToRefresh/res/values-he/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ שחרר לרענון…
+ טוען…
+
diff --git a/library_pullToRefresh/res/values-it/pull_refresh_strings.xml b/library_pullToRefresh/res/values-it/pull_refresh_strings.xml
new file mode 100644
index 0000000..415fb9e
--- /dev/null
+++ b/library_pullToRefresh/res/values-it/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Tira per aggiornare…
+ Rilascia per aggionare…
+ Caricamento…
+
diff --git a/library_pullToRefresh/res/values-iw/pull_refresh_strings.xml b/library_pullToRefresh/res/values-iw/pull_refresh_strings.xml
new file mode 100644
index 0000000..beedc1f
--- /dev/null
+++ b/library_pullToRefresh/res/values-iw/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ משוך לרענון…
+ שחרר לרענון…
+ טוען…
+
diff --git a/library_pullToRefresh/res/values-ja/pull_refresh_strings.xml b/library_pullToRefresh/res/values-ja/pull_refresh_strings.xml
new file mode 100644
index 0000000..d24842c
--- /dev/null
+++ b/library_pullToRefresh/res/values-ja/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ 画面を引っ張って…
+ 指を離して更新…
+ 読み込み中…
+
diff --git a/library_pullToRefresh/res/values-ko/pull_refresh_strings.xml b/library_pullToRefresh/res/values-ko/pull_refresh_strings.xml
new file mode 100644
index 0000000..53edd59
--- /dev/null
+++ b/library_pullToRefresh/res/values-ko/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ 당겨서 새로 고침…
+ 놓아서 새로 고침…
+ 로드 중…
+
diff --git a/library_pullToRefresh/res/values-nl/pull_refresh_strings.xml b/library_pullToRefresh/res/values-nl/pull_refresh_strings.xml
new file mode 100644
index 0000000..4c063ed
--- /dev/null
+++ b/library_pullToRefresh/res/values-nl/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Sleep om te vernieuwen…
+ Loslaten om te vernieuwen…
+ Laden…
+
diff --git a/library_pullToRefresh/res/values-pl/pull_refresh_strings.xml b/library_pullToRefresh/res/values-pl/pull_refresh_strings.xml
new file mode 100644
index 0000000..007255a
--- /dev/null
+++ b/library_pullToRefresh/res/values-pl/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Pociągnij, aby odświeżyć…
+ Puść, aby odświeżyć…
+ Wczytywanie…
+
diff --git a/library_pullToRefresh/res/values-pt-rBR/pull_refresh_strings.xml b/library_pullToRefresh/res/values-pt-rBR/pull_refresh_strings.xml
new file mode 100644
index 0000000..0ec1ef7
--- /dev/null
+++ b/library_pullToRefresh/res/values-pt-rBR/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Libere para atualizar…
+ Carregando…
+
diff --git a/library_pullToRefresh/res/values-pt/pull_refresh_strings.xml b/library_pullToRefresh/res/values-pt/pull_refresh_strings.xml
new file mode 100644
index 0000000..d08bc63
--- /dev/null
+++ b/library_pullToRefresh/res/values-pt/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Puxe para atualizar…
+ Liberação para atualizar…
+ A carregar…
+
diff --git a/library_pullToRefresh/res/values-ro/pull_refresh_strings.xml b/library_pullToRefresh/res/values-ro/pull_refresh_strings.xml
new file mode 100644
index 0000000..87ddc94
--- /dev/null
+++ b/library_pullToRefresh/res/values-ro/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Trage pentru a reîmprospăta…
+ Eliberează pentru a reîmprospăta…
+ Încărcare…
+
diff --git a/library_pullToRefresh/res/values-ru/pull_refresh_strings.xml b/library_pullToRefresh/res/values-ru/pull_refresh_strings.xml
new file mode 100644
index 0000000..71ddcda
--- /dev/null
+++ b/library_pullToRefresh/res/values-ru/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ Потяните для обновления…
+ Отпустите для обновления…
+ Загрузка…
+
diff --git a/library_pullToRefresh/res/values-zh/pull_refresh_strings.xml b/library_pullToRefresh/res/values-zh/pull_refresh_strings.xml
new file mode 100644
index 0000000..cbb207a
--- /dev/null
+++ b/library_pullToRefresh/res/values-zh/pull_refresh_strings.xml
@@ -0,0 +1,6 @@
+
+
+ 下拉刷新
+ 释放立即刷新
+ 正在载入…
+
diff --git a/library_pullToRefresh/res/values/attrs.xml b/library_pullToRefresh/res/values/attrs.xml
new file mode 100644
index 0000000..c95aa59
--- /dev/null
+++ b/library_pullToRefresh/res/values/attrs.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/values/dimens.xml b/library_pullToRefresh/res/values/dimens.xml
new file mode 100644
index 0000000..24339b5
--- /dev/null
+++ b/library_pullToRefresh/res/values/dimens.xml
@@ -0,0 +1,10 @@
+
+
+
+ 10dp
+ 12dp
+ 4dp
+ 24dp
+ 12dp
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/values/ids.xml b/library_pullToRefresh/res/values/ids.xml
new file mode 100644
index 0000000..26c9ae7
--- /dev/null
+++ b/library_pullToRefresh/res/values/ids.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/res/values/pull_refresh_strings.xml b/library_pullToRefresh/res/values/pull_refresh_strings.xml
new file mode 100644
index 0000000..ae3289a
--- /dev/null
+++ b/library_pullToRefresh/res/values/pull_refresh_strings.xml
@@ -0,0 +1,13 @@
+
+
+
+ 下拉刷新
+ 释放立即刷新
+ 正在刷新…
+
+
+ @string/pull_to_refresh_pull_label
+ @string/pull_to_refresh_release_label
+ @string/pull_to_refresh_refreshing_label
+
+
\ No newline at end of file
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/ILoadingLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/ILoadingLayout.java
new file mode 100644
index 0000000..ff2a957
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/ILoadingLayout.java
@@ -0,0 +1,57 @@
+package com.handmark.pulltorefresh.library;
+
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+
+public interface ILoadingLayout {
+
+ /**
+ * Set the Last Updated Text. This displayed under the main label when
+ * Pulling
+ *
+ * @param label - Label to set
+ */
+ public void setLastUpdatedLabel(CharSequence label);
+
+ /**
+ * Set the drawable used in the loading layout. This is the same as calling
+ * setLoadingDrawable(drawable, Mode.BOTH)
+ *
+ * @param drawable - Drawable to display
+ */
+ public void setLoadingDrawable(Drawable drawable);
+
+ /**
+ * Set Text to show when the Widget is being Pulled
+ * setPullLabel(releaseLabel, Mode.BOTH)
+ *
+ * @param pullLabel - CharSequence to display
+ */
+ public void setPullLabel(CharSequence pullLabel);
+
+ /**
+ * Set Text to show when the Widget is refreshing
+ * setRefreshingLabel(releaseLabel, Mode.BOTH)
+ *
+ * @param refreshingLabel - CharSequence to display
+ */
+ public void setRefreshingLabel(CharSequence refreshingLabel);
+
+ /**
+ * Set Text to show when the Widget is being pulled, and will refresh when
+ * released. This is the same as calling
+ * setReleaseLabel(releaseLabel, Mode.BOTH)
+ *
+ * @param releaseLabel - CharSequence to display
+ */
+ public void setReleaseLabel(CharSequence releaseLabel);
+
+ /**
+ * Set's the Sets the typeface and style in which the text should be
+ * displayed. Please see
+ * {@link android.widget.TextView#setTypeface(Typeface)
+ * TextView#setTypeface(Typeface)}.
+ */
+ public void setTextTypeface(Typeface tf);
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/IPullToRefresh.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/IPullToRefresh.java
new file mode 100644
index 0000000..a06cdd7
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/IPullToRefresh.java
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.view.View;
+import android.view.animation.Interpolator;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.OnPullEventListener;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.State;
+
+public interface IPullToRefresh {
+
+ /**
+ * Demos the Pull-to-Refresh functionality to the user so that they are
+ * aware it is there. This could be useful when the user first opens your
+ * app, etc. The animation will only happen if the Refresh View (ListView,
+ * ScrollView, etc) is in a state where a Pull-to-Refresh could occur by a
+ * user's touch gesture (i.e. scrolled to the top/bottom).
+ *
+ * @return true - if the Demo has been started, false if not.
+ */
+ public boolean demo();
+
+ /**
+ * Get the mode that this view is currently in. This is only really useful
+ * when using Mode.BOTH.
+ *
+ * @return Mode that the view is currently in
+ */
+ public Mode getCurrentMode();
+
+ /**
+ * Returns whether the Touch Events are filtered or not. If true is
+ * returned, then the View will only use touch events where the difference
+ * in the Y-axis is greater than the difference in the X-axis. This means
+ * that the View will not interfere when it is used in a horizontal
+ * scrolling View (such as a ViewPager).
+ *
+ * @return boolean - true if the View is filtering Touch Events
+ */
+ public boolean getFilterTouchEvents();
+
+ /**
+ * Returns a proxy object which allows you to call methods on all of the
+ * LoadingLayouts (the Views which show when Pulling/Refreshing).
+ *
+ * You should not keep the result of this method any longer than you need
+ * it.
+ *
+ * @return Object which will proxy any calls you make on it, to all of the
+ * LoadingLayouts.
+ */
+ public ILoadingLayout getLoadingLayoutProxy();
+
+ /**
+ * Returns a proxy object which allows you to call methods on the
+ * LoadingLayouts (the Views which show when Pulling/Refreshing). The actual
+ * LoadingLayout(s) which will be affected, are chosen by the parameters you
+ * give.
+ *
+ * You should not keep the result of this method any longer than you need
+ * it.
+ *
+ * @param includeStart - Whether to include the Start/Header Views
+ * @param includeEnd - Whether to include the End/Footer Views
+ * @return Object which will proxy any calls you make on it, to the
+ * LoadingLayouts included.
+ */
+ public ILoadingLayout getLoadingLayoutProxy(boolean includeStart, boolean includeEnd);
+
+ /**
+ * Get the mode that this view has been set to. If this returns
+ * Mode.BOTH, you can use getCurrentMode() to
+ * check which mode the view is currently in
+ *
+ * @return Mode that the view has been set to
+ */
+ public Mode getMode();
+
+ /**
+ * Get the Wrapped Refreshable View. Anything returned here has already been
+ * added to the content view.
+ *
+ * @return The View which is currently wrapped
+ */
+ public T getRefreshableView();
+
+ /**
+ * Get whether the 'Refreshing' View should be automatically shown when
+ * refreshing. Returns true by default.
+ *
+ * @return - true if the Refreshing View will be show
+ */
+ public boolean getShowViewWhileRefreshing();
+
+ /**
+ * @return - The state that the View is currently in.
+ */
+ public State getState();
+
+ /**
+ * Whether Pull-to-Refresh is enabled
+ *
+ * @return enabled
+ */
+ public boolean isPullToRefreshEnabled();
+
+ /**
+ * Gets whether Overscroll support is enabled. This is different to
+ * Android's standard Overscroll support (the edge-glow) which is available
+ * from GINGERBREAD onwards
+ *
+ * @return true - if both PullToRefresh-OverScroll and Android's inbuilt
+ * OverScroll are enabled
+ */
+ public boolean isPullToRefreshOverScrollEnabled();
+
+ /**
+ * Returns whether the Widget is currently in the Refreshing mState
+ *
+ * @return true if the Widget is currently refreshing
+ */
+ public boolean isRefreshing();
+
+ /**
+ * Returns whether the widget has enabled scrolling on the Refreshable View
+ * while refreshing.
+ *
+ * @return true if the widget has enabled scrolling while refreshing
+ */
+ public boolean isScrollingWhileRefreshingEnabled();
+
+ /**
+ * Mark the current Refresh as complete. Will Reset the UI and hide the
+ * Refreshing View
+ */
+ public void onRefreshComplete();
+
+ /**
+ * Set the Touch Events to be filtered or not. If set to true, then the View
+ * will only use touch events where the difference in the Y-axis is greater
+ * than the difference in the X-axis. This means that the View will not
+ * interfere when it is used in a horizontal scrolling View (such as a
+ * ViewPager), but will restrict which types of finger scrolls will trigger
+ * the View.
+ *
+ * @param filterEvents - true if you want to filter Touch Events. Default is
+ * true.
+ */
+ public void setFilterTouchEvents(boolean filterEvents);
+
+ /**
+ * Set the mode of Pull-to-Refresh that this view will use.
+ *
+ * @param mode - Mode to set the View to
+ */
+ public void setMode(Mode mode);
+
+ /**
+ * Set OnPullEventListener for the Widget
+ *
+ * @param listener - Listener to be used when the Widget has a pull event to
+ * propogate.
+ */
+ public void setOnPullEventListener(OnPullEventListener listener);
+
+ /**
+ * Set OnRefreshListener for the Widget
+ *
+ * @param listener - Listener to be used when the Widget is set to Refresh
+ */
+ public void setOnRefreshListener(OnRefreshListener listener);
+
+ /**
+ * Set OnRefreshListener for the Widget
+ *
+ * @param listener - Listener to be used when the Widget is set to Refresh
+ */
+ public void setOnRefreshListener(OnRefreshListener2 listener);
+
+ /**
+ * Sets whether Overscroll support is enabled. This is different to
+ * Android's standard Overscroll support (the edge-glow). This setting only
+ * takes effect when running on device with Android v2.3 or greater.
+ *
+ * @param enabled - true if you want Overscroll enabled
+ */
+ public void setPullToRefreshOverScrollEnabled(boolean enabled);
+
+ /**
+ * Sets the Widget to be in the refresh state. The UI will be updated to
+ * show the 'Refreshing' view, and be scrolled to show such.
+ */
+ public void setRefreshing();
+
+ /**
+ * Sets the Widget to be in the refresh state. The UI will be updated to
+ * show the 'Refreshing' view.
+ *
+ * @param doScroll - true if you want to force a scroll to the Refreshing
+ * view.
+ */
+ public void setRefreshing(boolean doScroll);
+
+ /**
+ * Sets the Animation Interpolator that is used for animated scrolling.
+ * Defaults to a DecelerateInterpolator
+ *
+ * @param interpolator - Interpolator to use
+ */
+ public void setScrollAnimationInterpolator(Interpolator interpolator);
+
+ /**
+ * By default the Widget disables scrolling on the Refreshable View while
+ * refreshing. This method can change this behaviour.
+ *
+ * @param scrollingWhileRefreshingEnabled - true if you want to enable
+ * scrolling while refreshing
+ */
+ public void setScrollingWhileRefreshingEnabled(boolean scrollingWhileRefreshingEnabled);
+
+ /**
+ * A mutator to enable/disable whether the 'Refreshing' View should be
+ * automatically shown when refreshing.
+ *
+ * @param showView
+ */
+ public void setShowViewWhileRefreshing(boolean showView);
+
+}
\ No newline at end of file
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/LoadingLayoutProxy.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/LoadingLayoutProxy.java
new file mode 100644
index 0000000..5f76645
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/LoadingLayoutProxy.java
@@ -0,0 +1,73 @@
+package com.handmark.pulltorefresh.library;
+
+import java.util.HashSet;
+
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+
+import com.handmark.pulltorefresh.library.internal.LoadingLayout;
+
+public class LoadingLayoutProxy implements ILoadingLayout {
+
+ private final HashSet mLoadingLayouts;
+
+ LoadingLayoutProxy() {
+ mLoadingLayouts = new HashSet();
+ }
+
+ /**
+ * This allows you to add extra LoadingLayout instances to this proxy. This
+ * is only necessary if you keep your own instances, and want to have them
+ * included in any
+ * {@link PullToRefreshBase#createLoadingLayoutProxy(boolean, boolean)
+ * createLoadingLayoutProxy(...)} calls.
+ *
+ * @param layout - LoadingLayout to have included.
+ */
+ public void addLayout(LoadingLayout layout) {
+ if (null != layout) {
+ mLoadingLayouts.add(layout);
+ }
+ }
+
+ @Override
+ public void setLastUpdatedLabel(CharSequence label) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setLastUpdatedLabel(label);
+ }
+ }
+
+ @Override
+ public void setLoadingDrawable(Drawable drawable) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setLoadingDrawable(drawable);
+ }
+ }
+
+ @Override
+ public void setRefreshingLabel(CharSequence refreshingLabel) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setRefreshingLabel(refreshingLabel);
+ }
+ }
+
+ @Override
+ public void setPullLabel(CharSequence label) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setPullLabel(label);
+ }
+ }
+
+ @Override
+ public void setReleaseLabel(CharSequence label) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setReleaseLabel(label);
+ }
+ }
+
+ public void setTextTypeface(Typeface tf) {
+ for (LoadingLayout layout : mLoadingLayouts) {
+ layout.setTextTypeface(tf);
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/OverscrollHelper.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/OverscrollHelper.java
new file mode 100644
index 0000000..52a20de
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/OverscrollHelper.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.util.Log;
+import android.view.View;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.State;
+
+@TargetApi(9)
+public final class OverscrollHelper {
+
+ static final String LOG_TAG = "OverscrollHelper";
+ static final float DEFAULT_OVERSCROLL_SCALE = 1f;
+
+ /**
+ * Helper method for Overscrolling that encapsulates all of the necessary
+ * function.
+ *
+ * This should only be used on AdapterView's such as ListView as it just
+ * calls through to overScrollBy() with the scrollRange = 0. AdapterView's
+ * do not have a scroll range (i.e. getScrollY() doesn't work).
+ *
+ * @param view - PullToRefreshView that is calling this.
+ * @param deltaX - Change in X in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollX - Current X scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param deltaY - Change in Y in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollY - Current Y scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param isTouchEvent - true if this scroll operation is the result of a
+ * touch event, passed through from from overScrollBy call
+ */
+ public static void overScrollBy(final PullToRefreshBase> view, final int deltaX, final int scrollX,
+ final int deltaY, final int scrollY, final boolean isTouchEvent) {
+ overScrollBy(view, deltaX, scrollX, deltaY, scrollY, 0, isTouchEvent);
+ }
+
+ /**
+ * Helper method for Overscrolling that encapsulates all of the necessary
+ * function. This version of the call is used for Views that need to specify
+ * a Scroll Range but scroll back to it's edge correctly.
+ *
+ * @param view - PullToRefreshView that is calling this.
+ * @param deltaX - Change in X in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollX - Current X scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param deltaY - Change in Y in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollY - Current Y scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param scrollRange - Scroll Range of the View, specifically needed for
+ * ScrollView
+ * @param isTouchEvent - true if this scroll operation is the result of a
+ * touch event, passed through from from overScrollBy call
+ */
+ public static void overScrollBy(final PullToRefreshBase> view, final int deltaX, final int scrollX,
+ final int deltaY, final int scrollY, final int scrollRange, final boolean isTouchEvent) {
+ overScrollBy(view, deltaX, scrollX, deltaY, scrollY, scrollRange, 0, DEFAULT_OVERSCROLL_SCALE, isTouchEvent);
+ }
+
+ /**
+ * Helper method for Overscrolling that encapsulates all of the necessary
+ * function. This is the advanced version of the call.
+ *
+ * @param view - PullToRefreshView that is calling this.
+ * @param deltaX - Change in X in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollX - Current X scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param deltaY - Change in Y in pixels, passed through from from
+ * overScrollBy call
+ * @param scrollY - Current Y scroll value in pixels before applying deltaY,
+ * passed through from from overScrollBy call
+ * @param scrollRange - Scroll Range of the View, specifically needed for
+ * ScrollView
+ * @param fuzzyThreshold - Threshold for which the values how fuzzy we
+ * should treat the other values. Needed for WebView as it
+ * doesn't always scroll back to it's edge. 0 = no fuzziness.
+ * @param scaleFactor - Scale Factor for overscroll amount
+ * @param isTouchEvent - true if this scroll operation is the result of a
+ * touch event, passed through from from overScrollBy call
+ */
+ public static void overScrollBy(final PullToRefreshBase> view, final int deltaX, final int scrollX,
+ final int deltaY, final int scrollY, final int scrollRange, final int fuzzyThreshold,
+ final float scaleFactor, final boolean isTouchEvent) {
+
+ final int deltaValue, currentScrollValue, scrollValue;
+ switch (view.getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ deltaValue = deltaX;
+ scrollValue = scrollX;
+ currentScrollValue = view.getScrollX();
+ break;
+ case VERTICAL:
+ default:
+ deltaValue = deltaY;
+ scrollValue = scrollY;
+ currentScrollValue = view.getScrollY();
+ break;
+ }
+
+ // Check that OverScroll is enabled and that we're not currently
+ // refreshing.
+ if (view.isPullToRefreshOverScrollEnabled() && !view.isRefreshing()) {
+ final Mode mode = view.getMode();
+
+ // Check that Pull-to-Refresh is enabled, and the event isn't from
+ // touch
+ if (mode.permitsPullToRefresh() && !isTouchEvent && deltaValue != 0) {
+ final int newScrollValue = (deltaValue + scrollValue);
+
+ if (PullToRefreshBase.DEBUG) {
+ Log.d(LOG_TAG, "OverScroll. DeltaX: " + deltaX + ", ScrollX: " + scrollX + ", DeltaY: " + deltaY
+ + ", ScrollY: " + scrollY + ", NewY: " + newScrollValue + ", ScrollRange: " + scrollRange
+ + ", CurrentScroll: " + currentScrollValue);
+ }
+
+ if (newScrollValue < (0 - fuzzyThreshold)) {
+ // Check the mode supports the overscroll direction, and
+ // then move scroll
+ if (mode.showHeaderLoadingLayout()) {
+ // If we're currently at zero, we're about to start
+ // overscrolling, so change the state
+ if (currentScrollValue == 0) {
+ view.setState(State.OVERSCROLLING);
+ }
+
+ view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue)));
+ }
+ } else if (newScrollValue > (scrollRange + fuzzyThreshold)) {
+ // Check the mode supports the overscroll direction, and
+ // then move scroll
+ if (mode.showFooterLoadingLayout()) {
+ // If we're currently at zero, we're about to start
+ // overscrolling, so change the state
+ if (currentScrollValue == 0) {
+ view.setState(State.OVERSCROLLING);
+ }
+
+ view.setHeaderScroll((int) (scaleFactor * (currentScrollValue + newScrollValue - scrollRange)));
+ }
+ } else if (Math.abs(newScrollValue) <= fuzzyThreshold
+ || Math.abs(newScrollValue - scrollRange) <= fuzzyThreshold) {
+ // Means we've stopped overscrolling, so scroll back to 0
+ view.setState(State.RESET);
+ }
+ } else if (isTouchEvent && State.OVERSCROLLING == view.getState()) {
+ // This condition means that we were overscrolling from a fling,
+ // but the user has touched the View and is now overscrolling
+ // from touch instead. We need to just reset.
+ view.setState(State.RESET);
+ }
+ }
+ }
+
+ static boolean isAndroidOverScrollEnabled(View view) {
+ return view.getOverScrollMode() != View.OVER_SCROLL_NEVER;
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java
new file mode 100644
index 0000000..cfff837
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java
@@ -0,0 +1,475 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
+import android.widget.Adapter;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.ListAdapter;
+
+import com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor;
+import com.handmark.pulltorefresh.library.internal.IndicatorLayout;
+
+public abstract class PullToRefreshAdapterViewBase extends PullToRefreshBase implements
+ OnScrollListener {
+
+ private static FrameLayout.LayoutParams convertEmptyViewLayoutParams(ViewGroup.LayoutParams lp) {
+ FrameLayout.LayoutParams newLp = null;
+
+ if (null != lp) {
+ newLp = new FrameLayout.LayoutParams(lp);
+
+ if (lp instanceof LinearLayout.LayoutParams) {
+ newLp.gravity = ((LinearLayout.LayoutParams) lp).gravity;
+ } else {
+ newLp.gravity = Gravity.CENTER;
+ }
+ }
+
+ return newLp;
+ }
+
+ private boolean mLastItemVisible;
+ private OnScrollListener mOnScrollListener;
+ private OnLastItemVisibleListener mOnLastItemVisibleListener;
+ private View mEmptyView;
+
+ private IndicatorLayout mIndicatorIvTop;
+ private IndicatorLayout mIndicatorIvBottom;
+
+ private boolean mShowIndicator;
+ private boolean mScrollEmptyView = true;
+
+ public PullToRefreshAdapterViewBase(Context context) {
+ super(context);
+ mRefreshableView.setOnScrollListener(this);
+ }
+
+ public PullToRefreshAdapterViewBase(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mRefreshableView.setOnScrollListener(this);
+ }
+
+ public PullToRefreshAdapterViewBase(Context context, Mode mode) {
+ super(context, mode);
+ mRefreshableView.setOnScrollListener(this);
+ }
+
+ public PullToRefreshAdapterViewBase(Context context, Mode mode, AnimationStyle animStyle) {
+ super(context, mode, animStyle);
+ mRefreshableView.setOnScrollListener(this);
+ }
+
+ /**
+ * Gets whether an indicator graphic should be displayed when the View is in
+ * a state where a Pull-to-Refresh can happen. An example of this state is
+ * when the Adapter View is scrolled to the top and the mode is set to
+ * {@link Mode#PULL_FROM_START}. The default value is true if
+ * {@link PullToRefreshBase#isPullToRefreshOverScrollEnabled()
+ * isPullToRefreshOverScrollEnabled()} returns false.
+ *
+ * @return true if the indicators will be shown
+ */
+ public boolean getShowIndicator() {
+ return mShowIndicator;
+ }
+
+ public final void onScroll(final AbsListView view, final int firstVisibleItem, final int visibleItemCount,
+ final int totalItemCount) {
+
+ if (DEBUG) {
+ Log.d(LOG_TAG, "First Visible: " + firstVisibleItem + ". Visible Count: " + visibleItemCount
+ + ". Total Items:" + totalItemCount);
+ }
+
+ /**
+ * Set whether the Last Item is Visible. lastVisibleItemIndex is a
+ * zero-based index, so we minus one totalItemCount to check
+ */
+ if (null != mOnLastItemVisibleListener) {
+ mLastItemVisible = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1);
+ }
+
+ // If we're showing the indicator, check positions...
+ if (getShowIndicatorInternal()) {
+ updateIndicatorViewsVisibility();
+ }
+
+ // Finally call OnScrollListener if we have one
+ if (null != mOnScrollListener) {
+ mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
+ }
+ }
+
+ public final void onScrollStateChanged(final AbsListView view, final int state) {
+ /**
+ * Check that the scrolling has stopped, and that the last item is
+ * visible.
+ */
+ if (state == OnScrollListener.SCROLL_STATE_IDLE && null != mOnLastItemVisibleListener && mLastItemVisible) {
+ mOnLastItemVisibleListener.onLastItemVisible();
+ }
+
+ if (null != mOnScrollListener) {
+ mOnScrollListener.onScrollStateChanged(view, state);
+ }
+ }
+
+ /**
+ * Pass-through method for {@link PullToRefreshBase#getRefreshableView()
+ * getRefreshableView()}.
+ * {@link AdapterView#setAdapter(android.widget.Adapter)}
+ * setAdapter(adapter)}. This is just for convenience!
+ *
+ * @param adapter - Adapter to set
+ */
+ public void setAdapter(ListAdapter adapter) {
+ ((AdapterView) mRefreshableView).setAdapter(adapter);
+ }
+
+ /**
+ * Sets the Empty View to be used by the Adapter View.
+ *
+ * We need it handle it ourselves so that we can Pull-to-Refresh when the
+ * Empty View is shown.
+ *
+ * Please note, you do not usually need to call this method
+ * yourself. Calling setEmptyView on the AdapterView will automatically call
+ * this method and set everything up. This includes when the Android
+ * Framework automatically sets the Empty View based on it's ID.
+ *
+ * @param newEmptyView - Empty View to be used
+ */
+ public final void setEmptyView(View newEmptyView) {
+ FrameLayout refreshableViewWrapper = getRefreshableViewWrapper();
+
+ if (null != newEmptyView) {
+ // New view needs to be clickable so that Android recognizes it as a
+ // target for Touch Events
+ newEmptyView.setClickable(true);
+
+ ViewParent newEmptyViewParent = newEmptyView.getParent();
+ if (null != newEmptyViewParent && newEmptyViewParent instanceof ViewGroup) {
+ ((ViewGroup) newEmptyViewParent).removeView(newEmptyView);
+ }
+
+ // We need to convert any LayoutParams so that it works in our
+ // FrameLayout
+ FrameLayout.LayoutParams lp = convertEmptyViewLayoutParams(newEmptyView.getLayoutParams());
+ if (null != lp) {
+ refreshableViewWrapper.addView(newEmptyView, lp);
+ } else {
+ refreshableViewWrapper.addView(newEmptyView);
+ }
+ }
+
+ if (mRefreshableView instanceof EmptyViewMethodAccessor) {
+ ((EmptyViewMethodAccessor) mRefreshableView).setEmptyViewInternal(newEmptyView);
+ } else {
+ mRefreshableView.setEmptyView(newEmptyView);
+ }
+ mEmptyView = newEmptyView;
+ }
+
+ /**
+ * Pass-through method for {@link PullToRefreshBase#getRefreshableView()
+ * getRefreshableView()}.
+ * {@link AdapterView#setOnItemClickListener(OnItemClickListener)
+ * setOnItemClickListener(listener)}. This is just for convenience!
+ *
+ * @param listener - OnItemClickListener to use
+ */
+ public void setOnItemClickListener(OnItemClickListener listener) {
+ mRefreshableView.setOnItemClickListener(listener);
+ }
+
+ public final void setOnLastItemVisibleListener(OnLastItemVisibleListener listener) {
+ mOnLastItemVisibleListener = listener;
+ }
+
+ public final void setOnScrollListener(OnScrollListener listener) {
+ mOnScrollListener = listener;
+ }
+
+ public final void setScrollEmptyView(boolean doScroll) {
+ mScrollEmptyView = doScroll;
+ }
+
+ /**
+ * Sets whether an indicator graphic should be displayed when the View is in
+ * a state where a Pull-to-Refresh can happen. An example of this state is
+ * when the Adapter View is scrolled to the top and the mode is set to
+ * {@link Mode#PULL_FROM_START}
+ *
+ * @param showIndicator - true if the indicators should be shown.
+ */
+ public void setShowIndicator(boolean showIndicator) {
+ mShowIndicator = showIndicator;
+
+ if (getShowIndicatorInternal()) {
+ // If we're set to Show Indicator, add/update them
+ addIndicatorViews();
+ } else {
+ // If not, then remove then
+ removeIndicatorViews();
+ }
+ }
+
+ ;
+
+ @Override
+ protected void onPullToRefresh() {
+ super.onPullToRefresh();
+
+ if (getShowIndicatorInternal()) {
+ switch (getCurrentMode()) {
+ case PULL_FROM_END:
+ mIndicatorIvBottom.pullToRefresh();
+ break;
+ case PULL_FROM_START:
+ mIndicatorIvTop.pullToRefresh();
+ break;
+ default:
+ // NO-OP
+ break;
+ }
+ }
+ }
+
+ protected void onRefreshing(boolean doScroll) {
+ super.onRefreshing(doScroll);
+
+ if (getShowIndicatorInternal()) {
+ updateIndicatorViewsVisibility();
+ }
+ }
+
+ @Override
+ protected void onReleaseToRefresh() {
+ super.onReleaseToRefresh();
+
+ if (getShowIndicatorInternal()) {
+ switch (getCurrentMode()) {
+ case PULL_FROM_END:
+ mIndicatorIvBottom.releaseToRefresh();
+ break;
+ case PULL_FROM_START:
+ mIndicatorIvTop.releaseToRefresh();
+ break;
+ default:
+ // NO-OP
+ break;
+ }
+ }
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+
+ if (getShowIndicatorInternal()) {
+ updateIndicatorViewsVisibility();
+ }
+ }
+
+ @Override
+ protected void handleStyledAttributes(TypedArray a) {
+ // Set Show Indicator to the XML value, or default value
+ mShowIndicator = a.getBoolean(R.styleable.PullToRefresh_ptrShowIndicator, !isPullToRefreshOverScrollEnabled());
+ }
+
+ protected boolean isReadyForPullStart() {
+ return isFirstItemVisible();
+ }
+
+ protected boolean isReadyForPullEnd() {
+ return isLastItemVisible();
+ }
+
+ @Override
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ super.onScrollChanged(l, t, oldl, oldt);
+ if (null != mEmptyView && !mScrollEmptyView) {
+ mEmptyView.scrollTo(-l, -t);
+ }
+ }
+
+ @Override
+ protected void updateUIForMode() {
+ super.updateUIForMode();
+
+ // Check Indicator Views consistent with new Mode
+ if (getShowIndicatorInternal()) {
+ addIndicatorViews();
+ } else {
+ removeIndicatorViews();
+ }
+ }
+
+ private void addIndicatorViews() {
+ Mode mode = getMode();
+ FrameLayout refreshableViewWrapper = getRefreshableViewWrapper();
+
+ if (mode.showHeaderLoadingLayout() && null == mIndicatorIvTop) {
+ // If the mode can pull down, and we don't have one set already
+ mIndicatorIvTop = new IndicatorLayout(getContext(), Mode.PULL_FROM_START);
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ params.rightMargin = getResources().getDimensionPixelSize(R.dimen.indicator_right_padding);
+ params.gravity = Gravity.TOP | Gravity.RIGHT;
+ refreshableViewWrapper.addView(mIndicatorIvTop, params);
+
+ } else if (!mode.showHeaderLoadingLayout() && null != mIndicatorIvTop) {
+ // If we can't pull down, but have a View then remove it
+ refreshableViewWrapper.removeView(mIndicatorIvTop);
+ mIndicatorIvTop = null;
+ }
+
+ if (mode.showFooterLoadingLayout() && null == mIndicatorIvBottom) {
+ // If the mode can pull down, and we don't have one set already
+ mIndicatorIvBottom = new IndicatorLayout(getContext(), Mode.PULL_FROM_END);
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ params.rightMargin = getResources().getDimensionPixelSize(R.dimen.indicator_right_padding);
+ params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
+ refreshableViewWrapper.addView(mIndicatorIvBottom, params);
+
+ } else if (!mode.showFooterLoadingLayout() && null != mIndicatorIvBottom) {
+ // If we can't pull down, but have a View then remove it
+ refreshableViewWrapper.removeView(mIndicatorIvBottom);
+ mIndicatorIvBottom = null;
+ }
+ }
+
+ private boolean getShowIndicatorInternal() {
+ return mShowIndicator && isPullToRefreshEnabled();
+ }
+
+ private boolean isFirstItemVisible() {
+ final Adapter adapter = mRefreshableView.getAdapter();
+
+ if (null == adapter || adapter.isEmpty()) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "isFirstItemVisible. Empty View.");
+ }
+ return true;
+
+ } else {
+
+ /**
+ * This check should really just be:
+ * mRefreshableView.getFirstVisiblePosition() == 0, but PtRListView
+ * internally use a HeaderView which messes the positions up. For
+ * now we'll just add one to account for it and rely on the inner
+ * condition which checks getTop().
+ */
+ if (mRefreshableView.getFirstVisiblePosition() <= 1) {
+ final View firstVisibleChild = mRefreshableView.getChildAt(0);
+ if (firstVisibleChild != null) {
+ return firstVisibleChild.getTop() >= mRefreshableView.getTop();
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private boolean isLastItemVisible() {
+ final Adapter adapter = mRefreshableView.getAdapter();
+
+ if (null == adapter || adapter.isEmpty()) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "isLastItemVisible. Empty View.");
+ }
+ return true;
+ } else {
+ final int lastItemPosition = mRefreshableView.getCount() - 1;
+ final int lastVisiblePosition = mRefreshableView.getLastVisiblePosition();
+
+ if (DEBUG) {
+ Log.d(LOG_TAG, "isLastItemVisible. Last Item Position: " + lastItemPosition + " Last Visible Pos: "
+ + lastVisiblePosition);
+ }
+
+ /**
+ * This check should really just be: lastVisiblePosition ==
+ * lastItemPosition, but PtRListView internally uses a FooterView
+ * which messes the positions up. For me we'll just subtract one to
+ * account for it and rely on the inner condition which checks
+ * getBottom().
+ */
+ if (lastVisiblePosition >= lastItemPosition - 1) {
+ final int childIndex = lastVisiblePosition - mRefreshableView.getFirstVisiblePosition();
+ final View lastVisibleChild = mRefreshableView.getChildAt(childIndex);
+ if (lastVisibleChild != null) {
+ return lastVisibleChild.getBottom() <= mRefreshableView.getBottom();
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private void removeIndicatorViews() {
+ if (null != mIndicatorIvTop) {
+ getRefreshableViewWrapper().removeView(mIndicatorIvTop);
+ mIndicatorIvTop = null;
+ }
+
+ if (null != mIndicatorIvBottom) {
+ getRefreshableViewWrapper().removeView(mIndicatorIvBottom);
+ mIndicatorIvBottom = null;
+ }
+ }
+
+ private void updateIndicatorViewsVisibility() {
+ if (null != mIndicatorIvTop) {
+ if (!isRefreshing() && isReadyForPullStart()) {
+ if (!mIndicatorIvTop.isVisible()) {
+ mIndicatorIvTop.show();
+ }
+ } else {
+ if (mIndicatorIvTop.isVisible()) {
+ mIndicatorIvTop.hide();
+ }
+ }
+ }
+
+ if (null != mIndicatorIvBottom) {
+ if (!isRefreshing() && isReadyForPullEnd()) {
+ if (!mIndicatorIvBottom.isVisible()) {
+ mIndicatorIvBottom.show();
+ }
+ } else {
+ if (mIndicatorIvBottom.isVisible()) {
+ mIndicatorIvBottom.hide();
+ }
+ }
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshBase.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshBase.java
new file mode 100644
index 0000000..df71277
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshBase.java
@@ -0,0 +1,1656 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.animation.DecelerateInterpolator;
+import android.view.animation.Interpolator;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+import com.handmark.pulltorefresh.library.internal.FlipLoadingLayout;
+import com.handmark.pulltorefresh.library.internal.LoadingLayout;
+import com.handmark.pulltorefresh.library.internal.RotateLoadingLayout;
+import com.handmark.pulltorefresh.library.internal.TweenAnimLoadingLayout;
+import com.handmark.pulltorefresh.library.internal.Utils;
+import com.handmark.pulltorefresh.library.internal.ViewCompat;
+
+public abstract class PullToRefreshBase extends LinearLayout implements IPullToRefresh {
+
+ // ===========================================================
+ // Constants
+ // ===========================================================
+
+ static final boolean DEBUG = false;
+
+ static final boolean USE_HW_LAYERS = false;
+
+ static final String LOG_TAG = "PullToRefresh";
+
+ static final float FRICTION = 2.0f;
+
+ public static final int SMOOTH_SCROLL_DURATION_MS = 200;
+ public static final int SMOOTH_SCROLL_LONG_DURATION_MS = 325;
+ static final int DEMO_SCROLL_INTERVAL = 225;
+
+ static final String STATE_STATE = "ptr_state";
+ static final String STATE_MODE = "ptr_mode";
+ static final String STATE_CURRENT_MODE = "ptr_current_mode";
+ static final String STATE_SCROLLING_REFRESHING_ENABLED = "ptr_disable_scrolling";
+ static final String STATE_SHOW_REFRESHING_VIEW = "ptr_show_refreshing_view";
+ static final String STATE_SUPER = "ptr_super";
+
+ // ===========================================================
+ // Fields
+ // ===========================================================
+
+ private int mTouchSlop;
+ private float mLastMotionX, mLastMotionY;
+ private float mInitialMotionX, mInitialMotionY;
+
+ private boolean mIsBeingDragged = false;
+ private State mState = State.RESET;
+ private Mode mMode = Mode.getDefault();
+
+ private Mode mCurrentMode;
+ T mRefreshableView;
+ private FrameLayout mRefreshableViewWrapper;
+
+ private boolean mShowViewWhileRefreshing = true;
+ private boolean mScrollingWhileRefreshingEnabled = false;
+ private boolean mFilterTouchEvents = true;
+ private boolean mOverScrollEnabled = true;
+ private boolean mLayoutVisibilityChangesEnabled = true;
+
+ private Interpolator mScrollAnimationInterpolator;
+ private AnimationStyle mLoadingAnimationStyle = AnimationStyle.getDefault();
+
+ private LoadingLayout mHeaderLayout;
+ private LoadingLayout mFooterLayout;
+
+ private OnRefreshListener mOnRefreshListener;
+ private OnRefreshListener2 mOnRefreshListener2;
+ private OnPullEventListener mOnPullEventListener;
+
+ private SmoothScrollRunnable mCurrentSmoothScrollRunnable;
+
+ // ===========================================================
+ // Constructors
+ // ===========================================================
+
+ public PullToRefreshBase(Context context) {
+ super(context);
+ init(context, null);
+ }
+
+ public PullToRefreshBase(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context, attrs);
+ }
+
+ public PullToRefreshBase(Context context, Mode mode) {
+ super(context);
+ mMode = mode;
+ init(context, null);
+ }
+
+ public PullToRefreshBase(Context context, Mode mode, AnimationStyle animStyle) {
+ super(context);
+ mMode = mode;
+ mLoadingAnimationStyle = animStyle;
+ init(context, null);
+ }
+
+ @Override
+ public void addView(View child, int index, ViewGroup.LayoutParams params) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "addView: " + child.getClass().getSimpleName());
+ }
+
+ final T refreshableView = getRefreshableView();
+
+ if (refreshableView instanceof ViewGroup) {
+ ((ViewGroup) refreshableView).addView(child, index, params);
+ } else {
+ throw new UnsupportedOperationException("Refreshable View is not a ViewGroup so can't addView");
+ }
+ }
+
+ @Override
+ public final boolean demo() {
+ if (mMode.showHeaderLoadingLayout() && isReadyForPullStart()) {
+ smoothScrollToAndBack(-getHeaderSize() * 2);
+ return true;
+ } else if (mMode.showFooterLoadingLayout() && isReadyForPullEnd()) {
+ smoothScrollToAndBack(getFooterSize() * 2);
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public final Mode getCurrentMode() {
+ return mCurrentMode;
+ }
+
+ @Override
+ public final boolean getFilterTouchEvents() {
+ return mFilterTouchEvents;
+ }
+
+ @Override
+ public final ILoadingLayout getLoadingLayoutProxy() {
+ return getLoadingLayoutProxy(true, true);
+ }
+
+ @Override
+ public final ILoadingLayout getLoadingLayoutProxy(boolean includeStart, boolean includeEnd) {
+ return createLoadingLayoutProxy(includeStart, includeEnd);
+ }
+
+ @Override
+ public final Mode getMode() {
+ return mMode;
+ }
+
+ @Override
+ public final T getRefreshableView() {
+ return mRefreshableView;
+ }
+
+ @Override
+ public final boolean getShowViewWhileRefreshing() {
+ return mShowViewWhileRefreshing;
+ }
+
+ @Override
+ public final State getState() {
+ return mState;
+ }
+
+ /**
+ * @deprecated See {@link #isScrollingWhileRefreshingEnabled()}.
+ */
+ public final boolean isDisableScrollingWhileRefreshing() {
+ return !isScrollingWhileRefreshingEnabled();
+ }
+
+ @Override
+ public final boolean isPullToRefreshEnabled() {
+ return mMode.permitsPullToRefresh();
+ }
+
+ @Override
+ public final boolean isPullToRefreshOverScrollEnabled() {
+ return VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD && mOverScrollEnabled
+ && OverscrollHelper.isAndroidOverScrollEnabled(mRefreshableView);
+ }
+
+ @Override
+ public final boolean isRefreshing() {
+ return mState == State.REFRESHING || mState == State.MANUAL_REFRESHING;
+ }
+
+ @Override
+ public final boolean isScrollingWhileRefreshingEnabled() {
+ return mScrollingWhileRefreshingEnabled;
+ }
+
+ @Override
+ public final boolean onInterceptTouchEvent(MotionEvent event) {
+
+ if (!isPullToRefreshEnabled()) {
+ return false;
+ }
+
+ final int action = event.getAction();
+
+ if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
+ mIsBeingDragged = false;
+ return false;
+ }
+
+ if (action != MotionEvent.ACTION_DOWN && mIsBeingDragged) {
+ return true;
+ }
+
+ switch (action) {
+ case MotionEvent.ACTION_MOVE: {
+ // If we're refreshing, and the flag is set. Eat all MOVE events
+ if (!mScrollingWhileRefreshingEnabled && isRefreshing()) {
+ return true;
+ }
+
+ if (isReadyForPull()) {
+ final float y = event.getY(), x = event.getX();
+ final float diff, oppositeDiff, absDiff;
+
+ // We need to use the correct values, based on scroll
+ // direction
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ diff = x - mLastMotionX;
+ oppositeDiff = y - mLastMotionY;
+ break;
+ case VERTICAL:
+ default:
+ diff = y - mLastMotionY;
+ oppositeDiff = x - mLastMotionX;
+ break;
+ }
+ absDiff = Math.abs(diff);
+
+ if (absDiff > mTouchSlop && (!mFilterTouchEvents || absDiff > Math.abs(oppositeDiff))) {
+ if (mMode.showHeaderLoadingLayout() && diff >= 1f && isReadyForPullStart()) {
+ mLastMotionY = y;
+ mLastMotionX = x;
+ mIsBeingDragged = true;
+ if (mMode == Mode.BOTH) {
+ mCurrentMode = Mode.PULL_FROM_START;
+ }
+ } else if (mMode.showFooterLoadingLayout() && diff <= -1f && isReadyForPullEnd()) {
+ mLastMotionY = y;
+ mLastMotionX = x;
+ mIsBeingDragged = true;
+ if (mMode == Mode.BOTH) {
+ mCurrentMode = Mode.PULL_FROM_END;
+ }
+ }
+ }
+ }
+ break;
+ }
+ case MotionEvent.ACTION_DOWN: {
+ if (isReadyForPull()) {
+ mLastMotionY = mInitialMotionY = event.getY();
+ mLastMotionX = mInitialMotionX = event.getX();
+ mIsBeingDragged = false;
+ }
+ break;
+ }
+ }
+
+ return mIsBeingDragged;
+ }
+
+ @Override
+ public final void onRefreshComplete() {
+ if (isRefreshing()) {
+ setState(State.RESET);
+ }
+ }
+
+ @Override
+ public final boolean onTouchEvent(MotionEvent event) {
+
+ if (!isPullToRefreshEnabled()) {
+ return false;
+ }
+
+ // If we're refreshing, and the flag is set. Eat the event
+ if (!mScrollingWhileRefreshingEnabled && isRefreshing()) {
+ return true;
+ }
+
+ if (event.getAction() == MotionEvent.ACTION_DOWN && event.getEdgeFlags() != 0) {
+ return false;
+ }
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_MOVE: {
+ if (mIsBeingDragged) {
+ mLastMotionY = event.getY();
+ mLastMotionX = event.getX();
+ pullEvent();
+ return true;
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_DOWN: {
+ if (isReadyForPull()) {
+ mLastMotionY = mInitialMotionY = event.getY();
+ mLastMotionX = mInitialMotionX = event.getX();
+ return true;
+ }
+ break;
+ }
+
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP: {
+ if (mIsBeingDragged) {
+ mIsBeingDragged = false;
+
+ if (mState == State.RELEASE_TO_REFRESH
+ && (null != mOnRefreshListener || null != mOnRefreshListener2)) {
+ setState(State.REFRESHING, true);
+ return true;
+ }
+
+ // If we're already refreshing, just scroll back to the top
+ if (isRefreshing()) {
+ smoothScrollTo(0);
+ return true;
+ }
+
+ // If we haven't returned by here, then we're not in a state
+ // to pull, so just reset
+ setState(State.RESET);
+
+ return true;
+ }
+ break;
+ }
+ }
+
+ return false;
+ }
+
+ public final void setScrollingWhileRefreshingEnabled(boolean allowScrollingWhileRefreshing) {
+ mScrollingWhileRefreshingEnabled = allowScrollingWhileRefreshing;
+ }
+
+ /**
+ * @deprecated See {@link #setScrollingWhileRefreshingEnabled(boolean)}
+ */
+ public void setDisableScrollingWhileRefreshing(boolean disableScrollingWhileRefreshing) {
+ setScrollingWhileRefreshingEnabled(!disableScrollingWhileRefreshing);
+ }
+
+ @Override
+ public final void setFilterTouchEvents(boolean filterEvents) {
+ mFilterTouchEvents = filterEvents;
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy()}.
+ */
+ public void setLastUpdatedLabel(CharSequence label) {
+ getLoadingLayoutProxy().setLastUpdatedLabel(label);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy()}.
+ */
+ public void setLoadingDrawable(Drawable drawable) {
+ getLoadingLayoutProxy().setLoadingDrawable(drawable);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy(boolean, boolean)}.
+ */
+ public void setLoadingDrawable(Drawable drawable, Mode mode) {
+ getLoadingLayoutProxy(mode.showHeaderLoadingLayout(), mode.showFooterLoadingLayout()).setLoadingDrawable(
+ drawable);
+ }
+
+ @Override
+ public void setLongClickable(boolean longClickable) {
+ getRefreshableView().setLongClickable(longClickable);
+ }
+
+ @Override
+ public final void setMode(Mode mode) {
+ if (mode != mMode) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "Setting mode to: " + mode);
+ }
+ mMode = mode;
+ updateUIForMode();
+ }
+ }
+
+ public void setOnPullEventListener(OnPullEventListener listener) {
+ mOnPullEventListener = listener;
+ }
+
+ @Override
+ public final void setOnRefreshListener(OnRefreshListener listener) {
+ mOnRefreshListener = listener;
+ mOnRefreshListener2 = null;
+ }
+
+ @Override
+ public final void setOnRefreshListener(OnRefreshListener2 listener) {
+ mOnRefreshListener2 = listener;
+ mOnRefreshListener = null;
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy()}.
+ */
+ public void setPullLabel(CharSequence pullLabel) {
+ getLoadingLayoutProxy().setPullLabel(pullLabel);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy(boolean, boolean)}.
+ */
+ public void setPullLabel(CharSequence pullLabel, Mode mode) {
+ getLoadingLayoutProxy(mode.showHeaderLoadingLayout(), mode.showFooterLoadingLayout()).setPullLabel(pullLabel);
+ }
+
+ /**
+ * @param enable Whether Pull-To-Refresh should be used
+ * @deprecated This simple calls setMode with an appropriate mode based on
+ * the passed value.
+ */
+ public final void setPullToRefreshEnabled(boolean enable) {
+ setMode(enable ? Mode.getDefault() : Mode.DISABLED);
+ }
+
+ @Override
+ public final void setPullToRefreshOverScrollEnabled(boolean enabled) {
+ mOverScrollEnabled = enabled;
+ }
+
+ @Override
+ public final void setRefreshing() {
+ setRefreshing(true);
+ }
+
+ @Override
+ public final void setRefreshing(boolean doScroll) {
+ if (!isRefreshing()) {
+ setState(State.MANUAL_REFRESHING, doScroll);
+ }
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy()}.
+ */
+ public void setRefreshingLabel(CharSequence refreshingLabel) {
+ getLoadingLayoutProxy().setRefreshingLabel(refreshingLabel);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy(boolean, boolean)}.
+ */
+ public void setRefreshingLabel(CharSequence refreshingLabel, Mode mode) {
+ getLoadingLayoutProxy(mode.showHeaderLoadingLayout(), mode.showFooterLoadingLayout()).setRefreshingLabel(
+ refreshingLabel);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy()}.
+ */
+ public void setReleaseLabel(CharSequence releaseLabel) {
+ setReleaseLabel(releaseLabel, Mode.BOTH);
+ }
+
+ /**
+ * @deprecated You should now call this method on the result of
+ * {@link #getLoadingLayoutProxy(boolean, boolean)}.
+ */
+ public void setReleaseLabel(CharSequence releaseLabel, Mode mode) {
+ getLoadingLayoutProxy(mode.showHeaderLoadingLayout(), mode.showFooterLoadingLayout()).setReleaseLabel(
+ releaseLabel);
+ }
+
+ public void setScrollAnimationInterpolator(Interpolator interpolator) {
+ mScrollAnimationInterpolator = interpolator;
+ }
+
+ @Override
+ public final void setShowViewWhileRefreshing(boolean showView) {
+ mShowViewWhileRefreshing = showView;
+ }
+
+ /**
+ * @return Either {@link Orientation#VERTICAL} or
+ * {@link Orientation#HORIZONTAL} depending on the scroll direction.
+ */
+ public abstract Orientation getPullToRefreshScrollDirection();
+
+ final void setState(State state, final boolean... params) {
+ mState = state;
+ if (DEBUG) {
+ Log.d(LOG_TAG, "State: " + mState.name());
+ }
+
+ switch (mState) {
+ case RESET:
+ onReset();
+ break;
+ case PULL_TO_REFRESH:
+ onPullToRefresh();
+ break;
+ case RELEASE_TO_REFRESH:
+ onReleaseToRefresh();
+ break;
+ case REFRESHING:
+ case MANUAL_REFRESHING:
+ onRefreshing(params[0]);
+ break;
+ case OVERSCROLLING:
+ // NO-OP
+ break;
+ }
+
+ // Call OnPullEventListener
+ if (null != mOnPullEventListener) {
+ mOnPullEventListener.onPullEvent(this, mState, mCurrentMode);
+ }
+ }
+
+ /**
+ * Used internally for adding view. Need because we override addView to
+ * pass-through to the Refreshable View
+ */
+ protected final void addViewInternal(View child, int index, ViewGroup.LayoutParams params) {
+ super.addView(child, index, params);
+ }
+
+ /**
+ * Used internally for adding view. Need because we override addView to
+ * pass-through to the Refreshable View
+ */
+ protected final void addViewInternal(View child, ViewGroup.LayoutParams params) {
+ super.addView(child, -1, params);
+ }
+
+ protected LoadingLayout createLoadingLayout(Context context, Mode mode, TypedArray attrs) {
+ LoadingLayout layout = mLoadingAnimationStyle.createLoadingLayout(context, mode,
+ getPullToRefreshScrollDirection(), attrs);
+ layout.setVisibility(View.INVISIBLE);
+ return layout;
+ }
+
+ /**
+ * Used internally for {@link #getLoadingLayoutProxy(boolean, boolean)}.
+ * Allows derivative classes to include any extra LoadingLayouts.
+ */
+ protected LoadingLayoutProxy createLoadingLayoutProxy(final boolean includeStart, final boolean includeEnd) {
+ LoadingLayoutProxy proxy = new LoadingLayoutProxy();
+
+ if (includeStart && mMode.showHeaderLoadingLayout()) {
+ proxy.addLayout(mHeaderLayout);
+ }
+ if (includeEnd && mMode.showFooterLoadingLayout()) {
+ proxy.addLayout(mFooterLayout);
+ }
+
+ return proxy;
+ }
+
+ /**
+ * This is implemented by derived classes to return the created View. If you
+ * need to use a custom View (such as a custom ListView), override this
+ * method and return an instance of your custom class.
+ *
+ * Be sure to set the ID of the view in this method, especially if you're
+ * using a ListActivity or ListFragment.
+ *
+ * @param context Context to create view with
+ * @param attrs AttributeSet from wrapped class. Means that anything you
+ * include in the XML layout declaration will be routed to the
+ * created View
+ * @return New instance of the Refreshable View
+ */
+ protected abstract T createRefreshableView(Context context, AttributeSet attrs);
+
+ protected final void disableLoadingLayoutVisibilityChanges() {
+ mLayoutVisibilityChangesEnabled = false;
+ }
+
+ protected final LoadingLayout getFooterLayout() {
+ return mFooterLayout;
+ }
+
+ protected final int getFooterSize() {
+ return mFooterLayout.getContentSize();
+ }
+
+ protected final LoadingLayout getHeaderLayout() {
+ return mHeaderLayout;
+ }
+
+ protected final int getHeaderSize() {
+ return mHeaderLayout.getContentSize();
+ }
+
+ protected int getPullToRefreshScrollDuration() {
+ return SMOOTH_SCROLL_DURATION_MS;
+ }
+
+ protected int getPullToRefreshScrollDurationLonger() {
+ return SMOOTH_SCROLL_LONG_DURATION_MS;
+ }
+
+ protected FrameLayout getRefreshableViewWrapper() {
+ return mRefreshableViewWrapper;
+ }
+
+ /**
+ * Allows Derivative classes to handle the XML Attrs without creating a
+ * TypedArray themsevles
+ *
+ * @param a - TypedArray of PullToRefresh Attributes
+ */
+ protected void handleStyledAttributes(TypedArray a) {
+ }
+
+ /**
+ * Implemented by derived class to return whether the View is in a state
+ * where the user can Pull to Refresh by scrolling from the end.
+ *
+ * @return true if the View is currently in the correct state (for example,
+ * bottom of a ListView)
+ */
+ protected abstract boolean isReadyForPullEnd();
+
+ /**
+ * Implemented by derived class to return whether the View is in a state
+ * where the user can Pull to Refresh by scrolling from the start.
+ *
+ * @return true if the View is currently the correct state (for example, top
+ * of a ListView)
+ */
+ protected abstract boolean isReadyForPullStart();
+
+ /**
+ * Called by {@link #onRestoreInstanceState(Parcelable)} so that derivative
+ * classes can handle their saved instance state.
+ *
+ * @param savedInstanceState - Bundle which contains saved instance state.
+ */
+ protected void onPtrRestoreInstanceState(Bundle savedInstanceState) {
+ }
+
+ /**
+ * Called by {@link #onSaveInstanceState()} so that derivative classes can
+ * save their instance state.
+ *
+ * @param saveState - Bundle to be updated with saved state.
+ */
+ protected void onPtrSaveInstanceState(Bundle saveState) {
+ }
+
+ /**
+ * Called when the UI has been to be updated to be in the
+ * {@link State#PULL_TO_REFRESH} state.
+ */
+ protected void onPullToRefresh() {
+ switch (mCurrentMode) {
+ case PULL_FROM_END:
+ mFooterLayout.pullToRefresh();
+ break;
+ case PULL_FROM_START:
+ mHeaderLayout.pullToRefresh();
+ break;
+ default:
+ // NO-OP
+ break;
+ }
+ }
+
+ /**
+ * Called when the UI has been to be updated to be in the
+ * {@link State#REFRESHING} or {@link State#MANUAL_REFRESHING} state.
+ *
+ * @param doScroll - Whether the UI should scroll for this event.
+ */
+ protected void onRefreshing(final boolean doScroll) {
+ if (mMode.showHeaderLoadingLayout()) {
+ mHeaderLayout.refreshing();
+ }
+ if (mMode.showFooterLoadingLayout()) {
+ mFooterLayout.refreshing();
+ }
+
+ if (doScroll) {
+ if (mShowViewWhileRefreshing) {
+
+ // Call Refresh Listener when the Scroll has finished
+ OnSmoothScrollFinishedListener listener = new OnSmoothScrollFinishedListener() {
+ @Override
+ public void onSmoothScrollFinished() {
+ callRefreshListener();
+ }
+ };
+
+ switch (mCurrentMode) {
+ case MANUAL_REFRESH_ONLY:
+ case PULL_FROM_END:
+ smoothScrollTo(getFooterSize(), listener);
+ break;
+ default:
+ case PULL_FROM_START:
+ smoothScrollTo(-getHeaderSize(), listener);
+ break;
+ }
+ } else {
+ smoothScrollTo(0);
+ }
+ } else {
+ // We're not scrolling, so just call Refresh Listener now
+ callRefreshListener();
+ }
+ }
+
+ /**
+ * Called when the UI has been to be updated to be in the
+ * {@link State#RELEASE_TO_REFRESH} state.
+ */
+ protected void onReleaseToRefresh() {
+ switch (mCurrentMode) {
+ case PULL_FROM_END:
+ mFooterLayout.releaseToRefresh();
+ break;
+ case PULL_FROM_START:
+ mHeaderLayout.releaseToRefresh();
+ break;
+ default:
+ // NO-OP
+ break;
+ }
+ }
+
+ /**
+ * Called when the UI has been to be updated to be in the
+ * {@link State#RESET} state.
+ */
+ protected void onReset() {
+ mIsBeingDragged = false;
+ mLayoutVisibilityChangesEnabled = true;
+
+ // Always reset both layouts, just in case...
+ mHeaderLayout.reset();
+ mFooterLayout.reset();
+
+ smoothScrollTo(0);
+ }
+
+ @Override
+ protected final void onRestoreInstanceState(Parcelable state) {
+ if (state instanceof Bundle) {
+ Bundle bundle = (Bundle) state;
+
+ setMode(Mode.mapIntToValue(bundle.getInt(STATE_MODE, 0)));
+ mCurrentMode = Mode.mapIntToValue(bundle.getInt(STATE_CURRENT_MODE, 0));
+
+ mScrollingWhileRefreshingEnabled = bundle.getBoolean(STATE_SCROLLING_REFRESHING_ENABLED, false);
+ mShowViewWhileRefreshing = bundle.getBoolean(STATE_SHOW_REFRESHING_VIEW, true);
+
+ // Let super Restore Itself
+ super.onRestoreInstanceState(bundle.getParcelable(STATE_SUPER));
+
+ State viewState = State.mapIntToValue(bundle.getInt(STATE_STATE, 0));
+ if (viewState == State.REFRESHING || viewState == State.MANUAL_REFRESHING) {
+ setState(viewState, true);
+ }
+
+ // Now let derivative classes restore their state
+ onPtrRestoreInstanceState(bundle);
+ return;
+ }
+
+ super.onRestoreInstanceState(state);
+ }
+
+ @Override
+ protected final Parcelable onSaveInstanceState() {
+ Bundle bundle = new Bundle();
+
+ // Let derivative classes get a chance to save state first, that way we
+ // can make sure they don't overrite any of our values
+ onPtrSaveInstanceState(bundle);
+
+ bundle.putInt(STATE_STATE, mState.getIntValue());
+ bundle.putInt(STATE_MODE, mMode.getIntValue());
+ bundle.putInt(STATE_CURRENT_MODE, mCurrentMode.getIntValue());
+ bundle.putBoolean(STATE_SCROLLING_REFRESHING_ENABLED, mScrollingWhileRefreshingEnabled);
+ bundle.putBoolean(STATE_SHOW_REFRESHING_VIEW, mShowViewWhileRefreshing);
+ bundle.putParcelable(STATE_SUPER, super.onSaveInstanceState());
+
+ return bundle;
+ }
+
+ @Override
+ protected final void onSizeChanged(int w, int h, int oldw, int oldh) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, String.format("onSizeChanged. W: %d, H: %d", w, h));
+ }
+
+ super.onSizeChanged(w, h, oldw, oldh);
+
+ // We need to update the header/footer when our size changes
+ refreshLoadingViewsSize();
+
+ // Update the Refreshable View layout
+ refreshRefreshableViewSize(w, h);
+
+ /**
+ * As we're currently in a Layout Pass, we need to schedule another one
+ * to layout any changes we've made here
+ */
+ post(new Runnable() {
+ @Override
+ public void run() {
+ requestLayout();
+ }
+ });
+ }
+
+ /**
+ * Re-measure the Loading Views height, and adjust internal padding as
+ * necessary
+ */
+ protected final void refreshLoadingViewsSize() {
+ final int maximumPullScroll = (int) (getMaximumPullScroll() * 1.2f);
+
+ int pLeft = getPaddingLeft();
+ int pTop = getPaddingTop();
+ int pRight = getPaddingRight();
+ int pBottom = getPaddingBottom();
+
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ if (mMode.showHeaderLoadingLayout()) {
+ mHeaderLayout.setWidth(maximumPullScroll);
+ pLeft = -maximumPullScroll;
+ } else {
+ pLeft = 0;
+ }
+
+ if (mMode.showFooterLoadingLayout()) {
+ mFooterLayout.setWidth(maximumPullScroll);
+ pRight = -maximumPullScroll;
+ } else {
+ pRight = 0;
+ }
+ break;
+
+ case VERTICAL:
+ if (mMode.showHeaderLoadingLayout()) {
+ mHeaderLayout.setHeight(maximumPullScroll);
+ pTop = -maximumPullScroll;
+ } else {
+ pTop = 0;
+ }
+
+ if (mMode.showFooterLoadingLayout()) {
+ mFooterLayout.setHeight(maximumPullScroll);
+ pBottom = -maximumPullScroll;
+ } else {
+ pBottom = 0;
+ }
+ break;
+ }
+
+ if (DEBUG) {
+ Log.d(LOG_TAG, String.format("Setting Padding. L: %d, T: %d, R: %d, B: %d", pLeft, pTop, pRight, pBottom));
+ }
+ setPadding(pLeft, pTop, pRight, pBottom);
+ }
+
+ protected final void refreshRefreshableViewSize(int width, int height) {
+ // We need to set the Height of the Refreshable View to the same as
+ // this layout
+ LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mRefreshableViewWrapper.getLayoutParams();
+
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ if (lp.width != width) {
+ lp.width = width;
+ mRefreshableViewWrapper.requestLayout();
+ }
+ break;
+ case VERTICAL:
+ if (lp.height != height) {
+ lp.height = height;
+ mRefreshableViewWrapper.requestLayout();
+ }
+ break;
+ }
+ }
+
+ /**
+ * Helper method which just calls scrollTo() in the correct scrolling
+ * direction.
+ *
+ * @param value - New Scroll value
+ */
+ protected final void setHeaderScroll(int value) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "setHeaderScroll: " + value);
+ }
+
+ // Clamp value to with pull scroll range
+ final int maximumPullScroll = getMaximumPullScroll();
+ value = Math.min(maximumPullScroll, Math.max(-maximumPullScroll, value));
+
+ if (mLayoutVisibilityChangesEnabled) {
+ if (value < 0) {
+ mHeaderLayout.setVisibility(View.VISIBLE);
+ } else if (value > 0) {
+ mFooterLayout.setVisibility(View.VISIBLE);
+ } else {
+ mHeaderLayout.setVisibility(View.INVISIBLE);
+ mFooterLayout.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ if (USE_HW_LAYERS) {
+ /**
+ * Use a Hardware Layer on the Refreshable View if we've scrolled at
+ * all. We don't use them on the Header/Footer Views as they change
+ * often, which would negate any HW layer performance boost.
+ */
+ ViewCompat.setLayerType(mRefreshableViewWrapper, value != 0 ? View.LAYER_TYPE_HARDWARE
+ : View.LAYER_TYPE_NONE);
+ }
+
+ switch (getPullToRefreshScrollDirection()) {
+ case VERTICAL:
+ scrollTo(0, value);
+ break;
+ case HORIZONTAL:
+ scrollTo(value, 0);
+ break;
+ }
+ }
+
+ /**
+ * Smooth Scroll to position using the default duration of
+ * {@value #SMOOTH_SCROLL_DURATION_MS} ms.
+ *
+ * @param scrollValue - Position to scroll to
+ */
+ protected final void smoothScrollTo(int scrollValue) {
+ smoothScrollTo(scrollValue, getPullToRefreshScrollDuration());
+ }
+
+ /**
+ * Smooth Scroll to position using the default duration of
+ * {@value #SMOOTH_SCROLL_DURATION_MS} ms.
+ *
+ * @param scrollValue - Position to scroll to
+ * @param listener - Listener for scroll
+ */
+ protected final void smoothScrollTo(int scrollValue, OnSmoothScrollFinishedListener listener) {
+ smoothScrollTo(scrollValue, getPullToRefreshScrollDuration(), 0, listener);
+ }
+
+ /**
+ * Smooth Scroll to position using the longer default duration of
+ * {@value #SMOOTH_SCROLL_LONG_DURATION_MS} ms.
+ *
+ * @param scrollValue - Position to scroll to
+ */
+ protected final void smoothScrollToLonger(int scrollValue) {
+ smoothScrollTo(scrollValue, getPullToRefreshScrollDurationLonger());
+ }
+
+ /**
+ * Updates the View State when the mode has been set. This does not do any
+ * checking that the mode is different to current state so always updates.
+ */
+ protected void updateUIForMode() {
+ // We need to use the correct LayoutParam values, based on scroll
+ // direction
+ final LinearLayout.LayoutParams lp = getLoadingLayoutLayoutParams();
+
+ // Remove Header, and then add Header Loading View again if needed
+ if (this == mHeaderLayout.getParent()) {
+ removeView(mHeaderLayout);
+ }
+ if (mMode.showHeaderLoadingLayout()) {
+ addViewInternal(mHeaderLayout, 0, lp);
+ }
+
+ // Remove Footer, and then add Footer Loading View again if needed
+ if (this == mFooterLayout.getParent()) {
+ removeView(mFooterLayout);
+ }
+ if (mMode.showFooterLoadingLayout()) {
+ addViewInternal(mFooterLayout, lp);
+ }
+
+ // Hide Loading Views
+ refreshLoadingViewsSize();
+
+ // If we're not using Mode.BOTH, set mCurrentMode to mMode, otherwise
+ // set it to pull down
+ mCurrentMode = (mMode != Mode.BOTH) ? mMode : Mode.PULL_FROM_START;
+ }
+
+ private void addRefreshableView(Context context, T refreshableView) {
+ mRefreshableViewWrapper = new FrameLayout(context);
+ mRefreshableViewWrapper.addView(refreshableView, ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT);
+
+ addViewInternal(mRefreshableViewWrapper, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+ LayoutParams.MATCH_PARENT));
+ }
+
+ private void callRefreshListener() {
+ if (null != mOnRefreshListener) {
+ mOnRefreshListener.onRefresh(this);
+ } else if (null != mOnRefreshListener2) {
+ if (mCurrentMode == Mode.PULL_FROM_START) {
+ mOnRefreshListener2.onPullDownToRefresh(this);
+ } else if (mCurrentMode == Mode.PULL_FROM_END) {
+ mOnRefreshListener2.onPullUpToRefresh(this);
+ }
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ private void init(Context context, AttributeSet attrs) {
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ setOrientation(LinearLayout.HORIZONTAL);
+ break;
+ case VERTICAL:
+ default:
+ setOrientation(LinearLayout.VERTICAL);
+ break;
+ }
+
+ setGravity(Gravity.CENTER);
+
+ ViewConfiguration config = ViewConfiguration.get(context);
+ mTouchSlop = config.getScaledTouchSlop();
+
+ // Styleables from XML
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PullToRefresh);
+
+ if (a.hasValue(R.styleable.PullToRefresh_ptrMode)) {
+ mMode = Mode.mapIntToValue(a.getInteger(R.styleable.PullToRefresh_ptrMode, 0));
+ }
+
+ if (a.hasValue(R.styleable.PullToRefresh_ptrAnimationStyle)) {
+ mLoadingAnimationStyle = AnimationStyle.mapIntToValue(a.getInteger(
+ R.styleable.PullToRefresh_ptrAnimationStyle, 0));
+ }
+
+ // Refreshable View
+ // By passing the attrs, we can add ListView/GridView params via XML
+ mRefreshableView = createRefreshableView(context, attrs);
+ addRefreshableView(context, mRefreshableView);
+
+ // We need to create now layouts now
+ mHeaderLayout = createLoadingLayout(context, Mode.PULL_FROM_START, a);
+ mFooterLayout = createLoadingLayout(context, Mode.PULL_FROM_END, a);
+
+ /**
+ * Styleables from XML
+ */
+ if (a.hasValue(R.styleable.PullToRefresh_ptrRefreshableViewBackground)) {
+ Drawable background = a.getDrawable(R.styleable.PullToRefresh_ptrRefreshableViewBackground);
+ if (null != background) {
+ mRefreshableView.setBackgroundDrawable(background);
+ }
+ } else if (a.hasValue(R.styleable.PullToRefresh_ptrAdapterViewBackground)) {
+ Utils.warnDeprecation("ptrAdapterViewBackground", "ptrRefreshableViewBackground");
+ Drawable background = a.getDrawable(R.styleable.PullToRefresh_ptrAdapterViewBackground);
+ if (null != background) {
+ mRefreshableView.setBackgroundDrawable(background);
+ }
+ }
+
+ if (a.hasValue(R.styleable.PullToRefresh_ptrOverScroll)) {
+ mOverScrollEnabled = a.getBoolean(R.styleable.PullToRefresh_ptrOverScroll, true);
+ }
+
+ if (a.hasValue(R.styleable.PullToRefresh_ptrScrollingWhileRefreshingEnabled)) {
+ mScrollingWhileRefreshingEnabled = a.getBoolean(
+ R.styleable.PullToRefresh_ptrScrollingWhileRefreshingEnabled, false);
+ }
+
+ // Let the derivative classes have a go at handling attributes, then
+ // recycle them...
+ handleStyledAttributes(a);
+ a.recycle();
+
+ // Finally update the UI for the modes
+ updateUIForMode();
+ }
+
+ private boolean isReadyForPull() {
+ switch (mMode) {
+ case PULL_FROM_START:
+ return isReadyForPullStart();
+ case PULL_FROM_END:
+ return isReadyForPullEnd();
+ case BOTH:
+ return isReadyForPullEnd() || isReadyForPullStart();
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Actions a Pull Event
+ *
+ * @return true if the Event has been handled, false if there has been no
+ * change
+ */
+ private void pullEvent() {
+ final int newScrollValue;
+ final int itemDimension;
+ final float initialMotionValue, lastMotionValue;
+
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ initialMotionValue = mInitialMotionX;
+ lastMotionValue = mLastMotionX;
+ break;
+ case VERTICAL:
+ default:
+ initialMotionValue = mInitialMotionY;
+ lastMotionValue = mLastMotionY;
+ break;
+ }
+
+ switch (mCurrentMode) {
+ case PULL_FROM_END:
+ newScrollValue = Math.round(Math.max(initialMotionValue - lastMotionValue, 0) / FRICTION);
+ itemDimension = getFooterSize();
+ break;
+ case PULL_FROM_START:
+ default:
+ newScrollValue = Math.round(Math.min(initialMotionValue - lastMotionValue, 0) / FRICTION);
+ itemDimension = getHeaderSize();
+ break;
+ }
+
+ setHeaderScroll(newScrollValue);
+
+ if (newScrollValue != 0 && !isRefreshing()) {
+ float scale = Math.abs(newScrollValue) / (float) itemDimension;
+ switch (mCurrentMode) {
+ case PULL_FROM_END:
+ mFooterLayout.onPull(scale);
+ break;
+ case PULL_FROM_START:
+ default:
+ mHeaderLayout.onPull(scale);
+ break;
+ }
+
+ if (mState != State.PULL_TO_REFRESH && itemDimension >= Math.abs(newScrollValue)) {
+ setState(State.PULL_TO_REFRESH);
+ } else if (mState == State.PULL_TO_REFRESH && itemDimension < Math.abs(newScrollValue)) {
+ setState(State.RELEASE_TO_REFRESH);
+ }
+ }
+ }
+
+ private LinearLayout.LayoutParams getLoadingLayoutLayoutParams() {
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ return new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
+ LinearLayout.LayoutParams.MATCH_PARENT);
+ case VERTICAL:
+ default:
+ return new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
+ LinearLayout.LayoutParams.WRAP_CONTENT);
+ }
+ }
+
+ private int getMaximumPullScroll() {
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ return Math.round(getWidth() / FRICTION);
+ case VERTICAL:
+ default:
+ return Math.round(getHeight() / FRICTION);
+ }
+ }
+
+ /**
+ * Smooth Scroll to position using the specific duration
+ *
+ * @param scrollValue - Position to scroll to
+ * @param duration - Duration of animation in milliseconds
+ */
+ private final void smoothScrollTo(int scrollValue, long duration) {
+ smoothScrollTo(scrollValue, duration, 0, null);
+ }
+
+ private final void smoothScrollTo(int newScrollValue, long duration, long delayMillis,
+ OnSmoothScrollFinishedListener listener) {
+ if (null != mCurrentSmoothScrollRunnable) {
+ mCurrentSmoothScrollRunnable.stop();
+ }
+
+ final int oldScrollValue;
+ switch (getPullToRefreshScrollDirection()) {
+ case HORIZONTAL:
+ oldScrollValue = getScrollX();
+ break;
+ case VERTICAL:
+ default:
+ oldScrollValue = getScrollY();
+ break;
+ }
+
+ if (oldScrollValue != newScrollValue) {
+ if (null == mScrollAnimationInterpolator) {
+ // Default interpolator is a Decelerate Interpolator
+ mScrollAnimationInterpolator = new DecelerateInterpolator();
+ }
+ mCurrentSmoothScrollRunnable = new SmoothScrollRunnable(oldScrollValue, newScrollValue, duration, listener);
+
+ if (delayMillis > 0) {
+ postDelayed(mCurrentSmoothScrollRunnable, delayMillis);
+ } else {
+ post(mCurrentSmoothScrollRunnable);
+ }
+ }
+ }
+
+ private final void smoothScrollToAndBack(int y) {
+ smoothScrollTo(y, SMOOTH_SCROLL_DURATION_MS, 0, new OnSmoothScrollFinishedListener() {
+
+ @Override
+ public void onSmoothScrollFinished() {
+ smoothScrollTo(0, SMOOTH_SCROLL_DURATION_MS, DEMO_SCROLL_INTERVAL, null);
+ }
+ });
+ }
+
+ public static enum AnimationStyle {
+ /**
+ * This is the default for Android-PullToRefresh. Allows you to use any
+ * drawable, which is automatically rotated and used as a Progress Bar.
+ */
+ ROTATE,
+
+ /**
+ * This is the old default, and what is commonly used on iOS. Uses an
+ * arrow image which flips depending on where the user has scrolled.
+ */
+ FLIP;
+
+ static AnimationStyle getDefault() {
+ return ROTATE;
+ }
+
+ /**
+ * Maps an int to a specific mode. This is needed when saving state, or
+ * inflating the view from XML where the mode is given through a attr
+ * int.
+ *
+ * @param modeInt - int to map a Mode to
+ * @return Mode that modeInt maps to, or ROTATE by default.
+ */
+ static AnimationStyle mapIntToValue(int modeInt) {
+ switch (modeInt) {
+ case 0x0:
+ default:
+ return ROTATE;
+ case 0x1:
+ return FLIP;
+ }
+ }
+
+ LoadingLayout createLoadingLayout(Context context, Mode mode, Orientation scrollDirection, TypedArray attrs) {
+ switch (this) {
+ case ROTATE:
+ default:
+ //return new RotateLoadingLayout(context, mode, scrollDirection, attrs);
+ return new TweenAnimLoadingLayout(context, mode, scrollDirection, attrs);
+ case FLIP:
+ //return new FlipLoadingLayout(context, mode, scrollDirection, attrs);
+ return new TweenAnimLoadingLayout(context, mode, scrollDirection, attrs);
+ }
+ }
+ }
+
+ public static enum Mode {
+
+ /**
+ * Disable all Pull-to-Refresh gesture and Refreshing handling
+ */
+ DISABLED(0x0),
+
+ /**
+ * Only allow the user to Pull from the start of the Refreshable View to
+ * refresh. The start is either the Top or Left, depending on the
+ * scrolling direction.
+ */
+ PULL_FROM_START(0x1),
+
+ /**
+ * Only allow the user to Pull from the end of the Refreshable View to
+ * refresh. The start is either the Bottom or Right, depending on the
+ * scrolling direction.
+ */
+ PULL_FROM_END(0x2),
+
+ /**
+ * Allow the user to both Pull from the start, from the end to refresh.
+ */
+ BOTH(0x3),
+
+ /**
+ * Disables Pull-to-Refresh gesture handling, but allows manually
+ * setting the Refresh state via
+ * {@link PullToRefreshBase#setRefreshing() setRefreshing()}.
+ */
+ MANUAL_REFRESH_ONLY(0x4);
+
+ /**
+ * @deprecated Use {@link #PULL_FROM_START} from now on.
+ */
+ public static Mode PULL_DOWN_TO_REFRESH = Mode.PULL_FROM_START;
+
+ /**
+ * @deprecated Use {@link #PULL_FROM_END} from now on.
+ */
+ public static Mode PULL_UP_TO_REFRESH = Mode.PULL_FROM_END;
+
+ /**
+ * Maps an int to a specific mode. This is needed when saving state, or
+ * inflating the view from XML where the mode is given through a attr
+ * int.
+ *
+ * @param modeInt - int to map a Mode to
+ * @return Mode that modeInt maps to, or PULL_FROM_START by default.
+ */
+ static Mode mapIntToValue(final int modeInt) {
+ for (Mode value : Mode.values()) {
+ if (modeInt == value.getIntValue()) {
+ return value;
+ }
+ }
+
+ // If not, return default
+ return getDefault();
+ }
+
+ static Mode getDefault() {
+ return PULL_FROM_START;
+ }
+
+ private int mIntValue;
+
+ // The modeInt values need to match those from attrs.xml
+ Mode(int modeInt) {
+ mIntValue = modeInt;
+ }
+
+ /**
+ * @return true if the mode permits Pull-to-Refresh
+ */
+ boolean permitsPullToRefresh() {
+ return !(this == DISABLED || this == MANUAL_REFRESH_ONLY);
+ }
+
+ /**
+ * @return true if this mode wants the Loading Layout Header to be shown
+ */
+ public boolean showHeaderLoadingLayout() {
+ return this == PULL_FROM_START || this == BOTH;
+ }
+
+ /**
+ * @return true if this mode wants the Loading Layout Footer to be shown
+ */
+ public boolean showFooterLoadingLayout() {
+ return this == PULL_FROM_END || this == BOTH || this == MANUAL_REFRESH_ONLY;
+ }
+
+ int getIntValue() {
+ return mIntValue;
+ }
+
+ }
+
+ // ===========================================================
+ // Inner, Anonymous Classes, and Enumerations
+ // ===========================================================
+
+ /**
+ * Simple Listener that allows you to be notified when the user has scrolled
+ * to the end of the AdapterView. See (
+ * {@link PullToRefreshAdapterViewBase#setOnLastItemVisibleListener}.
+ *
+ * @author Chris Banes
+ */
+ public static interface OnLastItemVisibleListener {
+
+ /**
+ * Called when the user has scrolled to the end of the list
+ */
+ public void onLastItemVisible();
+
+ }
+
+ /**
+ * Listener that allows you to be notified when the user has started or
+ * finished a touch event. Useful when you want to append extra UI events
+ * (such as sounds). See (
+ * {@link PullToRefreshAdapterViewBase#setOnPullEventListener}.
+ *
+ * @author Chris Banes
+ */
+ public static interface OnPullEventListener {
+
+ /**
+ * Called when the internal state has been changed, usually by the user
+ * pulling.
+ *
+ * @param refreshView - View which has had it's state change.
+ * @param state - The new state of View.
+ * @param direction - One of {@link Mode#PULL_FROM_START} or
+ * {@link Mode#PULL_FROM_END} depending on which direction
+ * the user is pulling. Only useful when state is
+ * {@link State#PULL_TO_REFRESH} or
+ * {@link State#RELEASE_TO_REFRESH}.
+ */
+ public void onPullEvent(final PullToRefreshBase refreshView, State state, Mode direction);
+
+ }
+
+ /**
+ * Simple Listener to listen for any callbacks to Refresh.
+ *
+ * @author Chris Banes
+ */
+ public static interface OnRefreshListener {
+
+ /**
+ * onRefresh will be called for both a Pull from start, and Pull from
+ * end
+ */
+ public void onRefresh(final PullToRefreshBase refreshView);
+
+ }
+
+ /**
+ * An advanced version of the Listener to listen for callbacks to Refresh.
+ * This listener is different as it allows you to differentiate between Pull
+ * Ups, and Pull Downs.
+ *
+ * @author Chris Banes
+ */
+ public static interface OnRefreshListener2 {
+ // TODO These methods need renaming to START/END rather than DOWN/UP
+
+ /**
+ * onPullDownToRefresh will be called only when the user has Pulled from
+ * the start, and released.
+ */
+ public void onPullDownToRefresh(final PullToRefreshBase refreshView);
+
+ /**
+ * onPullUpToRefresh will be called only when the user has Pulled from
+ * the end, and released.
+ */
+ public void onPullUpToRefresh(final PullToRefreshBase refreshView);
+
+ }
+
+ public static enum Orientation {
+ VERTICAL, HORIZONTAL;
+ }
+
+ public static enum State {
+
+ /**
+ * When the UI is in a state which means that user is not interacting
+ * with the Pull-to-Refresh function.
+ */
+ RESET(0x0),
+
+ /**
+ * When the UI is being pulled by the user, but has not been pulled far
+ * enough so that it refreshes when released.
+ */
+ PULL_TO_REFRESH(0x1),
+
+ /**
+ * When the UI is being pulled by the user, and has
+ * been pulled far enough so that it will refresh when released.
+ */
+ RELEASE_TO_REFRESH(0x2),
+
+ /**
+ * When the UI is currently refreshing, caused by a pull gesture.
+ */
+ REFRESHING(0x8),
+
+ /**
+ * When the UI is currently refreshing, caused by a call to
+ * {@link PullToRefreshBase#setRefreshing() setRefreshing()}.
+ */
+ MANUAL_REFRESHING(0x9),
+
+ /**
+ * When the UI is currently overscrolling, caused by a fling on the
+ * Refreshable View.
+ */
+ OVERSCROLLING(0x10);
+
+ /**
+ * Maps an int to a specific state. This is needed when saving state.
+ *
+ * @param stateInt - int to map a State to
+ * @return State that stateInt maps to
+ */
+ static State mapIntToValue(final int stateInt) {
+ for (State value : State.values()) {
+ if (stateInt == value.getIntValue()) {
+ return value;
+ }
+ }
+
+ // If not, return default
+ return RESET;
+ }
+
+ private int mIntValue;
+
+ State(int intValue) {
+ mIntValue = intValue;
+ }
+
+ int getIntValue() {
+ return mIntValue;
+ }
+ }
+
+ final class SmoothScrollRunnable implements Runnable {
+ private final Interpolator mInterpolator;
+ private final int mScrollToY;
+ private final int mScrollFromY;
+ private final long mDuration;
+ private OnSmoothScrollFinishedListener mListener;
+
+ private boolean mContinueRunning = true;
+ private long mStartTime = -1;
+ private int mCurrentY = -1;
+
+ public SmoothScrollRunnable(int fromY, int toY, long duration, OnSmoothScrollFinishedListener listener) {
+ mScrollFromY = fromY;
+ mScrollToY = toY;
+ mInterpolator = mScrollAnimationInterpolator;
+ mDuration = duration;
+ mListener = listener;
+ }
+
+ @Override
+ public void run() {
+
+ /**
+ * Only set mStartTime if this is the first time we're starting,
+ * else actually calculate the Y delta
+ */
+ if (mStartTime == -1) {
+ mStartTime = System.currentTimeMillis();
+ } else {
+
+ /**
+ * We do do all calculations in long to reduce software float
+ * calculations. We use 1000 as it gives us good accuracy and
+ * small rounding errors
+ */
+ long normalizedTime = (1000 * (System.currentTimeMillis() - mStartTime)) / mDuration;
+ normalizedTime = Math.max(Math.min(normalizedTime, 1000), 0);
+
+ final int deltaY = Math.round((mScrollFromY - mScrollToY)
+ * mInterpolator.getInterpolation(normalizedTime / 1000f));
+ mCurrentY = mScrollFromY - deltaY;
+ setHeaderScroll(mCurrentY);
+ }
+
+ // If we're not at the target Y, keep going...
+ if (mContinueRunning && mScrollToY != mCurrentY) {
+ ViewCompat.postOnAnimation(PullToRefreshBase.this, this);
+ } else {
+ if (null != mListener) {
+ mListener.onSmoothScrollFinished();
+ }
+ }
+ }
+
+ public void stop() {
+ mContinueRunning = false;
+ removeCallbacks(this);
+ }
+ }
+
+ static interface OnSmoothScrollFinishedListener {
+ void onSmoothScrollFinished();
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java
new file mode 100644
index 0000000..649020c
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ExpandableListView;
+
+import com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor;
+
+public class PullToRefreshExpandableListView extends PullToRefreshAdapterViewBase {
+
+ public PullToRefreshExpandableListView(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshExpandableListView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshExpandableListView(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ public PullToRefreshExpandableListView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.VERTICAL;
+ }
+
+ @Override
+ protected ExpandableListView createRefreshableView(Context context, AttributeSet attrs) {
+ final ExpandableListView lv;
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ lv = new InternalExpandableListViewSDK9(context, attrs);
+ } else {
+ lv = new InternalExpandableListView(context, attrs);
+ }
+
+ // Set it to this so it can be used in ListActivity/ListFragment
+ lv.setId(android.R.id.list);
+ return lv;
+ }
+
+ class InternalExpandableListView extends ExpandableListView implements EmptyViewMethodAccessor {
+
+ public InternalExpandableListView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public void setEmptyView(View emptyView) {
+ PullToRefreshExpandableListView.this.setEmptyView(emptyView);
+ }
+
+ @Override
+ public void setEmptyViewInternal(View emptyView) {
+ super.setEmptyView(emptyView);
+ }
+ }
+
+ @TargetApi(9)
+ final class InternalExpandableListViewSDK9 extends InternalExpandableListView {
+
+ public InternalExpandableListViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshExpandableListView.this, deltaX, scrollX, deltaY, scrollY,
+ isTouchEvent);
+
+ return returnValue;
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshGridView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshGridView.java
new file mode 100644
index 0000000..f950688
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshGridView.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.GridView;
+
+import com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor;
+
+public class PullToRefreshGridView extends PullToRefreshAdapterViewBase {
+
+ public PullToRefreshGridView(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshGridView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshGridView(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ public PullToRefreshGridView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.VERTICAL;
+ }
+
+ @Override
+ protected final GridView createRefreshableView(Context context, AttributeSet attrs) {
+ final GridView gv;
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ gv = new InternalGridViewSDK9(context, attrs);
+ } else {
+ gv = new InternalGridView(context, attrs);
+ }
+
+ // Use Generated ID (from res/values/ids.xml)
+ gv.setId(R.id.gridview);
+ return gv;
+ }
+
+ class InternalGridView extends GridView implements EmptyViewMethodAccessor {
+
+ public InternalGridView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public void setEmptyView(View emptyView) {
+ PullToRefreshGridView.this.setEmptyView(emptyView);
+ }
+
+ @Override
+ public void setEmptyViewInternal(View emptyView) {
+ super.setEmptyView(emptyView);
+ }
+ }
+
+ @TargetApi(9)
+ final class InternalGridViewSDK9 extends InternalGridView {
+
+ public InternalGridViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshGridView.this, deltaX, scrollX, deltaY, scrollY, isTouchEvent);
+
+ return returnValue;
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java
new file mode 100644
index 0000000..a70f7ad
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.HorizontalScrollView;
+
+public class PullToRefreshHorizontalScrollView extends PullToRefreshBase {
+
+ public PullToRefreshHorizontalScrollView(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshHorizontalScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshHorizontalScrollView(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ public PullToRefreshHorizontalScrollView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.HORIZONTAL;
+ }
+
+ @Override
+ protected HorizontalScrollView createRefreshableView(Context context, AttributeSet attrs) {
+ HorizontalScrollView scrollView;
+
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ scrollView = new InternalHorizontalScrollViewSDK9(context, attrs);
+ } else {
+ scrollView = new HorizontalScrollView(context, attrs);
+ }
+
+ scrollView.setId(R.id.scrollview);
+ return scrollView;
+ }
+
+ @Override
+ protected boolean isReadyForPullStart() {
+ return mRefreshableView.getScrollX() == 0;
+ }
+
+ @Override
+ protected boolean isReadyForPullEnd() {
+ View scrollViewChild = mRefreshableView.getChildAt(0);
+ if (null != scrollViewChild) {
+ return mRefreshableView.getScrollX() >= (scrollViewChild.getWidth() - getWidth());
+ }
+ return false;
+ }
+
+ @TargetApi(9)
+ final class InternalHorizontalScrollViewSDK9 extends HorizontalScrollView {
+
+ public InternalHorizontalScrollViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshHorizontalScrollView.this, deltaX, scrollX, deltaY, scrollY,
+ getScrollRange(), isTouchEvent);
+
+ return returnValue;
+ }
+
+ /**
+ * Taken from the AOSP ScrollView source
+ */
+ private int getScrollRange() {
+ int scrollRange = 0;
+ if (getChildCount() > 0) {
+ View child = getChildAt(0);
+ scrollRange = Math.max(0, child.getWidth() - (getWidth() - getPaddingLeft() - getPaddingRight()));
+ }
+ return scrollRange;
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshListView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshListView.java
new file mode 100644
index 0000000..0aa9a27
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshListView.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+import com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor;
+import com.handmark.pulltorefresh.library.internal.LoadingLayout;
+
+public class PullToRefreshListView extends PullToRefreshAdapterViewBase {
+
+ private LoadingLayout mHeaderLoadingView;
+ private LoadingLayout mFooterLoadingView;
+
+ private FrameLayout mLvFooterLoadingFrame;
+
+ private boolean mListViewExtrasEnabled;
+
+ public PullToRefreshListView(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshListView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshListView(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ public PullToRefreshListView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.VERTICAL;
+ }
+
+ @Override
+ protected void onRefreshing(final boolean doScroll) {
+ /**
+ * If we're not showing the Refreshing view, or the list is empty, the
+ * the header/footer views won't show so we use the normal method.
+ */
+ ListAdapter adapter = mRefreshableView.getAdapter();
+ if (!mListViewExtrasEnabled || !getShowViewWhileRefreshing() || null == adapter || adapter.isEmpty()) {
+ super.onRefreshing(doScroll);
+ return;
+ }
+
+ super.onRefreshing(false);
+
+ final LoadingLayout origLoadingView, listViewLoadingView, oppositeListViewLoadingView;
+ final int selection, scrollToY;
+
+ switch (getCurrentMode()) {
+ case MANUAL_REFRESH_ONLY:
+ case PULL_FROM_END:
+ origLoadingView = getFooterLayout();
+ listViewLoadingView = mFooterLoadingView;
+ oppositeListViewLoadingView = mHeaderLoadingView;
+ selection = mRefreshableView.getCount() - 1;
+ scrollToY = getScrollY() - getFooterSize();
+ break;
+ case PULL_FROM_START:
+ default:
+ origLoadingView = getHeaderLayout();
+ listViewLoadingView = mHeaderLoadingView;
+ oppositeListViewLoadingView = mFooterLoadingView;
+ selection = 0;
+ scrollToY = getScrollY() + getHeaderSize();
+ break;
+ }
+
+ // Hide our original Loading View
+ origLoadingView.reset();
+ origLoadingView.hideAllViews();
+
+ // Make sure the opposite end is hidden too
+ oppositeListViewLoadingView.setVisibility(View.GONE);
+
+ // Show the ListView Loading View and set it to refresh.
+ listViewLoadingView.setVisibility(View.VISIBLE);
+ listViewLoadingView.refreshing();
+
+ if (doScroll) {
+ // We need to disable the automatic visibility changes for now
+ disableLoadingLayoutVisibilityChanges();
+
+ // We scroll slightly so that the ListView's header/footer is at the
+ // same Y position as our normal header/footer
+ setHeaderScroll(scrollToY);
+
+ // Make sure the ListView is scrolled to show the loading
+ // header/footer
+ mRefreshableView.setSelection(selection);
+
+ // Smooth scroll as normal
+ smoothScrollTo(0);
+ }
+ }
+
+ @Override
+ protected void onReset() {
+ /**
+ * If the extras are not enabled, just call up to super and return.
+ */
+ if (!mListViewExtrasEnabled) {
+ super.onReset();
+ return;
+ }
+
+ final LoadingLayout originalLoadingLayout, listViewLoadingLayout;
+ final int scrollToHeight, selection;
+ final boolean scrollLvToEdge;
+
+ switch (getCurrentMode()) {
+ case MANUAL_REFRESH_ONLY:
+ case PULL_FROM_END:
+ originalLoadingLayout = getFooterLayout();
+ listViewLoadingLayout = mFooterLoadingView;
+ selection = mRefreshableView.getCount() - 1;
+ scrollToHeight = getFooterSize();
+ scrollLvToEdge = Math.abs(mRefreshableView.getLastVisiblePosition() - selection) <= 1;
+ break;
+ case PULL_FROM_START:
+ default:
+ originalLoadingLayout = getHeaderLayout();
+ listViewLoadingLayout = mHeaderLoadingView;
+ scrollToHeight = -getHeaderSize();
+ selection = 0;
+ scrollLvToEdge = Math.abs(mRefreshableView.getFirstVisiblePosition() - selection) <= 1;
+ break;
+ }
+
+ // If the ListView header loading layout is showing, then we need to
+ // flip so that the original one is showing instead
+ if (listViewLoadingLayout.getVisibility() == View.VISIBLE) {
+
+ // Set our Original View to Visible
+ originalLoadingLayout.showInvisibleViews();
+
+ // Hide the ListView Header/Footer
+ listViewLoadingLayout.setVisibility(View.GONE);
+
+ /**
+ * Scroll so the View is at the same Y as the ListView
+ * header/footer, but only scroll if: we've pulled to refresh, it's
+ * positioned correctly
+ */
+ if (scrollLvToEdge && getState() != State.MANUAL_REFRESHING) {
+ mRefreshableView.setSelection(selection);
+ setHeaderScroll(scrollToHeight);
+ }
+ }
+
+ // Finally, call up to super
+ super.onReset();
+ }
+
+ @Override
+ protected LoadingLayoutProxy createLoadingLayoutProxy(final boolean includeStart, final boolean includeEnd) {
+ LoadingLayoutProxy proxy = super.createLoadingLayoutProxy(includeStart, includeEnd);
+
+ if (mListViewExtrasEnabled) {
+ final Mode mode = getMode();
+
+ if (includeStart && mode.showHeaderLoadingLayout()) {
+ proxy.addLayout(mHeaderLoadingView);
+ }
+ if (includeEnd && mode.showFooterLoadingLayout()) {
+ proxy.addLayout(mFooterLoadingView);
+ }
+ }
+
+ return proxy;
+ }
+
+ protected ListView createListView(Context context, AttributeSet attrs) {
+ final ListView lv;
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ lv = new InternalListViewSDK9(context, attrs);
+ } else {
+ lv = new InternalListView(context, attrs);
+ }
+ return lv;
+ }
+
+ @Override
+ protected ListView createRefreshableView(Context context, AttributeSet attrs) {
+ ListView lv = createListView(context, attrs);
+
+ // Set it to this so it can be used in ListActivity/ListFragment
+ lv.setId(android.R.id.list);
+ return lv;
+ }
+
+ @Override
+ protected void handleStyledAttributes(TypedArray a) {
+ super.handleStyledAttributes(a);
+
+ mListViewExtrasEnabled = a.getBoolean(R.styleable.PullToRefresh_ptrListViewExtrasEnabled, true);
+
+ if (mListViewExtrasEnabled) {
+ final FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);
+
+ // Create Loading Views ready for use later
+ FrameLayout frame = new FrameLayout(getContext());
+ mHeaderLoadingView = createLoadingLayout(getContext(), Mode.PULL_FROM_START, a);
+ mHeaderLoadingView.setVisibility(View.GONE);
+ frame.addView(mHeaderLoadingView, lp);
+ mRefreshableView.addHeaderView(frame, null, false);
+
+ mLvFooterLoadingFrame = new FrameLayout(getContext());
+ mFooterLoadingView = createLoadingLayout(getContext(), Mode.PULL_FROM_END, a);
+ mFooterLoadingView.setVisibility(View.GONE);
+ mLvFooterLoadingFrame.addView(mFooterLoadingView, lp);
+
+ /**
+ * If the value for Scrolling While Refreshing hasn't been
+ * explicitly set via XML, enable Scrolling While Refreshing.
+ */
+ if (!a.hasValue(R.styleable.PullToRefresh_ptrScrollingWhileRefreshingEnabled)) {
+ setScrollingWhileRefreshingEnabled(true);
+ }
+ }
+ }
+
+ @TargetApi(9)
+ final class InternalListViewSDK9 extends InternalListView {
+
+ public InternalListViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshListView.this, deltaX, scrollX, deltaY, scrollY, isTouchEvent);
+
+ return returnValue;
+ }
+ }
+
+ protected class InternalListView extends ListView implements EmptyViewMethodAccessor {
+
+ private boolean mAddedLvFooter = false;
+
+ public InternalListView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ /**
+ * This is a bit hacky, but Samsung's ListView has got a bug in it
+ * when using Header/Footer Views and the list is empty. This masks
+ * the issue so that it doesn't cause an FC. See Issue #66.
+ */
+ try {
+ super.dispatchDraw(canvas);
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent ev) {
+ /**
+ * This is a bit hacky, but Samsung's ListView has got a bug in it
+ * when using Header/Footer Views and the list is empty. This masks
+ * the issue so that it doesn't cause an FC. See Issue #66.
+ */
+ try {
+ return super.dispatchTouchEvent(ev);
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ @Override
+ public void setAdapter(ListAdapter adapter) {
+ // Add the Footer View at the last possible moment
+ if (null != mLvFooterLoadingFrame && !mAddedLvFooter) {
+ addFooterView(mLvFooterLoadingFrame, null, false);
+ mAddedLvFooter = true;
+ }
+
+ super.setAdapter(adapter);
+ }
+
+ @Override
+ public void setEmptyView(View emptyView) {
+ PullToRefreshListView.this.setEmptyView(emptyView);
+ }
+
+ @Override
+ public void setEmptyViewInternal(View emptyView) {
+ super.setEmptyView(emptyView);
+ }
+
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java
new file mode 100644
index 0000000..3ae3627
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ScrollView;
+
+public class PullToRefreshScrollView extends PullToRefreshBase {
+
+ public PullToRefreshScrollView(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshScrollView(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ public PullToRefreshScrollView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.VERTICAL;
+ }
+
+ @Override
+ protected ScrollView createRefreshableView(Context context, AttributeSet attrs) {
+ ScrollView scrollView;
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ scrollView = new InternalScrollViewSDK9(context, attrs);
+ } else {
+ scrollView = new ScrollView(context, attrs);
+ }
+
+ scrollView.setId(R.id.scrollview);
+ return scrollView;
+ }
+
+ @Override
+ protected boolean isReadyForPullStart() {
+ return mRefreshableView.getScrollY() == 0;
+ }
+
+ @Override
+ protected boolean isReadyForPullEnd() {
+ View scrollViewChild = mRefreshableView.getChildAt(0);
+ if (null != scrollViewChild) {
+ return mRefreshableView.getScrollY() >= (scrollViewChild.getHeight() - getHeight());
+ }
+ return false;
+ }
+
+ @TargetApi(9)
+ final class InternalScrollViewSDK9 extends ScrollView {
+
+ public InternalScrollViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshScrollView.this, deltaX, scrollX, deltaY, scrollY,
+ getScrollRange(), isTouchEvent);
+
+ return returnValue;
+ }
+
+ /**
+ * Taken from the AOSP ScrollView source
+ */
+ private int getScrollRange() {
+ int scrollRange = 0;
+ if (getChildCount() > 0) {
+ View child = getChildAt(0);
+ scrollRange = Math.max(0, child.getHeight() - (getHeight() - getPaddingBottom() - getPaddingTop()));
+ }
+ return scrollRange;
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshWebView.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshWebView.java
new file mode 100644
index 0000000..5514110
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/PullToRefreshWebView.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.util.AttributeSet;
+import android.util.FloatMath;
+import android.webkit.WebChromeClient;
+import android.webkit.WebView;
+
+public class PullToRefreshWebView extends PullToRefreshBase {
+
+ private static final OnRefreshListener defaultOnRefreshListener = new OnRefreshListener() {
+
+ @Override
+ public void onRefresh(PullToRefreshBase refreshView) {
+ refreshView.getRefreshableView().reload();
+ }
+
+ };
+
+ private final WebChromeClient defaultWebChromeClient = new WebChromeClient() {
+
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ if (newProgress == 100) {
+ onRefreshComplete();
+ }
+ }
+
+ };
+
+ public PullToRefreshWebView(Context context) {
+ super(context);
+
+ /**
+ * Added so that by default, Pull-to-Refresh refreshes the page
+ */
+ setOnRefreshListener(defaultOnRefreshListener);
+ mRefreshableView.setWebChromeClient(defaultWebChromeClient);
+ }
+
+ public PullToRefreshWebView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ /**
+ * Added so that by default, Pull-to-Refresh refreshes the page
+ */
+ setOnRefreshListener(defaultOnRefreshListener);
+ mRefreshableView.setWebChromeClient(defaultWebChromeClient);
+ }
+
+ public PullToRefreshWebView(Context context, Mode mode) {
+ super(context, mode);
+
+ /**
+ * Added so that by default, Pull-to-Refresh refreshes the page
+ */
+ setOnRefreshListener(defaultOnRefreshListener);
+ mRefreshableView.setWebChromeClient(defaultWebChromeClient);
+ }
+
+ public PullToRefreshWebView(Context context, Mode mode, AnimationStyle style) {
+ super(context, mode, style);
+
+ /**
+ * Added so that by default, Pull-to-Refresh refreshes the page
+ */
+ setOnRefreshListener(defaultOnRefreshListener);
+ mRefreshableView.setWebChromeClient(defaultWebChromeClient);
+ }
+
+ @Override
+ public final Orientation getPullToRefreshScrollDirection() {
+ return Orientation.VERTICAL;
+ }
+
+ @Override
+ protected WebView createRefreshableView(Context context, AttributeSet attrs) {
+ WebView webView;
+ if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {
+ webView = new InternalWebViewSDK9(context, attrs);
+ } else {
+ webView = new WebView(context, attrs);
+ }
+
+ webView.setId(R.id.webview);
+ return webView;
+ }
+
+ @Override
+ protected boolean isReadyForPullStart() {
+ return mRefreshableView.getScrollY() == 0;
+ }
+
+ @Override
+ protected boolean isReadyForPullEnd() {
+ float exactContentHeight = (float) Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
+ return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight());
+ }
+
+ @Override
+ protected void onPtrRestoreInstanceState(Bundle savedInstanceState) {
+ super.onPtrRestoreInstanceState(savedInstanceState);
+ mRefreshableView.restoreState(savedInstanceState);
+ }
+
+ @Override
+ protected void onPtrSaveInstanceState(Bundle saveState) {
+ super.onPtrSaveInstanceState(saveState);
+ mRefreshableView.saveState(saveState);
+ }
+
+ @TargetApi(9)
+ final class InternalWebViewSDK9 extends WebView {
+
+ // WebView doesn't always scroll back to it's edge so we add some
+ // fuzziness
+ static final int OVERSCROLL_FUZZY_THRESHOLD = 2;
+
+ // WebView seems quite reluctant to overscroll so we use the scale
+ // factor to scale it's value
+ static final float OVERSCROLL_SCALE_FACTOR = 1.5f;
+
+ public InternalWebViewSDK9(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
+ int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
+
+ final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
+ scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
+
+ // Does all of the hard work...
+ OverscrollHelper.overScrollBy(PullToRefreshWebView.this, deltaX, scrollX, deltaY, scrollY,
+ getScrollRange(), OVERSCROLL_FUZZY_THRESHOLD, OVERSCROLL_SCALE_FACTOR, isTouchEvent);
+
+ return returnValue;
+ }
+
+ private int getScrollRange() {
+ return (int) Math.max(0, Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())
+ - (getHeight() - getPaddingBottom() - getPaddingTop()));
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java
new file mode 100644
index 0000000..7819203
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.extras;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.webkit.WebView;
+
+import com.handmark.pulltorefresh.library.PullToRefreshWebView;
+
+/**
+ * An advanced version of {@link PullToRefreshWebView} which delegates the
+ * triggering of the PullToRefresh gesture to the Javascript running within the
+ * WebView. This means that you should only use this class if:
+ *
+ *
+ *
{@link PullToRefreshWebView} doesn't work correctly because you're using
+ * overflow:scroll or something else which means
+ * {@link WebView#getScrollY()} doesn't return correct values.
+ *
You control the web content being displayed, as you need to write some
+ * Javascript callbacks.
+ *
+ *
+ *
+ * The way this call works is that when a PullToRefresh gesture is in action,
+ * the following Javascript methods will be called:
+ * isReadyForPullDown() and isReadyForPullUp(), it is
+ * your job to calculate whether the view is in a state where a PullToRefresh
+ * can happen, and return the result via the callback mechanism. An example can
+ * be seen below:
+ *
+ *
+ *
+ * function isReadyForPullDown() {
+ * var result = ... // Probably using the .scrollTop DOM attribute
+ * ptr.isReadyForPullDownResponse(result);
+ * }
+ *
+ * function isReadyForPullUp() {
+ * var result = ... // Probably using the .scrollBottom DOM attribute
+ * ptr.isReadyForPullUpResponse(result);
+ * }
+ *
+ *
+ * @author Chris Banes
+ */
+public class PullToRefreshWebView2 extends PullToRefreshWebView {
+
+ static final String JS_INTERFACE_PKG = "ptr";
+ static final String DEF_JS_READY_PULL_DOWN_CALL = "javascript:isReadyForPullDown();";
+ static final String DEF_JS_READY_PULL_UP_CALL = "javascript:isReadyForPullUp();";
+
+ public PullToRefreshWebView2(Context context) {
+ super(context);
+ }
+
+ public PullToRefreshWebView2(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public PullToRefreshWebView2(Context context, Mode mode) {
+ super(context, mode);
+ }
+
+ private JsValueCallback mJsCallback;
+ private final AtomicBoolean mIsReadyForPullDown = new AtomicBoolean(false);
+ private final AtomicBoolean mIsReadyForPullUp = new AtomicBoolean(false);
+
+ @Override
+ protected WebView createRefreshableView(Context context, AttributeSet attrs) {
+ WebView webView = super.createRefreshableView(context, attrs);
+
+ // Need to add JS Interface so we can get the response back
+ mJsCallback = new JsValueCallback();
+ webView.addJavascriptInterface(mJsCallback, JS_INTERFACE_PKG);
+
+ return webView;
+ }
+
+ @Override
+ protected boolean isReadyForPullStart() {
+ // Call Javascript...
+ getRefreshableView().loadUrl(DEF_JS_READY_PULL_DOWN_CALL);
+
+ // Response will be given to JsValueCallback, which will update
+ // mIsReadyForPullDown
+
+ return mIsReadyForPullDown.get();
+ }
+
+ @Override
+ protected boolean isReadyForPullEnd() {
+ // Call Javascript...
+ getRefreshableView().loadUrl(DEF_JS_READY_PULL_UP_CALL);
+
+ // Response will be given to JsValueCallback, which will update
+ // mIsReadyForPullUp
+
+ return mIsReadyForPullUp.get();
+ }
+
+ /**
+ * Used for response from Javascript
+ *
+ * @author Chris Banes
+ */
+ final class JsValueCallback {
+
+ public void isReadyForPullUpResponse(boolean response) {
+ mIsReadyForPullUp.set(response);
+ }
+
+ public void isReadyForPullDownResponse(boolean response) {
+ mIsReadyForPullDown.set(response);
+ }
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.java
new file mode 100644
index 0000000..a7aac30
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.extras;
+
+import java.util.HashMap;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.view.View;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.State;
+
+public class SoundPullEventListener implements PullToRefreshBase.OnPullEventListener {
+
+ private final Context mContext;
+ private final HashMap mSoundMap;
+
+ private MediaPlayer mCurrentMediaPlayer;
+
+ /**
+ * Constructor
+ *
+ * @param context - Context
+ */
+ public SoundPullEventListener(Context context) {
+ mContext = context;
+ mSoundMap = new HashMap();
+ }
+
+ @Override
+ public final void onPullEvent(PullToRefreshBase refreshView, State event, Mode direction) {
+ Integer soundResIdObj = mSoundMap.get(event);
+ if (null != soundResIdObj) {
+ playSound(soundResIdObj.intValue());
+ }
+ }
+
+ /**
+ * Set the Sounds to be played when a Pull Event happens. You specify which
+ * sound plays for which events by calling this method multiple times for
+ * each event.
+ *
+ * If you've already set a sound for a certain event, and add another sound
+ * for that event, only the new sound will be played.
+ *
+ * @param event - The event for which the sound will be played.
+ * @param resId - Resource Id of the sound file to be played (e.g.
+ * R.raw.pull_sound)
+ */
+ public void addSoundEvent(State event, int resId) {
+ mSoundMap.put(event, resId);
+ }
+
+ /**
+ * Clears all of the previously set sounds and events.
+ */
+ public void clearSounds() {
+ mSoundMap.clear();
+ }
+
+ /**
+ * Gets the current (or last) MediaPlayer instance.
+ */
+ public MediaPlayer getCurrentMediaPlayer() {
+ return mCurrentMediaPlayer;
+ }
+
+ private void playSound(int resId) {
+ // Stop current player, if there's one playing
+ if (null != mCurrentMediaPlayer) {
+ mCurrentMediaPlayer.stop();
+ mCurrentMediaPlayer.release();
+ }
+
+ mCurrentMediaPlayer = MediaPlayer.create(mContext, resId);
+ if (null != mCurrentMediaPlayer) {
+ mCurrentMediaPlayer.start();
+ }
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.java
new file mode 100644
index 0000000..369f21e
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.view.View;
+
+/**
+ * Interface that allows PullToRefreshBase to hijack the call to
+ * AdapterView.setEmptyView()
+ *
+ * @author chris
+ */
+public interface EmptyViewMethodAccessor {
+
+ /**
+ * Calls upto AdapterView.setEmptyView()
+ *
+ * @param emptyView - to set as Empty View
+ */
+ public void setEmptyViewInternal(View emptyView);
+
+ /**
+ * Should call PullToRefreshBase.setEmptyView() which will then
+ * automatically call through to setEmptyViewInternal()
+ *
+ * @param emptyView - to set as Empty View
+ */
+ public void setEmptyView(View emptyView);
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.java
new file mode 100644
index 0000000..3c16772
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Matrix;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.RotateAnimation;
+import android.widget.ImageView.ScaleType;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Orientation;
+import com.handmark.pulltorefresh.library.R;
+
+@SuppressLint("ViewConstructor")
+public class FlipLoadingLayout extends LoadingLayout {
+
+ static final int FLIP_ANIMATION_DURATION = 150;
+
+ private final Animation mRotateAnimation, mResetRotateAnimation;
+
+ public FlipLoadingLayout(Context context, final Mode mode, final Orientation scrollDirection, TypedArray attrs) {
+ super(context, mode, scrollDirection, attrs);
+
+ final int rotateAngle = mode == Mode.PULL_FROM_START ? -180 : 180;
+
+ mRotateAnimation = new RotateAnimation(0, rotateAngle, Animation.RELATIVE_TO_SELF, 0.5f,
+ Animation.RELATIVE_TO_SELF, 0.5f);
+ mRotateAnimation.setInterpolator(ANIMATION_INTERPOLATOR);
+ mRotateAnimation.setDuration(FLIP_ANIMATION_DURATION);
+ mRotateAnimation.setFillAfter(true);
+
+ mResetRotateAnimation = new RotateAnimation(rotateAngle, 0, Animation.RELATIVE_TO_SELF, 0.5f,
+ Animation.RELATIVE_TO_SELF, 0.5f);
+ mResetRotateAnimation.setInterpolator(ANIMATION_INTERPOLATOR);
+ mResetRotateAnimation.setDuration(FLIP_ANIMATION_DURATION);
+ mResetRotateAnimation.setFillAfter(true);
+ }
+
+ @Override
+ protected void onLoadingDrawableSet(Drawable imageDrawable) {
+ if (null != imageDrawable) {
+ final int dHeight = imageDrawable.getIntrinsicHeight();
+ final int dWidth = imageDrawable.getIntrinsicWidth();
+
+ /**
+ * We need to set the width/height of the ImageView so that it is
+ * square with each side the size of the largest drawable dimension.
+ * This is so that it doesn't clip when rotated.
+ */
+ ViewGroup.LayoutParams lp = mHeaderImage.getLayoutParams();
+ lp.width = lp.height = Math.max(dHeight, dWidth);
+ mHeaderImage.requestLayout();
+
+ /**
+ * We now rotate the Drawable so that is at the correct rotation,
+ * and is centered.
+ */
+ mHeaderImage.setScaleType(ScaleType.MATRIX);
+ Matrix matrix = new Matrix();
+ matrix.postTranslate((lp.width - dWidth) / 2f, (lp.height - dHeight) / 2f);
+ matrix.postRotate(getDrawableRotationAngle(), lp.width / 2f, lp.height / 2f);
+ mHeaderImage.setImageMatrix(matrix);
+ }
+ }
+
+ @Override
+ protected void onPullImpl(float scaleOfLayout) {
+ // NO-OP
+ }
+
+ @Override
+ protected void pullToRefreshImpl() {
+ // Only start reset Animation, we've previously show the rotate anim
+ if (mRotateAnimation == mHeaderImage.getAnimation()) {
+ mHeaderImage.startAnimation(mResetRotateAnimation);
+ }
+ }
+
+ @Override
+ protected void refreshingImpl() {
+ mHeaderImage.clearAnimation();
+ mHeaderImage.setVisibility(View.INVISIBLE);
+ // mHeaderProgress.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ protected void releaseToRefreshImpl() {
+ mHeaderImage.startAnimation(mRotateAnimation);
+ }
+
+ @Override
+ protected void resetImpl() {
+ mHeaderImage.clearAnimation();
+ // mHeaderProgress.setVisibility(View.GONE);
+ mHeaderImage.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ protected int getDefaultDrawableResId() {
+ return R.drawable.indicator_arrow;
+ }
+
+ private float getDrawableRotationAngle() {
+ float angle = 0f;
+ switch (mMode) {
+ case PULL_FROM_END:
+ if (mScrollDirection == Orientation.HORIZONTAL) {
+ angle = 90f;
+ } else {
+ angle = 180f;
+ }
+ break;
+
+ case PULL_FROM_START:
+ if (mScrollDirection == Orientation.HORIZONTAL) {
+ angle = 270f;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return angle;
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/IndicatorLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/IndicatorLayout.java
new file mode 100644
index 0000000..a9069f2
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/IndicatorLayout.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Matrix;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Interpolator;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.R;
+
+@SuppressLint("ViewConstructor")
+public class IndicatorLayout extends FrameLayout implements AnimationListener {
+
+ static final int DEFAULT_ROTATION_ANIMATION_DURATION = 150;
+
+ private Animation mInAnim, mOutAnim;
+ private ImageView mArrowImageView;
+
+ private final Animation mRotateAnimation, mResetRotateAnimation;
+
+ public IndicatorLayout(Context context, PullToRefreshBase.Mode mode) {
+ super(context);
+ mArrowImageView = new ImageView(context);
+
+ Drawable arrowD = getResources().getDrawable(R.drawable.indicator_arrow);
+ mArrowImageView.setImageDrawable(arrowD);
+
+ final int padding = getResources().getDimensionPixelSize(R.dimen.indicator_internal_padding);
+ mArrowImageView.setPadding(padding, padding, padding, padding);
+ addView(mArrowImageView);
+
+ int inAnimResId, outAnimResId;
+ switch (mode) {
+ case PULL_FROM_END:
+ inAnimResId = R.anim.slide_in_from_bottom;
+ outAnimResId = R.anim.slide_out_to_bottom;
+ setBackgroundResource(R.drawable.indicator_bg_bottom);
+
+ // Rotate Arrow so it's pointing the correct way
+ mArrowImageView.setScaleType(ScaleType.MATRIX);
+ Matrix matrix = new Matrix();
+ matrix.setRotate(180f, arrowD.getIntrinsicWidth() / 2f, arrowD.getIntrinsicHeight() / 2f);
+ mArrowImageView.setImageMatrix(matrix);
+ break;
+ default:
+ case PULL_FROM_START:
+ inAnimResId = R.anim.slide_in_from_top;
+ outAnimResId = R.anim.slide_out_to_top;
+ setBackgroundResource(R.drawable.indicator_bg_top);
+ break;
+ }
+
+ mInAnim = AnimationUtils.loadAnimation(context, inAnimResId);
+ mInAnim.setAnimationListener(this);
+
+ mOutAnim = AnimationUtils.loadAnimation(context, outAnimResId);
+ mOutAnim.setAnimationListener(this);
+
+ final Interpolator interpolator = new LinearInterpolator();
+ mRotateAnimation = new RotateAnimation(0, -180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
+ 0.5f);
+ mRotateAnimation.setInterpolator(interpolator);
+ mRotateAnimation.setDuration(DEFAULT_ROTATION_ANIMATION_DURATION);
+ mRotateAnimation.setFillAfter(true);
+
+ mResetRotateAnimation = new RotateAnimation(-180, 0, Animation.RELATIVE_TO_SELF, 0.5f,
+ Animation.RELATIVE_TO_SELF, 0.5f);
+ mResetRotateAnimation.setInterpolator(interpolator);
+ mResetRotateAnimation.setDuration(DEFAULT_ROTATION_ANIMATION_DURATION);
+ mResetRotateAnimation.setFillAfter(true);
+
+ }
+
+ public final boolean isVisible() {
+ Animation currentAnim = getAnimation();
+ if (null != currentAnim) {
+ return mInAnim == currentAnim;
+ }
+
+ return getVisibility() == View.VISIBLE;
+ }
+
+ public void hide() {
+ startAnimation(mOutAnim);
+ }
+
+ public void show() {
+ mArrowImageView.clearAnimation();
+ startAnimation(mInAnim);
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ if (animation == mOutAnim) {
+ mArrowImageView.clearAnimation();
+ setVisibility(View.GONE);
+ } else if (animation == mInAnim) {
+ setVisibility(View.VISIBLE);
+ }
+
+ clearAnimation();
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
+ // NO-OP
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ setVisibility(View.VISIBLE);
+ }
+
+ public void releaseToRefresh() {
+ mArrowImageView.startAnimation(mRotateAnimation);
+ }
+
+ public void pullToRefresh() {
+ mArrowImageView.startAnimation(mResetRotateAnimation);
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/LoadingLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/LoadingLayout.java
new file mode 100644
index 0000000..b0e4e7e
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/LoadingLayout.java
@@ -0,0 +1,393 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.graphics.Typeface;
+import android.graphics.drawable.AnimationDrawable;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Interpolator;
+import android.view.animation.LinearInterpolator;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.handmark.pulltorefresh.library.ILoadingLayout;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Orientation;
+import com.handmark.pulltorefresh.library.R;
+
+@SuppressLint("ViewConstructor")
+public abstract class LoadingLayout extends FrameLayout implements ILoadingLayout {
+
+ static final String LOG_TAG = "PullToRefresh-LoadingLayout";
+
+ static final Interpolator ANIMATION_INTERPOLATOR = new LinearInterpolator();
+
+ private FrameLayout mInnerLayout;
+
+ protected final ImageView mHeaderImage;
+ //protected final ProgressBar mHeaderProgress;
+
+ private boolean mUseIntrinsicAnimation;
+
+ private final TextView mHeaderText;
+ private final TextView mSubHeaderText;
+
+ protected final Mode mMode;
+ protected final Orientation mScrollDirection;
+
+ private CharSequence mPullLabel;
+ private CharSequence mRefreshingLabel;
+ private CharSequence mReleaseLabel;
+
+ public LoadingLayout(Context context, final Mode mode, final Orientation scrollDirection, TypedArray attrs) {
+ super(context);
+ mMode = mode;
+ mScrollDirection = scrollDirection;
+
+ switch (scrollDirection) {
+ case HORIZONTAL:
+ LayoutInflater.from(context).inflate(R.layout.pull_to_refresh_header_horizontal, this);
+ break;
+ case VERTICAL:
+ default:
+ LayoutInflater.from(context).inflate(R.layout.pull_to_refresh_header_vertical, this);
+ break;
+ }
+
+ mInnerLayout = (FrameLayout) findViewById(R.id.fl_inner);
+ mHeaderText = (TextView) mInnerLayout.findViewById(R.id.pull_to_refresh_text);
+ //mHeaderProgress = (ProgressBar) mInnerLayout.findViewById(R.id.pull_to_refresh_progress);
+ mSubHeaderText = (TextView) mInnerLayout.findViewById(R.id.pull_to_refresh_sub_text);
+ mHeaderImage = (ImageView) mInnerLayout.findViewById(R.id.pull_to_refresh_image);
+
+ FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mInnerLayout.getLayoutParams();
+
+ switch (mode) {
+ case PULL_FROM_END:
+ lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.TOP : Gravity.LEFT;
+
+ // Load in labels
+ mPullLabel = context.getString(R.string.pull_to_refresh_from_bottom_pull_label);
+ mRefreshingLabel = context.getString(R.string.pull_to_refresh_from_bottom_refreshing_label);
+ mReleaseLabel = context.getString(R.string.pull_to_refresh_from_bottom_release_label);
+ break;
+
+ case PULL_FROM_START:
+ default:
+ lp.gravity = scrollDirection == Orientation.VERTICAL ? Gravity.BOTTOM : Gravity.RIGHT;
+
+ // Load in labels
+ mPullLabel = context.getString(R.string.pull_to_refresh_pull_label);
+ mRefreshingLabel = context.getString(R.string.pull_to_refresh_refreshing_label);
+ mReleaseLabel = context.getString(R.string.pull_to_refresh_release_label);
+ break;
+ }
+
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderBackground)) {
+ Drawable background = attrs.getDrawable(R.styleable.PullToRefresh_ptrHeaderBackground);
+ if (null != background) {
+ ViewCompat.setBackground(this, background);
+ }
+ }
+
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderTextAppearance)) {
+ TypedValue styleID = new TypedValue();
+ attrs.getValue(R.styleable.PullToRefresh_ptrHeaderTextAppearance, styleID);
+ setTextAppearance(styleID.data);
+ }
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrSubHeaderTextAppearance)) {
+ TypedValue styleID = new TypedValue();
+ attrs.getValue(R.styleable.PullToRefresh_ptrSubHeaderTextAppearance, styleID);
+ setSubTextAppearance(styleID.data);
+ }
+
+ // Text Color attrs need to be set after TextAppearance attrs
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderTextColor)) {
+ ColorStateList colors = attrs.getColorStateList(R.styleable.PullToRefresh_ptrHeaderTextColor);
+ if (null != colors) {
+ setTextColor(colors);
+ }
+ }
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrHeaderSubTextColor)) {
+ ColorStateList colors = attrs.getColorStateList(R.styleable.PullToRefresh_ptrHeaderSubTextColor);
+ if (null != colors) {
+ setSubTextColor(colors);
+ }
+ }
+
+ // Try and get defined drawable from Attrs
+ Drawable imageDrawable = null;
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawable)) {
+ imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawable);
+ }
+
+ // Check Specific Drawable from Attrs, these overrite the generic
+ // drawable attr above
+ switch (mode) {
+ case PULL_FROM_START:
+ default:
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawableStart)) {
+ imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawableStart);
+ } else if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawableTop)) {
+ Utils.warnDeprecation("ptrDrawableTop", "ptrDrawableStart");
+ imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawableTop);
+ }
+ break;
+
+ case PULL_FROM_END:
+ if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawableEnd)) {
+ imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawableEnd);
+ } else if (attrs.hasValue(R.styleable.PullToRefresh_ptrDrawableBottom)) {
+ Utils.warnDeprecation("ptrDrawableBottom", "ptrDrawableEnd");
+ imageDrawable = attrs.getDrawable(R.styleable.PullToRefresh_ptrDrawableBottom);
+ }
+ break;
+ }
+
+ // If we don't have a user defined drawable, load the default
+ if (null == imageDrawable) {
+ imageDrawable = context.getResources().getDrawable(getDefaultDrawableResId());
+ }
+
+ // Set Drawable, and save width/height
+ setLoadingDrawable(imageDrawable);
+
+ reset();
+ }
+
+ public final void setHeight(int height) {
+ ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) getLayoutParams();
+ lp.height = height;
+ requestLayout();
+ }
+
+ public final void setWidth(int width) {
+ ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) getLayoutParams();
+ lp.width = width;
+ requestLayout();
+ }
+
+ public final int getContentSize() {
+ switch (mScrollDirection) {
+ case HORIZONTAL:
+ return mInnerLayout.getWidth();
+ case VERTICAL:
+ default:
+ return mInnerLayout.getHeight();
+ }
+ }
+
+ public final void hideAllViews() {
+ if (View.VISIBLE == mHeaderText.getVisibility()) {
+ mHeaderText.setVisibility(View.INVISIBLE);
+ }
+ /*if (View.VISIBLE == mHeaderProgress.getVisibility()) {
+ mHeaderProgress.setVisibility(View.INVISIBLE);
+ }*/
+ if (View.VISIBLE == mHeaderImage.getVisibility()) {
+ mHeaderImage.setVisibility(View.INVISIBLE);
+ }
+ if (View.VISIBLE == mSubHeaderText.getVisibility()) {
+ mSubHeaderText.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ public final void onPull(float scaleOfLayout) {
+ if (!mUseIntrinsicAnimation) {
+ onPullImpl(scaleOfLayout);
+ }
+ }
+
+ public final void pullToRefresh() {
+ if (null != mHeaderText) {
+ mHeaderText.setText(mPullLabel);
+ }
+
+ // Now call the callback
+ pullToRefreshImpl();
+ }
+
+ public final void refreshing() {
+ if (null != mHeaderText) {
+ mHeaderText.setText(mRefreshingLabel);
+ }
+
+ if (mUseIntrinsicAnimation) {
+ ((AnimationDrawable) mHeaderImage.getDrawable()).start();
+ } else {
+ // Now call the callback
+ refreshingImpl();
+ }
+
+ if (null != mSubHeaderText) {
+ mSubHeaderText.setVisibility(View.GONE);
+ }
+ }
+
+ public final void releaseToRefresh() {
+ if (null != mHeaderText) {
+ mHeaderText.setText(mReleaseLabel);
+ }
+
+ // Now call the callback
+ releaseToRefreshImpl();
+ }
+
+ public final void reset() {
+ if (null != mHeaderText) {
+ mHeaderText.setText(mPullLabel);
+ }
+ mHeaderImage.setVisibility(View.VISIBLE);
+
+ if (mUseIntrinsicAnimation) {
+ ((AnimationDrawable) mHeaderImage.getDrawable()).stop();
+ } else {
+ // Now call the callback
+ resetImpl();
+ }
+
+ if (null != mSubHeaderText) {
+ if (TextUtils.isEmpty(mSubHeaderText.getText())) {
+ mSubHeaderText.setVisibility(View.GONE);
+ } else {
+ mSubHeaderText.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+
+ @Override
+ public void setLastUpdatedLabel(CharSequence label) {
+ setSubHeaderText(label);
+ }
+
+ public final void setLoadingDrawable(Drawable imageDrawable) {
+ // Set Drawable
+ mHeaderImage.setImageDrawable(imageDrawable);
+ mUseIntrinsicAnimation = (imageDrawable instanceof AnimationDrawable);
+
+ // Now call the callback
+ onLoadingDrawableSet(imageDrawable);
+ }
+
+ public void setPullLabel(CharSequence pullLabel) {
+ mPullLabel = pullLabel;
+ }
+
+ public void setRefreshingLabel(CharSequence refreshingLabel) {
+ mRefreshingLabel = refreshingLabel;
+ }
+
+ public void setReleaseLabel(CharSequence releaseLabel) {
+ mReleaseLabel = releaseLabel;
+ }
+
+ @Override
+ public void setTextTypeface(Typeface tf) {
+ mHeaderText.setTypeface(tf);
+ }
+
+ public final void showInvisibleViews() {
+ if (View.INVISIBLE == mHeaderText.getVisibility()) {
+ mHeaderText.setVisibility(View.VISIBLE);
+ }
+ /* if (View.INVISIBLE == mHeaderProgress.getVisibility()) {
+ mHeaderProgress.setVisibility(View.VISIBLE);
+ }*/
+ if (View.INVISIBLE == mHeaderImage.getVisibility()) {
+ mHeaderImage.setVisibility(View.VISIBLE);
+ }
+ if (View.INVISIBLE == mSubHeaderText.getVisibility()) {
+ mSubHeaderText.setVisibility(View.VISIBLE);
+ }
+ }
+
+ /**
+ * Callbacks for derivative Layouts
+ */
+
+ protected abstract int getDefaultDrawableResId();
+
+ protected abstract void onLoadingDrawableSet(Drawable imageDrawable);
+
+ protected abstract void onPullImpl(float scaleOfLayout);
+
+ protected abstract void pullToRefreshImpl();
+
+ protected abstract void refreshingImpl();
+
+ protected abstract void releaseToRefreshImpl();
+
+ protected abstract void resetImpl();
+
+ private void setSubHeaderText(CharSequence label) {
+ if (null != mSubHeaderText) {
+ if (TextUtils.isEmpty(label)) {
+ mSubHeaderText.setVisibility(View.GONE);
+ } else {
+ mSubHeaderText.setText(label);
+
+ // Only set it to Visible if we're GONE, otherwise VISIBLE will
+ // be set soon
+ if (View.GONE == mSubHeaderText.getVisibility()) {
+ mSubHeaderText.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+ }
+
+ private void setSubTextAppearance(int value) {
+ if (null != mSubHeaderText) {
+ mSubHeaderText.setTextAppearance(getContext(), value);
+ }
+ }
+
+ private void setSubTextColor(ColorStateList color) {
+ if (null != mSubHeaderText) {
+ mSubHeaderText.setTextColor(color);
+ }
+ }
+
+ private void setTextAppearance(int value) {
+ if (null != mHeaderText) {
+ mHeaderText.setTextAppearance(getContext(), value);
+ }
+ if (null != mSubHeaderText) {
+ mSubHeaderText.setTextAppearance(getContext(), value);
+ }
+ }
+
+ private void setTextColor(ColorStateList color) {
+ if (null != mHeaderText) {
+ mHeaderText.setTextColor(color);
+ }
+ if (null != mSubHeaderText) {
+ mSubHeaderText.setTextColor(color);
+ }
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java
new file mode 100644
index 0000000..bda7b2f
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Matrix;
+import android.graphics.drawable.Drawable;
+import android.view.animation.Animation;
+import android.view.animation.RotateAnimation;
+import android.widget.ImageView.ScaleType;
+
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Orientation;
+import com.handmark.pulltorefresh.library.R;
+
+public class RotateLoadingLayout extends LoadingLayout {
+
+ static final int ROTATION_ANIMATION_DURATION = 1200;
+
+ private final Animation mRotateAnimation;
+ private final Matrix mHeaderImageMatrix;
+
+ private float mRotationPivotX, mRotationPivotY;
+
+ private final boolean mRotateDrawableWhilePulling;
+
+ public RotateLoadingLayout(Context context, Mode mode, Orientation scrollDirection, TypedArray attrs) {
+ super(context, mode, scrollDirection, attrs);
+
+ mRotateDrawableWhilePulling = attrs.getBoolean(R.styleable.PullToRefresh_ptrRotateDrawableWhilePulling, true);
+
+ mHeaderImage.setScaleType(ScaleType.MATRIX);
+ mHeaderImageMatrix = new Matrix();
+ mHeaderImage.setImageMatrix(mHeaderImageMatrix);
+
+ mRotateAnimation = new RotateAnimation(0, 720, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
+ 0.5f);
+ mRotateAnimation.setInterpolator(ANIMATION_INTERPOLATOR);
+ mRotateAnimation.setDuration(ROTATION_ANIMATION_DURATION);
+ mRotateAnimation.setRepeatCount(Animation.INFINITE);
+ mRotateAnimation.setRepeatMode(Animation.RESTART);
+ }
+
+ public void onLoadingDrawableSet(Drawable imageDrawable) {
+ if (null != imageDrawable) {
+ mRotationPivotX = Math.round(imageDrawable.getIntrinsicWidth() / 2f);
+ mRotationPivotY = Math.round(imageDrawable.getIntrinsicHeight() / 2f);
+ }
+ }
+
+ protected void onPullImpl(float scaleOfLayout) {
+ float angle;
+ if (mRotateDrawableWhilePulling) {
+ angle = scaleOfLayout * 90f;
+ } else {
+ angle = Math.max(0f, Math.min(180f, scaleOfLayout * 360f - 180f));
+ }
+
+ mHeaderImageMatrix.setRotate(angle, mRotationPivotX, mRotationPivotY);
+ mHeaderImage.setImageMatrix(mHeaderImageMatrix);
+ }
+
+ @Override
+ protected void refreshingImpl() {
+ mHeaderImage.startAnimation(mRotateAnimation);
+ }
+
+ @Override
+ protected void resetImpl() {
+ mHeaderImage.clearAnimation();
+ resetImageRotation();
+ }
+
+ private void resetImageRotation() {
+ if (null != mHeaderImageMatrix) {
+ mHeaderImageMatrix.reset();
+ mHeaderImage.setImageMatrix(mHeaderImageMatrix);
+ }
+ }
+
+ @Override
+ protected void pullToRefreshImpl() {
+ // NO-OP
+ }
+
+ @Override
+ protected void releaseToRefreshImpl() {
+ // NO-OP
+ }
+
+ @Override
+ protected int getDefaultDrawableResId() {
+ return R.drawable.default_ptr_rotate;
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.java
new file mode 100644
index 0000000..2eda727
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/TweenAnimLoadingLayout.java
@@ -0,0 +1,63 @@
+package com.handmark.pulltorefresh.library.internal;
+
+import com.handmark.pulltorefresh.library.R;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
+import com.handmark.pulltorefresh.library.PullToRefreshBase.Orientation;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.AnimationDrawable;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+/**
+ * Created by gaopeng on 2016/7/18.
+ */
+public class TweenAnimLoadingLayout extends LoadingLayout {
+ private AnimationDrawable animationDrawable;
+
+ public TweenAnimLoadingLayout(Context context, Mode mode,
+ Orientation scrollDirection, TypedArray attrs) {
+ super(context, mode, scrollDirection, attrs);
+ // 初始化
+ mHeaderImage.setImageResource(R.drawable.refresh_anim);
+ animationDrawable = (AnimationDrawable) mHeaderImage.getDrawable();
+ }
+ // 默认图片
+ @Override
+ protected int getDefaultDrawableResId() {
+ return R.drawable.loading_01;
+ }
+
+ @Override
+ protected void onLoadingDrawableSet(Drawable imageDrawable) {
+ // NO-OP
+ }
+
+ @Override
+ protected void onPullImpl(float scaleOfLayout) {
+ // NO-OP
+ }
+ // 下拉以刷新
+ @Override
+ protected void pullToRefreshImpl() {
+ // NO-OP
+ }
+ // 正在刷新时回调
+ @Override
+ protected void refreshingImpl() {
+ // 播放帧动画
+ animationDrawable.start();
+ }
+ // 释放以刷新
+ @Override
+ protected void releaseToRefreshImpl() {
+ // NO-OP
+ }
+ // 重新设置
+ @Override
+ protected void resetImpl() {
+ mHeaderImage.setVisibility(View.VISIBLE);
+ mHeaderImage.clearAnimation();
+ }
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/Utils.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/Utils.java
new file mode 100644
index 0000000..7343218
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/Utils.java
@@ -0,0 +1,13 @@
+package com.handmark.pulltorefresh.library.internal;
+
+import android.util.Log;
+
+public class Utils {
+
+ static final String LOG_TAG = "PullToRefresh";
+
+ public static void warnDeprecation(String depreacted, String replacement) {
+ Log.w(LOG_TAG, "You're using the deprecated " + depreacted + " attr, please switch over to " + replacement);
+ }
+
+}
diff --git a/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/ViewCompat.java b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/ViewCompat.java
new file mode 100644
index 0000000..618bace
--- /dev/null
+++ b/library_pullToRefresh/src/com/handmark/pulltorefresh/library/internal/ViewCompat.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright 2011, 2012 Chris Banes.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *******************************************************************************/
+package com.handmark.pulltorefresh.library.internal;
+
+import android.annotation.TargetApi;
+import android.graphics.drawable.Drawable;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
+import android.view.View;
+
+@SuppressWarnings("deprecation")
+public class ViewCompat {
+
+ public static void postOnAnimation(View view, Runnable runnable) {
+ if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
+ SDK16.postOnAnimation(view, runnable);
+ } else {
+ view.postDelayed(runnable, 16);
+ }
+ }
+
+ public static void setBackground(View view, Drawable background) {
+ if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
+ SDK16.setBackground(view, background);
+ } else {
+ view.setBackgroundDrawable(background);
+ }
+ }
+
+ public static void setLayerType(View view, int layerType) {
+ if (VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB) {
+ SDK11.setLayerType(view, layerType);
+ }
+ }
+
+ @TargetApi(11)
+ static class SDK11 {
+
+ public static void setLayerType(View view, int layerType) {
+ view.setLayerType(layerType, null);
+ }
+ }
+
+ @TargetApi(16)
+ static class SDK16 {
+
+ public static void postOnAnimation(View view, Runnable runnable) {
+ view.postOnAnimation(runnable);
+ }
+
+ public static void setBackground(View view, Drawable background) {
+ view.setBackground(background);
+ }
+
+ }
+
+}