├── libs ├── .gitignore ├── src │ └── main │ │ ├── res │ │ └── values │ │ │ ├── strings.xml │ │ │ └── attrs.xml │ │ ├── java │ │ └── com │ │ │ └── ybao │ │ │ └── pullrefreshview │ │ │ ├── support │ │ │ ├── impl │ │ │ │ ├── OnEndListener.java │ │ │ │ ├── OnScrollListener.java │ │ │ │ ├── HPullable.java │ │ │ │ ├── VPullable.java │ │ │ │ ├── Pullable.java │ │ │ │ ├── Loadable.java │ │ │ │ └── Refreshable.java │ │ │ ├── anim │ │ │ │ ├── AnimListener.java │ │ │ │ ├── IAnimGetter.java │ │ │ │ ├── interpolator │ │ │ │ │ └── DecelerateAccelerateInterpolator.java │ │ │ │ └── AnimGetter.java │ │ │ ├── type │ │ │ │ └── LayoutType.java │ │ │ ├── resolver │ │ │ │ └── IEventResolver.java │ │ │ ├── view │ │ │ │ └── ObservableScrollView.java │ │ │ ├── utils │ │ │ │ ├── Utils.java │ │ │ │ ├── ViewScrollUtil.java │ │ │ │ └── HCanPullUtil.java │ │ │ └── overscroll │ │ │ │ └── OverScrollController.java │ │ │ ├── extras │ │ │ ├── PullableImageView.java │ │ │ └── PullableTextView.java │ │ │ └── layout │ │ │ └── SliderBox.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── simple ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── dimens.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-xhdpi │ │ │ ├── id_load.png │ │ │ ├── id_load_b.png │ │ │ ├── ic_launcher.png │ │ │ ├── ic_pull_up.png │ │ │ ├── img_header.png │ │ │ ├── ic_pull_down.png │ │ │ ├── id_load_clone.png │ │ │ └── id_load_clone_b.png │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── drawable │ │ │ ├── progress_large_black.xml │ │ │ ├── progress_large_white.xml │ │ │ ├── top_shadow.xml │ │ │ └── bottom_shadow.xml │ │ ├── layout │ │ │ ├── item.xml │ │ │ ├── activity_fling.xml │ │ │ ├── activity_mifling.xml │ │ │ ├── activity_other.xml │ │ │ ├── view_header_lock.xml │ │ │ ├── view_footer_lock.xml │ │ │ ├── activity_all_view.xml │ │ │ ├── fragment4.xml │ │ │ ├── activity_rg.xml │ │ │ ├── activity_drawer_ep.xml │ │ │ ├── activity_scroller_ep.xml │ │ │ ├── activity_recyclerview.xml │ │ │ ├── fragment0.xml │ │ │ ├── activity_normol_ep.xml │ │ │ ├── activity_rg2.xml │ │ │ ├── view_footer_expand.xml │ │ │ ├── activity_textview.xml │ │ │ ├── view_header_expand.xml │ │ │ ├── activity_expand.xml │ │ │ ├── activity_header.xml │ │ │ ├── activity_main.xml │ │ │ ├── fragment1.xml │ │ │ ├── activity_nestedscrolling.xml │ │ │ ├── activity_normal_refresh.xml │ │ │ ├── view_footer_normal.xml │ │ │ ├── view_footer_end.xml │ │ │ ├── view_header_normal.xml │ │ │ ├── activity_scrollview.xml │ │ │ ├── fragment2.xml │ │ │ └── fragment3.xml │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ └── anim │ │ │ ├── scale_in.xml │ │ │ └── scale_out.xml │ │ ├── ic_launcher-web.png │ │ ├── java │ │ └── com │ │ │ └── ybao │ │ │ └── pullrefreshview │ │ │ └── simple │ │ │ ├── view │ │ │ ├── MiFliingLayout.java │ │ │ ├── EndFooterView.java │ │ │ ├── ExpandFooterView.java │ │ │ ├── ExpandHeaderView.java │ │ │ ├── NormalFooterView.java │ │ │ ├── NormalHeaderView.java │ │ │ ├── LockFooterView.java │ │ │ └── LockHeaderView.java │ │ │ ├── activities │ │ │ ├── FlingActivity.java │ │ │ ├── other │ │ │ │ ├── MIFlingActivity.java │ │ │ │ └── HeaderActivity.java │ │ │ ├── OtherActivity.java │ │ │ ├── ex │ │ │ │ ├── TextViewActivity.java │ │ │ │ ├── ScrollViewActivity.java │ │ │ │ └── RecyclerViewActivity.java │ │ │ ├── AllViewActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── ExpandActivity.java │ │ │ ├── ep │ │ │ │ ├── RG2Activity.java │ │ │ │ ├── RGActivity.java │ │ │ │ ├── DrawerEpActivity.java │ │ │ │ ├── ScrollerEpActivity.java │ │ │ │ └── NormolEpActivity.java │ │ │ ├── NestedScrollingActivity.java │ │ │ └── NormalRefreshActivity.java │ │ │ ├── fragment │ │ │ ├── Fragment2.java │ │ │ ├── Fragment3.java │ │ │ ├── Fragment4.java │ │ │ ├── Fragment0.java │ │ │ └── Fragment1.java │ │ │ └── utils │ │ │ └── AnimUtil.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── standardadapter ├── .gitignore ├── src │ └── main │ │ ├── res │ │ └── values │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── ybao │ │ └── adapter │ │ ├── StandardAdapter.java │ │ └── recyclerview │ │ ├── HeaderStandardAdapter.java │ │ └── StandardAdapter.java ├── build.gradle └── proguard-rules.pro ├── settings.gradle ├── GIF ├── 1.gif ├── 2.gif ├── 3.gif ├── 4.gif ├── 5.gif ├── 6.gif ├── 7.gif ├── 8.gif └── 9.gif ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── .gitignore ├── gradlew.bat └── gradlew /libs/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /simple/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /standardadapter/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':simple', ':libs', ':standardadapter' 2 | -------------------------------------------------------------------------------- /GIF/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/1.gif -------------------------------------------------------------------------------- /GIF/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/2.gif -------------------------------------------------------------------------------- /GIF/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/3.gif -------------------------------------------------------------------------------- /GIF/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/4.gif -------------------------------------------------------------------------------- /GIF/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/5.gif -------------------------------------------------------------------------------- /GIF/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/6.gif -------------------------------------------------------------------------------- /GIF/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/7.gif -------------------------------------------------------------------------------- /GIF/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/8.gif -------------------------------------------------------------------------------- /GIF/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/GIF/9.gif -------------------------------------------------------------------------------- /libs/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | libs 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /simple/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | PullRefreshView 3 | 4 | -------------------------------------------------------------------------------- /simple/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /standardadapter/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | standardadapter 3 | 4 | -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/id_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/id_load.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/id_load_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/id_load_b.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/ic_pull_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/ic_pull_up.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/img_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/img_header.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/ic_pull_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/ic_pull_down.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/id_load_clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/id_load_clone.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /simple/src/main/res/mipmap-xhdpi/id_load_clone_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pierreown/PullRefreshView/HEAD/simple/src/main/res/mipmap-xhdpi/id_load_clone_b.png -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | ANDROID_BUILD_MIN_SDK_VERSION=9 2 | ANDROID_BUILD_TARGET_SDK_VERSION=22 3 | ANDROID_BUILD_SDK_VERSION=23 4 | ANDROID_BUILD_TOOLS_VERSION=25.0.0 5 | 6 | VERSION_NAME=2.1 7 | VERSION_CODE=3 -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/impl/OnEndListener.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.impl; 2 | 3 | /** 4 | * Created by ybao on 2017/5/16. 5 | */ 6 | 7 | public interface OnEndListener { 8 | void onEnd(); 9 | } 10 | -------------------------------------------------------------------------------- /simple/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /simple/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun May 14 06:00:48 CST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 7 | -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/anim/AnimListener.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.anim; 2 | 3 | /** 4 | * Created by ybao on 2017/5/14. 5 | */ 6 | 7 | public interface AnimListener { 8 | void onUpdate(float value); 9 | 10 | void onAnimEnd(); 11 | 12 | void onAnimCencel(); 13 | } 14 | -------------------------------------------------------------------------------- /simple/src/main/res/drawable/progress_large_black.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /simple/src/main/res/drawable/progress_large_white.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/impl/OnScrollListener.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.impl; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * Created by Ybao on 16/7/24. 7 | */ 8 | public interface OnScrollListener { 9 | void onScrollChanged(View scrollView, int x, int y, int oldx, int oldy); 10 | } 11 | -------------------------------------------------------------------------------- /simple/src/main/res/drawable/top_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /libs/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /simple/src/main/res/drawable/bottom_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /standardadapter/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /libs/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /simple/src/main/res/layout/item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /simple/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/type/LayoutType.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.type; 2 | 3 | /** 4 | * Created by Ybao on 16/7/26. 5 | */ 6 | public class LayoutType { 7 | public final static int LAYOUT_NORMAL = 0x00; 8 | public final static int LAYOUT_DRAWER = 0x01; 9 | public final static int LAYOUT_SCROLLER = 0x10; 10 | public final static int LAYOUT_NOT_MOVE= 0x11; 11 | } 12 | -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/anim/IAnimGetter.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.anim; 2 | 3 | import android.view.animation.Interpolator; 4 | 5 | import com.nineoldandroids.animation.Animator; 6 | 7 | /** 8 | * Created by ybao on 2017/5/14. 9 | */ 10 | 11 | public interface IAnimGetter { 12 | Animator createMoveToAnim(int offstart, int duration, Interpolator interpolator, AnimListener animListener, float... p); 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # Gradle files 16 | .gradle/ 17 | build/ 18 | /*/build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | #.idea 30 | .idea/ 31 | *.iml 32 | -------------------------------------------------------------------------------- /simple/src/main/res/layout/activity_fling.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /simple/src/main/res/anim/scale_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 15 | -------------------------------------------------------------------------------- /simple/src/main/res/anim/scale_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 15 | -------------------------------------------------------------------------------- /simple/src/main/res/layout/activity_mifling.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /standardadapter/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion ANDROID_BUILD_SDK_VERSION as int 5 | buildToolsVersion ANDROID_BUILD_TOOLS_VERSION 6 | 7 | defaultConfig { 8 | minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION as int 9 | targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION as int 10 | } 11 | buildTypes { 12 | release { 13 | minifyEnabled false 14 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 15 | } 16 | } 17 | } 18 | 19 | dependencies { 20 | compile 'com.android.support:recyclerview-v7:23.2.1' 21 | } 22 | -------------------------------------------------------------------------------- /libs/src/main/java/com/ybao/pullrefreshview/support/anim/interpolator/DecelerateAccelerateInterpolator.java: -------------------------------------------------------------------------------- 1 | package com.ybao.pullrefreshview.support.anim.interpolator; 2 | 3 | import android.view.animation.Interpolator; 4 | 5 | /** 6 | * Created by ybao on 2017/5/14. 7 | */ 8 | 9 | public class DecelerateAccelerateInterpolator implements Interpolator { 10 | 11 | @Override 12 | public float getInterpolation(float input) { 13 | float result; 14 | if (input <= 0.5) { 15 | result = (float) (Math.sin(Math.PI * input)) / 2; 16 | } else { 17 | result = (float) (2 - Math.sin(Math.PI * input)) / 2; 18 | } 19 | return result; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /simple/src/main/res/layout/activity_other.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 |