From 94e117da100b3bc8e75d4e1055890f979a431011 Mon Sep 17 00:00:00 2001
From: yanyiqun <287979495@qq.com>
Date: Tue, 21 Nov 2017 16:23:39 +0800
Subject: [PATCH] change commit
---
.idea/modules.xml | 2 +-
app/build.gradle | 2 +-
.../java/com/refreshDemo/LottieActivity.java | 3 +-
.../java/com/refreshDemo/MyLottileView.java | 2 +-
.../com/refreshDemo/RecyclerViewActivity.java | 2 +-
refreshlayout/build.gradle | 10 +-
.../com/GoRefresh/DefaultHeaderLayout.java | 9 +-
.../com/GoRefesh_core/DefaultFooterView.java | 91 --
.../GoRefesh_core/DefaultHeaderLayout.java | 101 --
.../com/GoRefesh_core/GoRefreshLayout.java | 1130 -----------------
.../java/com/GoRefesh_core/IFooterView.java | 20 -
.../java/com/GoRefesh_core/IHeaderView.java | 40 -
.../com/GoRefesh_core/LoadmoreListener.java | 9 -
.../com/GoRefesh_core/RefreshListener.java | 9 -
.../com/GoRefesh_core/RingProgressBar.java | 173 ---
.../java/com/GoRefesh_core/ScrollingUtil.java | 309 -----
.../src/main/res/drawable-xhdpi/arrow.png | Bin 1223 -> 0 bytes
.../src/main/res/layout/footer_error.xml | 15 -
.../src/main/res/layout/footer_finish.xml | 12 -
.../src/main/res/layout/footer_loading.xml | 22 -
.../src/main/res/layout/headerview.xml | 35 -
.../src/main/res/values/attr.xml | 26 -
.../src/main/res/values/strings.xml | 4 -
.../.gitignore | 0
.../build.gradle | 10 +-
.../proguard-rules.pro | 0
.../ExampleInstrumentedTest.java | 0
.../src/main/AndroidManifest.xml | 0
.../java/com/GoRefesh_core}/LottieView.java | 5 +-
.../src/main/res/values/strings.xml | 3 +
.../com/GoRefesh_core/ExampleUnitTest.java | 0
settings.gradle | 2 +-
32 files changed, 24 insertions(+), 2022 deletions(-)
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultFooterView.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultHeaderLayout.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/GoRefreshLayout.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/IFooterView.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/IHeaderView.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/LoadmoreListener.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/RefreshListener.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/RingProgressBar.java
delete mode 100644 refreshlayout_core/src/main/java/com/GoRefesh_core/ScrollingUtil.java
delete mode 100644 refreshlayout_core/src/main/res/drawable-xhdpi/arrow.png
delete mode 100644 refreshlayout_core/src/main/res/layout/footer_error.xml
delete mode 100644 refreshlayout_core/src/main/res/layout/footer_finish.xml
delete mode 100644 refreshlayout_core/src/main/res/layout/footer_loading.xml
delete mode 100644 refreshlayout_core/src/main/res/layout/headerview.xml
delete mode 100644 refreshlayout_core/src/main/res/values/attr.xml
delete mode 100644 refreshlayout_core/src/main/res/values/strings.xml
rename {refreshlayout_core => refreshlayout_lottie}/.gitignore (100%)
rename {refreshlayout_core => refreshlayout_lottie}/build.gradle (79%)
rename {refreshlayout_core => refreshlayout_lottie}/proguard-rules.pro (100%)
rename {refreshlayout_core => refreshlayout_lottie}/src/androidTest/java/com/GoRefesh_core/ExampleInstrumentedTest.java (100%)
rename {refreshlayout_core => refreshlayout_lottie}/src/main/AndroidManifest.xml (100%)
rename {refreshlayout/src/main/java/com/GoRefresh => refreshlayout_lottie/src/main/java/com/GoRefesh_core}/LottieView.java (95%)
create mode 100644 refreshlayout_lottie/src/main/res/values/strings.xml
rename {refreshlayout_core => refreshlayout_lottie}/src/test/java/com/GoRefesh_core/ExampleUnitTest.java (100%)
diff --git a/.idea/modules.xml b/.idea/modules.xml
index a619fe2..8abf0a7 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index d2d33f8..ee92457 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,7 +32,7 @@ dependencies {
compile 'com.android.support:cardview-v7:26.1.0'
compile 'de.hdodenhof:circleimageview:2.2.0'
-
compile project(':refreshlayout')
+ compile project(':refreshlayout_lottie')
}
diff --git a/app/src/main/java/com/refreshDemo/LottieActivity.java b/app/src/main/java/com/refreshDemo/LottieActivity.java
index 5dde3e0..8d42f35 100644
--- a/app/src/main/java/com/refreshDemo/LottieActivity.java
+++ b/app/src/main/java/com/refreshDemo/LottieActivity.java
@@ -17,10 +17,9 @@
import android.widget.LinearLayout;
import android.widget.TextView;
+import com.GoRefesh_core.LottieView;
import com.GoRefresh.GoRefreshLayout;
import com.GoRefresh.LoadmoreListener;
-import com.GoRefresh.LottieView;
-
import com.GoRefresh.RefreshListener;
import com.airbnb.lottie.LottieAnimationView;
import com.bumptech.glide.Glide;
diff --git a/app/src/main/java/com/refreshDemo/MyLottileView.java b/app/src/main/java/com/refreshDemo/MyLottileView.java
index 98c4d60..cd055d4 100644
--- a/app/src/main/java/com/refreshDemo/MyLottileView.java
+++ b/app/src/main/java/com/refreshDemo/MyLottileView.java
@@ -3,7 +3,7 @@
import android.content.Context;
import android.widget.TextView;
-import com.GoRefresh.LottieView;
+import com.GoRefesh_core.LottieView;
/**
* Created by Administrator on 2017/10/23 0023.
diff --git a/app/src/main/java/com/refreshDemo/RecyclerViewActivity.java b/app/src/main/java/com/refreshDemo/RecyclerViewActivity.java
index 44fb1d7..aa6b6e0 100644
--- a/app/src/main/java/com/refreshDemo/RecyclerViewActivity.java
+++ b/app/src/main/java/com/refreshDemo/RecyclerViewActivity.java
@@ -11,9 +11,9 @@
import android.widget.ImageView;
import android.widget.TextView;
+import com.GoRefesh_core.LottieView;
import com.GoRefresh.GoRefreshLayout;
import com.GoRefresh.LoadmoreListener;
-import com.GoRefresh.LottieView;
import com.GoRefresh.RefreshListener;
import com.bumptech.glide.Glide;
diff --git a/refreshlayout/build.gradle b/refreshlayout/build.gradle
index de0b086..5db857a 100644
--- a/refreshlayout/build.gradle
+++ b/refreshlayout/build.gradle
@@ -3,12 +3,12 @@ apply plugin: 'com.github.dcendents.android-maven'
group='com.github.yanyiqun001'
android {
- compileSdkVersion 26
- buildToolsVersion "26.0.2"
+ compileSdkVersion 25
+ buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
- targetSdkVersion 26
+ targetSdkVersion 25
versionCode 1
versionName "1.0"
@@ -28,8 +28,6 @@ dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.android.support:recyclerview-v7:26.1.0'
+ compile 'com.android.support:recyclerview-v7:25.3.1'
testCompile 'junit:junit:4.12'
- compile 'com.airbnb.android:lottie:2.2.5'
}
diff --git a/refreshlayout/src/main/java/com/GoRefresh/DefaultHeaderLayout.java b/refreshlayout/src/main/java/com/GoRefresh/DefaultHeaderLayout.java
index 0746309..3acedb8 100644
--- a/refreshlayout/src/main/java/com/GoRefresh/DefaultHeaderLayout.java
+++ b/refreshlayout/src/main/java/com/GoRefresh/DefaultHeaderLayout.java
@@ -27,9 +27,9 @@ public DefaultHeaderLayout(@NonNull Context context) {
private void initView() {
mHeaderView=LayoutInflater.from(context).inflate(R.layout.headerview,null);
- icon=mHeaderView.findViewById(R.id.arrow);
- text=mHeaderView.findViewById(R.id.text);
- progressBar=mHeaderView.findViewById(R.id.progressbar);
+ icon= (ImageView) mHeaderView.findViewById(R.id.arrow);
+ text= (TextView) mHeaderView.findViewById(R.id.text);
+ progressBar= (RingProgressBar) mHeaderView.findViewById(R.id.progressbar);
icon.setVisibility(View.VISIBLE);
icon.setImageResource(R.drawable.arrow);
}
@@ -97,7 +97,4 @@ private void reset() {
progressBar.stopAnimation();
}
-
-
-
}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultFooterView.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultFooterView.java
deleted file mode 100644
index 4c0daff..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultFooterView.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.GoRefesh_core;
-
-import android.content.Context;
-import android.graphics.Paint;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.TextView;
-
-
-/**
- * Created by Administrator on 2017/9/30 0030.
- */
-
-public class DefaultFooterView implements IFooterView {
- private Context context;
- private View loadingView;
- private View finishView;
- private View errorView;
- private View retryView;
-
- public DefaultFooterView(Context context) {
- this.context = context;
- initView();
- }
-
- private void initView() {
- loadingView = LayoutInflater.from(context).inflate(R.layout.footer_loading, null);
- finishView = LayoutInflater.from(context).inflate(R.layout.footer_finish, null);
- errorView = LayoutInflater.from(context).inflate(R.layout.footer_error, null);
- retryView = errorView.findViewById(R.id.tips);
- ((TextView) retryView).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
- }
-
- @Override
- public View getLoadingView() {
- return loadingView;
- }
-
- @Override
- public View getFinishView() {
- return finishView;
- }
-
- @Override
- public View getFailureView() {
- return errorView;
- }
-
- @Override
- public View getRetryView() {
-
- return retryView;
- }
-
- public void setLoadingView(int layoutID) {
- this.loadingView = LayoutInflater.from(context).inflate(layoutID, null);
- }
-
- public void setLoadingView(View loadingView) {
- this.loadingView = loadingView;
- }
-
- public void setFinishView(int layoutID) {
- this.finishView = LayoutInflater.from(context).inflate(layoutID, null);
- }
-
- public void setFinishView(View finishView) {
- this.finishView = finishView;
- }
-
- public void setErrorView(int layoutID) {
- View errorView = LayoutInflater.from(context).inflate(layoutID, null);
- this.errorView = errorView;
- }
-
- public void setErrorView(View errorView) {
- this.errorView = errorView;
- }
-
- public void setErrorView(int layoutID, int retryId) {
- View errorView = LayoutInflater.from(context).inflate(layoutID, null);
- View retryView = errorView.findViewById(retryId);
- this.errorView = errorView;
- this.retryView = retryView;
- }
-
- public void setErrorView(View errorView, View retryView) {
- this.errorView = errorView;
- this.retryView = retryView;
- }
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultHeaderLayout.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultHeaderLayout.java
deleted file mode 100644
index 9109c15..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/DefaultHeaderLayout.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.GoRefesh_core;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-
-/**
- * Created by Administratoron 2017/9/25 0025.
- */
-
-public class DefaultHeaderLayout implements IHeaderView {
- private View mHeaderView;
- private ImageView icon;
- private TextView text;
- private Context context;
- private RingProgressBar progressBar;
- public DefaultHeaderLayout(@NonNull Context context) {
- this.context=context;
- initView();
- }
-
- private void initView() {
- mHeaderView=LayoutInflater.from(context).inflate(R.layout.headerview,null);
- icon=mHeaderView.findViewById(R.id.arrow);
- text=mHeaderView.findViewById(R.id.text);
- progressBar=mHeaderView.findViewById(R.id.progressbar);
- icon.setVisibility(View.VISIBLE);
- icon.setImageResource(R.drawable.arrow);
- }
-
- @Override
- public View getView() {
- return mHeaderView;
- }
-
- @Override
- public void onPull(float a) {
-
- }
-
- @Override
- public void onReady() {
- }
-
- @Override
- public void onChange(boolean isPull) {
- if(isPull){
- text.setText("释放刷新");
- arrowUp();
- }else{
- text.setText("下拉刷新");
- arrowDown();
- }
- }
-
- @Override
- public void onRefresh() {
- text.setText("正在加载");
- iconChange();
- }
-
- @Override
- public void onRefreshFinish() {
- }
-
- @Override
- public void onBackFinish() {
- reset();
- }
-
-
-
- private void arrowDown(){
- icon.animate().rotation(0).setDuration(300).start();
- }
- private void arrowUp(){
- icon.animate().rotation(-180).setDuration(300).start();
- }
-
- private void iconChange() {
- icon.setVisibility(View.GONE);
- progressBar.setVisibility(View.VISIBLE);
- progressBar.startAnimation();
- }
-
- private void reset() {
- text.setText("下拉刷新");
- icon.setVisibility(View.VISIBLE);
- icon.setRotation(0);
- progressBar.setVisibility(View.GONE);
- progressBar.stopAnimation();
- }
-
-
-
-
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/GoRefreshLayout.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/GoRefreshLayout.java
deleted file mode 100644
index 838a5bf..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/GoRefreshLayout.java
+++ /dev/null
@@ -1,1130 +0,0 @@
-package com.GoRefesh_core;
-
-import android.animation.Animator;
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.support.annotation.AttrRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.LinearInterpolator;
-import android.widget.AbsListView;
-import android.widget.ListView;
-
-import static android.view.MotionEvent.ACTION_MOVE;
-import static android.view.MotionEvent.ACTION_UP;
-
-/**
- * Created by Administrator on 2017/9/23 0023.
- */
-
-public class GoRefreshLayout extends ViewGroup {
- //最大下拉高度
- private float mMaxHeight = 500;
- //header高度
- private float mHeaderHeight = 250;
- //footer高度
- private float mFooterHeight = 100;
- //刷新高度
- private float mRefreshHeight = 300;
- //手指拖动距离与下拉距离之比
- private float mDamping = 2f;
- //返回顶部时长
- private int duration_top = 300;
- //返回到刷新高度(头部高度)时长
- private int duration_backtoRefreshHeight = 200;
- //底部弹出时长
- private int duration_footerVisiable = 200;
- //底部隐藏时长
- private int duration_footerHidden = 200;
- //自动刷新弹出时间
- private int duration_autotoRefreshHeight = 1000;
- //当前状态
- private int mStatus = 0;
- //正常状态
- private int STATUS_NORMAL = 0;
- //下拉状态
- private int STATUS_PULL = 1;
- //就绪状态
- private int STATUS_READY = 2;
- //刷新状态
- private int STATUS_REFRESH = 3;
- //返回状态
- private int STATUS_BACK = 4;
- //是否固定内容
- private boolean isFixedContent = false;
- //头部接口对象
- private IHeaderView mHeader;
- //底部接口对象
- private IFooterView mFooter;
- //头部view
- private View mHeaderView;
- //底部view
- private View mFooterView;
- //内容view
- private View mContentView;
-
- private RefreshListener refresrhListener;
-
- private LoadmoreListener loadmoreListener;
-
- private AbsListView.OnScrollListener mScrollListener;
- //是否在加载状态
- private boolean isLoadingMore;
- //是否显示hasHeader
- private boolean hasHeader = true;
- //是否显示footer
- private boolean hasFooter;
-
- //FOOTER是否在显示状态
- private boolean isFooterVisibility = false;
- //Y方向偏移量
- private float offsetY;
-
- private boolean hasY = false;
- private int mOrignY;
- private int mLastY;
- private float mCurrentLastY;
- private VelocityTracker velocityTracker;
- private float velocity;
- //内容固定状态下当前头部偏移
- private float fixOffset;
-
- private ValueAnimator valueAnimatorTotop;
- private ValueAnimator valueAnimatorToRefresh;
-
-
- private int mFooterStatus = 1;
- private int LOADING = 1; //加载状态
- private int FINISH = 2; //完成状态
- private int ERROR = 3; //错误状态
-
- private boolean isLoadingMore2;
-
- private Context context;
-
- public GoRefreshLayout(@NonNull Context context) {
- super(context);
- init(context, null);
- }
-
- public GoRefreshLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs);
- }
-
- public GoRefreshLayout(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init(context, attrs);
- }
-
- private void init(Context context, AttributeSet attrs) {
- this.context = context;
- TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.GoRefreshLayout);
- mMaxHeight = typedArray.getDimension(R.styleable.GoRefreshLayout_maxHeight, mMaxHeight);
- mRefreshHeight = typedArray.getDimension(R.styleable.GoRefreshLayout_refreshHeight, mRefreshHeight);
- mHeaderHeight = typedArray.getDimension(R.styleable.GoRefreshLayout_headerHeight, mHeaderHeight);
- mFooterHeight = typedArray.getDimension(R.styleable.GoRefreshLayout_footerHeight, mFooterHeight);
- isFixedContent = typedArray.getBoolean(R.styleable.GoRefreshLayout_isFixed, isFixedContent);
- mDamping = typedArray.getFloat(R.styleable.GoRefreshLayout_damping, mDamping);
- duration_backtoRefreshHeight = typedArray.getInt(R.styleable.GoRefreshLayout_duration_BacktorefreshHeight, duration_backtoRefreshHeight);
- duration_top = typedArray.getInt(R.styleable.GoRefreshLayout_duration_BacktoTop, duration_top);
- duration_footerVisiable = typedArray.getInt(R.styleable.GoRefreshLayout_duration_FooterVisibility, duration_footerVisiable);
- duration_footerHidden = typedArray.getInt(R.styleable.GoRefreshLayout_duration_FooterHidden, duration_footerHidden);
- duration_autotoRefreshHeight=typedArray.getInt(R.styleable.GoRefreshLayout_duration_autotoRefreshHeight, duration_autotoRefreshHeight);
- typedArray.recycle();
- mHeader = new DefaultHeaderLayout(context);
- mFooter = new DefaultFooterView(context);
- velocityTracker = VelocityTracker.obtain();
- }
-
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- mContentView = getChildAt(0);
-
- //监听view滑动到底部开启自动加载
- if (mContentView instanceof RecyclerView) {
- ((RecyclerView) mContentView).addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- }
-
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- if (hasFooter)
- showFooter(ScrollingUtil.isViewToBottom(mContentView));
- }
- });
- } else if (mContentView instanceof AbsListView) {
- ((AbsListView) mContentView).setOnScrollListener(new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView absListView, int i) {
- if (mScrollListener != null) {
- mScrollListener.onScrollStateChanged(absListView, i);
- }
- }
-
- @Override
- public void onScroll(AbsListView absListView, int i, int i1, int i2) {
- if (mScrollListener != null) {
- mScrollListener.onScroll(absListView, i, i1, i2);
- }
- if (hasFooter)
- showFooterwithListView(absListView, ScrollingUtil.isViewToBottom(mContentView));
- }
- });
- }
-
- addHeaderView(mHeader);
- }
-
-
- private void addHeaderView(IHeaderView view) {
- mHeaderView = view.getView();
- LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, (int) mHeaderHeight);
- mHeaderView.setLayoutParams(params);
- addView(mHeaderView);
- }
-
-
- private void addFooterView(IFooterView view, int flag) {
- if (flag == LOADING) {
- mFooterView = view.getLoadingView();
- } else if (flag == FINISH) {
- mFooterView = view.getFinishView();
- } else if (flag == ERROR) {
- mFooterView = view.getFailureView();
- }
- if (mContentView instanceof AbsListView) {
- AbsListView.LayoutParams params = new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, (int) mFooterHeight);
- mFooterView.setLayoutParams(params);
- ((ListView) mContentView).addFooterView(mFooterView);
- } else {
- LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, (int) mFooterHeight);
- mFooterView.setLayoutParams(params);
- addView(mFooterView);
- }
- }
-
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int widthMode = MeasureSpec.getMode(widthMeasureSpec);
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- int heightSize = MeasureSpec.getSize(heightMeasureSpec);
- for (int i = 0; i < getChildCount(); i++) {
- View child = getChildAt(i);
- measureChild(child, widthMeasureSpec, heightMeasureSpec);
- }
- int widthResult = widthSize;
- int heightResult = heightSize;
- if (widthMode == MeasureSpec.AT_MOST) {
- widthResult = mContentView.getMeasuredWidth();
- }
- if (heightMode == MeasureSpec.AT_MOST) {
- heightResult = mContentView.getMeasuredHeight();
- }
- setMeasuredDimension(widthResult, heightResult);
- }
-
-
- @Override
- protected void onLayout(boolean b, int i0, int i1, int i2, int i3) {
- for (int i = 0; i < getChildCount(); i++) {
- View child = getChildAt(i);
- if (child == mHeaderView) {
- mHeaderHeight = child.getMeasuredHeight();
- if (isFixedContent) {
- child.layout(0, (int) (-child.getMeasuredHeight() + fixOffset), child.getMeasuredWidth(), (int) fixOffset);
- } else {
- child.layout(0, -child.getMeasuredHeight(), child.getMeasuredWidth(), 0);
- }
- } else if (child == mFooterView) {
- child.layout(0, getHeight(), child.getMeasuredWidth(), getHeight() + child.getMeasuredHeight());
- } else {
- child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight());
- }
- }
- }
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- velocityTracker.addMovement(ev);
- velocityTracker.computeCurrentVelocity(100);
-
- switch (ev.getActionMasked()) {
- case MotionEvent.ACTION_DOWN:
- break;
- case MotionEvent.ACTION_MOVE:
- velocity = velocityTracker.getYVelocity();
- if (isLoadingMore2) {
- if (velocity < 50)
- return true;
- }
- if (isFooterVisibility) {
- if (velocity > 10) {
- finishLoadmoremanual();
- return true;
- } else {
- return true;
- }
- }
- break;
-
- }
-
- return super.dispatchTouchEvent(ev);
- }
-
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent event) {
-
- int y = (int) event.getY();
- switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN:
- mLastY = 0;
- mOrignY = y;
- //有偏移时再次按下 ,计算得到mCurrentLastY
- if ((getScrollY() < 0) && mStatus != STATUS_BACK) {
- hasY = true;
- cancelscrollToTop();
- mCurrentLastY = calculateDistance(-getScrollY());
- //刷新时点击事件不拦截
- if (mStatus == STATUS_REFRESH) {
- return false;
- }
- return true;
- } else {
- hasY = false;
- }
- break;
- case ACTION_MOVE:
- int dy = y - mLastY;
- Log.d("onInterceptTouchEvent", "onInterceptTouchEvent==" + 0);
- // 内容固定时刷新状态不拦截滑动
- // 下拉拦截滑动事件
- // 刷新时Y方向有偏移时上拉拦截滑动事件
- // Y方向无偏移时上拉不拦截滑动事件
- // Math.abs(velocity)>1是由于 在手机上点击操作ACTION_DOWN会伴随无意义的ACTION_MOVE的出现 但不会有滑动速度,不拦截
- if (isFixedContent && mStatus == STATUS_REFRESH) {
- return false;
- } else if (!canScrollUp() && dy > 0 && mStatus != STATUS_BACK && Math.abs(velocity) > 1) {
- return true;
- } else if (dy < 0 && getScrollY() >= 0) {
- return false;
- } else if (mStatus == STATUS_REFRESH && dy < 0) {
- return true;
- }
- break;
- }
- mLastY = y;
- return super.onInterceptTouchEvent(event);
- }
-
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int y = (int) event.getY();
- if (Math.abs(getScrollY()) > mMaxHeight || !hasHeader) {
- return true;
- }
- switch (event.getActionMasked()) {
-
- case MotionEvent.ACTION_DOWN:
- //正在刷新或者加载中时屏蔽对header和footer的点击事件
- if (mStatus == STATUS_REFRESH || isFooterVisibility) {
- return false;
- }
- mOrignY = y;
- break;
- case ACTION_MOVE:
-// int dy = y - mLastY;
- //刷新时上拉
-// if(dy<0&&mStatus == STATUS_REFRESH&&getScrollY()<=0){
-// // TODO: 2017/10/2 0002
-// scrollBy(0, -dy);
-// }
- float distanceY;
- if (hasY) {
- distanceY = y - mOrignY + mCurrentLastY;
- } else {
- //ACTION_DOWN失去
- if (mOrignY == -1) {
- mOrignY = y;
- }
- distanceY = y - mOrignY;
- }
- offsetY = calculateOffsetY(distanceY);
- if (offsetY < 0) {
- offsetY = 0;
- }
- if (isFixedContent) {
- mHeaderView.layout(0, (int) (offsetY - mHeaderView.getMeasuredHeight()), mHeaderView.getMeasuredWidth(), (int) offsetY);
- fixOffset = offsetY;
- } else {
- scrollTo(0, -(int) offsetY);
- }
- if (mStatus != STATUS_REFRESH && mStatus != STATUS_BACK) {
- if (offsetY < mRefreshHeight) {
- if (mStatus == STATUS_READY) {
- //上拉经过临界点
- mHeader.onChange(false);
- }
- mStatus = STATUS_PULL;
- mHeader.onPull(offsetY / mRefreshHeight);
- } else {
- if (mStatus == STATUS_PULL) {
- //下拉经过临界点
- mHeader.onChange(true);
- }
- mStatus = STATUS_READY;
- mHeader.onReady();
- }
- }
-
- break;
- case ACTION_UP:
- //松开时如果在刷新状态,下拉时返回偏移高度
- if (mStatus == STATUS_REFRESH) {
- if (offsetY > mHeaderHeight) {
- startRefresh((int) offsetY, duration_backtoRefreshHeight);
- }
- }
- //松开时如果在就绪状态,开启刷新
- else if (mStatus == STATUS_READY) {
- mStatus = STATUS_REFRESH;
- startRefresh((int) offsetY, duration_backtoRefreshHeight);
- mHeader.onRefresh();
- if (refresrhListener != null) {
- refresrhListener.onRefresh();
- }
- // postDelayed(runnable, 4000);
- } else if (mStatus == STATUS_BACK) {
- break;
- }
- //否则回到顶部
- else {
- if (offsetY >= 0) {
- cancelscrollToTop();
- if (isFixedContent) {
- scrollToTop((int) offsetY);
- } else {
- scrollToTop(-getScrollY());
- }
- } else {
- scrollToTop(0);
- }
- }
- break;
- default:
- break;
- }
- // mLastY = y;
-
- return true;
- }
-
-
- /**
- * 判断是否内容在顶部,可以下拉
- *
- * @return
- */
- private boolean canScrollUp() {
- return getChildAt(0).canScrollVertically(-1);
- }
-
- /**
- * 计算Y方向偏移
- * 当前百分比计算方式 decelerateInterpolator 公式:(1 - (1- x) * (1 - x))
- *
- * @param distanceY
- * @return
- */
- public float calculateOffsetY(float distanceY) {
- float percent = distanceY / mMaxHeight / mDamping > 1 ? 1 : distanceY / mMaxHeight / mDamping;
- return (1 - (1 - percent) * (1 - percent)) * mMaxHeight;
- }
-
- /**
- * 计算Y方向滑动距离
- * 通过公式:(1 - (1- x) * (1 - x)) *mMaxHeight=offsetY 推算x的值
- * 通过x=distanceY / mMaxHeight/mDamping 推算distanceY
- *
- * @param offsetY
- * @return
- */
- public float calculateDistance(int offsetY) {
- return (float) (1 - Math.sqrt(1 - offsetY / mMaxHeight)) * mDamping * mMaxHeight;
- }
-
- /**
- * 从下拉位置回弹至刷新位置
- *
- * @param offsetY
- */
- private void startRefresh(final int offsetY, int duration) {
- if (valueAnimatorToRefresh != null && valueAnimatorToRefresh.isRunning()) {
- valueAnimatorToRefresh.cancel();
- }
- valueAnimatorToRefresh = ValueAnimator.ofInt(offsetY, (int) mHeaderHeight);
- valueAnimatorToRefresh.setDuration(duration);
- valueAnimatorToRefresh.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- int value = (int) valueAnimator.getAnimatedValue();
- Log.d("tag",value+"");
- if (isFixedContent) {
- mHeaderView.layout(0, value - mHeaderView.getMeasuredHeight(), mHeaderView.getMeasuredWidth(), value);
- fixOffset = value;
- } else {
- scrollTo(0, -value);
- }
- }
- });
- valueAnimatorToRefresh.start();
- }
-
- /**
- * 刷新完成返回顶部
- *
- * @param offset
- */
- private void finishRefresh(int offset) {
- mStatus = STATUS_BACK;
- mHeader.onRefreshFinish();
- scrollToTop(offset);
- }
-
- /**
- * 任意位置返回至顶部
- *
- * @param offset
- */
- private void scrollToTop(int offset) {
- valueAnimatorTotop = ValueAnimator.ofInt(offset, 0);
- valueAnimatorTotop.setDuration(duration_top);
- valueAnimatorTotop.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- int value = (int) valueAnimator.getAnimatedValue();
-// if (value == 0) {
-// finishToTop();
-// }
- if (isFixedContent) {
- mHeaderView.layout(0, value - mHeaderView.getMeasuredHeight(), mHeaderView.getMeasuredWidth(), value);
- fixOffset = value;
- } else {
- scrollTo(0, -value);
- }
- }
- });
- valueAnimatorTotop.addListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animator) {
- }
-
- @Override
- public void onAnimationEnd(Animator animator) {
- finishToTop();
- }
-
- @Override
- public void onAnimationCancel(Animator animator) {
- }
-
- @Override
- public void onAnimationRepeat(Animator animator) {
- }
-
- });
- valueAnimatorTotop.start();
- }
-
- /**
- * 取消返回顶部
- */
- private void cancelscrollToTop() {
- if (valueAnimatorTotop != null && valueAnimatorTotop.isRunning()) {
- valueAnimatorTotop.cancel();
- }
- }
-
- /**
- * 返回顶部后调用
- */
- private void finishToTop() {
- mStatus = STATUS_NORMAL;
- mHeader.onBackFinish();
- reset();
- }
-
- //--------------------------------------------------------------------------------
- //------------------------------footer相关--------------------------------------
- //--------------------------------------------------------------------------------
-
- private void showFooter(boolean isBottom) {
- if (isBottom && !isFooterVisibility && velocity <= 0) {
- showFooter();
- if (!isLoadingMore) {
- isLoadingMore = true;
- if (loadmoreListener != null) {
- loadmoreListener.onLoadmore();
- }
- }
- isFooterVisibility = true;
-
- }
- }
-
- private void showFooterwithListView(AbsListView absListView, boolean viewToBottom) {
- if (viewToBottom) {
- if (loadmoreListener != null) {
- if (!isLoadingMore) {
- loadmoreListener.onLoadmore();
- isLoadingMore = true;
- }
- }
- }
-
- }
-
- /**
- * 显示footerview
- */
- private void showFooter() {
- ValueAnimator valueAnimator = ValueAnimator.ofInt(0, (int) mFooterHeight);
- valueAnimator.setDuration(duration_footerVisiable);
- valueAnimator.setInterpolator(new LinearInterpolator());
- valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- int value = (int) valueAnimator.getAnimatedValue();
- scrollTo(0, value);
- }
- });
- valueAnimator.start();
- }
-
- /**
- * 隐藏footerview
- */
- private void hideFooter() {
- if (duration_footerHidden <= 0) {
- if (mContentView instanceof RecyclerView) {
- mContentView.post(new Runnable() {
- @Override
- public void run() {
- scrollTo(0, 0);
- mContentView.scrollBy(0, (int) mFooterHeight);
- }
- });
- } else if (mContentView instanceof AbsListView) {
- mContentView.post(new Runnable() {
- @Override
- public void run() {
- scrollTo(0, 0);
- ((AbsListView) mContentView).smoothScrollBy((int) mFooterHeight, 0);
- }
- });
- }
- } else {
- ValueAnimator valueAnimator = ValueAnimator.ofInt((int) mFooterHeight, 0);
- valueAnimator.setDuration(duration_footerHidden);
- valueAnimator.setInterpolator(new LinearInterpolator());
- valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator valueAnimator) {
- final int value = (int) valueAnimator.getAnimatedValue();
- final int dy = currentValue - value;
- if (value == 0) {
- isLoadingMore2 = false;
- }
- if (dy > 0) {
- if (mContentView instanceof RecyclerView) {
- mContentView.post(new Runnable() {
- @Override
- public void run() {
- scrollTo(0, value);
- mContentView.scrollBy(0, dy);
- }
- });
- } else if (mContentView instanceof AbsListView) {
- mContentView.post(new Runnable() {
- @Override
- public void run() {
- scrollTo(0, value);
- ((AbsListView) mContentView).smoothScrollBy(dy, 0);
- }
- });
- }
- }
-
- updateCurrentFooterHeight(valueAnimator);
- }
- });
- valueAnimator.start();
- }
- }
-
- private int currentValue;
-
- private void updateCurrentFooterHeight(ValueAnimator valueAnimator) {
- currentValue = (int) valueAnimator.getAnimatedValue();
- }
-
- private void reset() {
- hasY = false;
- mOrignY = -1;
- mCurrentLastY = 0;
- }
-
-
- private void removeHeaderView() {
- if (mHeaderView != null) {
- removeView(mHeaderView);
- }
- }
-
- private void removeFooterView() {
- if (mFooterView != null) {
- if (mContentView instanceof AbsListView) {
- ((ListView) mContentView).removeFooterView(mFooterView);
- } else {
- removeView(mFooterView);
- }
- }
- }
-
- /**
- * 切换footerview
- *
- * @param flag
- */
- private void switchFooterView(int flag) {
- if (valid(flag)) {
- mFooterStatus = flag;
- removeFooterView();
- addFooterView(mFooter, flag);
- }
- }
-
- private boolean valid(int flag) {
- if (mFooter != null) {
- if (flag == LOADING) {
- if (mFooter.getLoadingView() != null) {
- return true;
- }
- } else if (flag == FINISH) {
- if (mFooter.getFinishView() != null) {
- return true;
- }
-
- } else if (flag == ERROR) {
- if (mFooter.getFailureView() != null) {
- return true;
- }
- }
- }
- return false;
- }
-
- //--------------------------------------------------------------------------------
- //------------------------------对外提供api--------------------------------------
- //--------------------------------------------------------------------------------
-
- /**
- * 设置header
- */
- public void setHeaderView(IHeaderView view) {
- removeHeaderView();
- mHeader = view;
- addHeaderView(view);
- }
-
- /**
- * 设置footer
- */
- public void setFooterView(IFooterView view) {
- if (hasFooter) {
- mFooter = view;
- removeFooterView();
- addFooterView(view, LOADING);
- }
- }
-
-
- /**
- * 设置是否显示footer
- *
- * @param hasFooter
- */
- public void setHasFooter(boolean hasFooter) {
- this.hasFooter = hasFooter;
- if (hasFooter) {
- if (mFooterView == null) {
- setFooterView(mFooter);
- }
- } else {
- removeFooterView();
- }
- }
-
- /**
- * 设置是否显示header
- */
- public void setHasHeader(boolean hasHeader) {
- this.hasHeader = hasHeader;
- if (hasHeader) {
- setHeaderView(mHeader);
- } else {
- removeHeaderView();
- }
- }
-
- public boolean isHasFooter() {
- return hasFooter;
- }
-
- /**
- * 设置下拉刷新事件监听
- *
- * @param listener
- */
- public void setOnRefreshListener(RefreshListener listener) {
- this.refresrhListener = listener;
- }
-
- /**
- * 设置上拉加载事件监听
- *
- * @param listener
- */
- public void setOnLoadmoreListener(LoadmoreListener listener) {
- this.loadmoreListener = listener;
- }
-
-
- /**
- * 设置listview的滚动监听
- */
- public void setScrollListener(AbsListView.OnScrollListener mScrollListener) {
- this.mScrollListener = mScrollListener;
- }
-
- /**
- * 自动下拉刷新
- */
- public void startRefresh() {
- post(new Runnable() {
- @Override
- public void run() {
- startRefresh((int) offsetY, duration_autotoRefreshHeight);
- mHeader.onRefresh();
- mStatus = STATUS_REFRESH;
- if (refresrhListener != null)
- refresrhListener.onRefresh();
- }
- });
-
- }
-
- /**
- * 结束刷新,刷新完成调用
- */
- public void finishRefresh() {
- if (isFixedContent) {
- if (mStatus == STATUS_REFRESH)
- finishRefresh((int) mHeaderHeight);
-
- } else {
- finishRefresh(-getScrollY());
- }
- }
-
- /**
- * 隐藏footerview,手动下拉时调用
- */
- private void finishLoadmoremanual() {
- if (isFooterVisibility) {
- isLoadingMore2 = true;
- isFooterVisibility = false;
- hideFooter();
- }
- }
-
- /**
- * 隐藏footerview,加载数据完毕时调用
- */
- public void finishLoadmore() {
- isLoadingMore = false;
- if (isFooterVisibility) {
- isFooterVisibility = false;
- hideFooter();
- }
- }
-
- /**
- * 加载数据完毕没有更多数据时调用
- */
- public void finishLoadmoreWithNoData() {
- switchFooterView(FINISH);
- }
-
- /**
- * 加载数据出错时调用
- */
- public void finishLoadmoreWithError() {
- switchFooterView(ERROR);
- if (mFooter.getRetryView() != null) {
- mFooter.getRetryView().setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (loadmoreListener != null) {
- if (mContentView instanceof AbsListView) {
- switchFooterView(LOADING);
- ((ListView) mContentView).setSelection(((ListView) mContentView).getAdapter().getCount() - 1);
- loadmoreListener.onLoadmore();
- return;
- }
- switchFooterView(LOADING);
- loadmoreListener.onLoadmore();
- }
- }
- });
- }
- }
-
- /**
- * 设置是否内容不随头部下拉
- *
- * @param fixedContent
- */
- public void setFixedContent(boolean fixedContent) {
- isFixedContent = fixedContent;
- }
-
- public boolean isFixedContent() {
- return isFixedContent;
- }
-
- public float getMaxHeight() {
- return mMaxHeight;
- }
-
- /**
- * 设置下拉最大高度
- */
- public void setMaxHeight(float mMaxHeight) {
- this.mMaxHeight = mMaxHeight;
- }
-
- public float getHeaderHeight() {
- return mHeaderHeight;
- }
-
- /**
- * 设置header高度
- */
- public void setHeaderHeight(float mHeaderHeight) {
- this.mHeaderHeight = mHeaderHeight;
- }
-
- public float getFooterHeight() {
- return mFooterHeight;
- }
-
- /**
- * 设置footer高度
- */
- public void setFooterHeight(float mFooterHeight) {
- this.mFooterHeight = mFooterHeight;
- }
-
- public float getRefreshHeight() {
- return mRefreshHeight;
- }
-
- /**
- * 设置刷新高度
- */
- public void setRefreshHeight(float mRefreshHeight) {
- this.mRefreshHeight = mRefreshHeight;
- }
-
- public float getDamping() {
- return mDamping;
- }
-
- /**
- * 设置阻尼数值
- */
- public void setDamping(float mDamping) {
- this.mDamping = mDamping;
- }
-
- public int getDurationtoTop() {
- return duration_top;
- }
-
- /**
- * 设置下拉回弹时间
- */
- public void setDurationtoTop(int duration_top) {
- this.duration_top = duration_top;
- }
-
-
- /**
- * 设置下拉回弹至刷新高度时间
- */
- public void setDurationtoRefreshHeight(int duration_refreshHeight) {
- this.duration_backtoRefreshHeight = duration_refreshHeight;
- }
-
- public int getDurationtoRefreshHeight() {
- return duration_backtoRefreshHeight;
- }
-
- public int getDuration_autotoRefreshHeight() {
- return duration_autotoRefreshHeight;
- }
-
- /**
- * 设置自动弹出时间
- */
- public void setDuration_autotoRefreshHeight(int duration_autotoRefreshHeight) {
- this.duration_autotoRefreshHeight = duration_autotoRefreshHeight;
- }
-
- /**
- * 设置footerview弹出时长
- */
- public void setDurationFooterVisiable(int duration_footer) {
- this.duration_footerVisiable = duration_footer;
- }
-
- public int getDurationFooterVisiable() {
- return duration_footerVisiable;
- }
-
- /**
- * 设置footerview返回底部时间
- */
- public int getDurationFooterHidden() {
- return duration_footerHidden;
- }
-
- public void setDurationFooterHidden(int duration_footerHidden) {
- this.duration_footerHidden = duration_footerHidden;
- }
-
- /**
- * 获得fooerview状态
- *
- * @return
- */
- public int getFooterStatus() {
- return mFooterStatus;
- }
-
- /**
- * 获得默认footerview
- *
- * @return
- */
- public DefaultFooterView getDefaultFooterView() {
- if (mFooter instanceof DefaultFooterView) {
- return (DefaultFooterView) mFooter;
- } else {
- return new DefaultFooterView(context);
- }
-
- }
-
- /**
- * 设置加载状态的footerview
- *
- * @param layoutID
- */
- public void setLoadingView(int layoutID) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setLoadingView(layoutID);
- setFooterView(mFooter);
- }
- }
-
- public void setLoadingView(View view) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setLoadingView(view);
- setFooterView(mFooter);
- }
- }
-
- /**
- * 设置完成状态的footerview
- *
- * @param layoutID
- */
- public void setFinishWithNodataView(int layoutID) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setFinishView(layoutID);
- setFooterView(mFooter);
- }
- }
-
- public void setFinishWithNodataView(View view) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setFinishView(view);
- setFooterView(mFooter);
- }
- }
-
- /**
- * 设置加载失败状态的footerview
- */
- public void setErrorView(int layoutID) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setErrorView(layoutID);
- setFooterView(mFooter);
- }
- }
-
- public void setErrorView(View errorView) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setErrorView(errorView);
- setFooterView(mFooter);
- }
- }
-
- /**
- * 设置加载失败状态的footerview ,同时添加触发重试的控件
- */
- public void setErrorViewWithRetry(int layoutID, int retryId) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setErrorView(layoutID, retryId);
- setFooterView(mFooter);
- }
- }
-
- public void setErrorViewWithRetry(View errorView, View retryView) {
- if (mFooter instanceof DefaultFooterView) {
- ((DefaultFooterView) mFooter).setErrorView(errorView, retryView);
- setFooterView(mFooter);
- }
- }
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/IFooterView.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/IFooterView.java
deleted file mode 100644
index 9a8c22d..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/IFooterView.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.GoRefesh_core;
-
-import android.view.View;
-
-/**
- * Created by Administrator on 2017/9/30 0030.
- */
-
-public interface IFooterView {
- View getLoadingView();
-
- View getFinishView();
-
- View getFailureView();
-
- View getRetryView();
-
-
-
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/IHeaderView.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/IHeaderView.java
deleted file mode 100644
index 36dc2bc..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/IHeaderView.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.GoRefesh_core;
-
-import android.view.View;
-
-/**
- * Created by Administrator on 2017/9/25 0025.
- */
-
-public interface IHeaderView {
- View getView();
-
- /**
- * 下拉过程中调用(持续触发)
- * @param a 根据下拉距离返回0-1之前的值
- */
- void onPull(float a);
- /**
- * 下拉通过临界值 处于就绪状态时调用(持续触发)
- */
- void onReady();
-
- /**
- * 经过临界值是调用(非持续触发)
- * @param isPull true表示下拉经过临界 false表示上拉经过临界
- */
- void onChange(boolean isPull);
-
- /**
- * 开始刷新时触发(非持续触发)
- */
- void onRefresh();
- /**
- * 刷新完成时触发(非持续触发)
- */
- void onRefreshFinish();
- /**
- * 刷新完成回到顶部时触发(非持续触发)
- */
- void onBackFinish();
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/LoadmoreListener.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/LoadmoreListener.java
deleted file mode 100644
index 9e4ef4b..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/LoadmoreListener.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.GoRefesh_core;
-
-/**
- * Created by Administrator on 2017/10/10 0010.
- */
-
-public interface LoadmoreListener {
- void onLoadmore();
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/RefreshListener.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/RefreshListener.java
deleted file mode 100644
index fb57f99..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/RefreshListener.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.GoRefesh_core;
-
-/**
- * Created by Administrator on 2017/10/29 0029.
- */
-
-public interface RefreshListener {
- void onRefresh();
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/RingProgressBar.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/RingProgressBar.java
deleted file mode 100644
index 8a6fae4..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/RingProgressBar.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package com.GoRefesh_core;
-
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.support.v4.view.animation.PathInterpolatorCompat;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.View;
-import android.view.animation.Interpolator;
-
-/**
- * Created by Administrator on 2016/9/28 0028.
- */
-public class RingProgressBar extends View {
-
- private final static int DEFAULT_BALL_COLOR = 0xFFFF9966;
- private final static int DEFAULT_RING_COLOR = 0xFFFF9966;
- private final static int DEFAULT_BALL_RADIUS = 4;
- private final static int DEFAULT_RING_RADIUS = 20;
- private final static int DEFAULT_RING_STOKEWIDTH = 1;
- private final static int DEFAULT_DURATION = 1300;
-
-
- private int mBallColor = DEFAULT_BALL_COLOR;
- private int mRingColor = DEFAULT_RING_COLOR;
- private float mBallRadius = dp2px(DEFAULT_BALL_RADIUS);
- private float mRingRadius = dp2px(DEFAULT_RING_RADIUS);
- private float mStokeWidth = dp2px(DEFAULT_RING_STOKEWIDTH);
- private int mDuration = DEFAULT_DURATION;
-
- private int mCurrentAngle;
- private ValueAnimator mAnimator;// 旋转动画
- private Paint mPaint;
- private Paint mPaint2;
- private Interpolator pathInterpolatorCompat;
-
- public RingProgressBar(Context context) {
- this(context, null);
- }
-
- public RingProgressBar(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public RingProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
-
- TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.RingProgressBar);
- mBallColor = typedArray.getColor(R.styleable.RingProgressBar_progress_ball_color, mBallColor);
- mRingColor = typedArray.getColor(R.styleable.RingProgressBar_progress_ring_color, mRingColor);
- mBallRadius = typedArray.getDimension(R.styleable.RingProgressBar_progress_ball_radius, mBallRadius);
- mRingRadius = typedArray.getDimension(R.styleable.RingProgressBar_progress_ring_radius, mRingRadius);
- mStokeWidth = typedArray.getDimension(R.styleable.RingProgressBar_progress_ring_stokewidth, mStokeWidth);
- mDuration = typedArray.getInteger(R.styleable.RingProgressBar_progress_duration, mDuration);
- typedArray.recycle();
-
- mPaint = new Paint();
- mPaint.setAntiAlias(true);
- mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
- mPaint.setColor(mBallColor);
- mPaint2 = new Paint();
- mPaint2.setAntiAlias(true);
- mPaint2.setColor(mRingColor);
- mPaint2.setStyle(Paint.Style.STROKE);
- mPaint2.setStrokeWidth(mStokeWidth);
- initAnimatior();
- }
-
-
- private void initAnimatior() {
- pathInterpolatorCompat = PathInterpolatorCompat.create(0.7f, 0f, 0.3f, 1f);
- mAnimator = ValueAnimator.ofInt(0, 359);
- mAnimator.setDuration(mDuration);
- mAnimator.setRepeatCount(-1);
- mAnimator.setInterpolator(pathInterpolatorCompat);
- mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- mCurrentAngle = (int) animation.getAnimatedValue();
-
- invalidate();
- }
- });
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-
- int height = measurehight(heightMeasureSpec);
- int width = measurewidth(widthMeasureSpec);
- setMeasuredDimension(width, height);
-
- }
-
- private int measurewidth(int widthMeasureSpec) {
- int size = MeasureSpec.getSize(widthMeasureSpec);
- int mode = MeasureSpec.getMode(widthMeasureSpec);
- int result = 0;
- if (mode == MeasureSpec.EXACTLY) {
- result = size;
- mRingRadius = result/2 - mBallRadius;
- } else {
- result = (int) (getPaddingLeft() + getPaddingRight() + mRingRadius * 2 + Math.max(mStokeWidth, mBallRadius * 2));
- if (mode == MeasureSpec.AT_MOST) {
- return Math.min(size, result);
- }
- }
- return result;
-
- }
-
- private int measurehight(int heightMeasureSpec) {
- int size = MeasureSpec.getSize(heightMeasureSpec);
- int mode = MeasureSpec.getMode(heightMeasureSpec);
- int result = 0;
- if (mode == MeasureSpec.EXACTLY) {
- result = size;
- mRingRadius = result/2 - mBallRadius;
- } else {
- result = (int) (getPaddingTop() + getPaddingBottom() + mRingRadius * 2 + Math.max(mStokeWidth, mBallRadius * 2));
- if (mode == MeasureSpec.AT_MOST) {
- return Math.min(size, result);
- }
- }
- return result;
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.drawCircle(getWidth() / 2, getWidth() / 2, mRingRadius, mPaint2);
- drawBall(canvas, mCurrentAngle * 2 * Math.PI / 360);
- }
-
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- startAnimation();
- }
-
- private void drawBall(Canvas canvas, double angle) {
- // 根据当前角度获取x、y坐标点
- float x = (float) (getWidth() / 2 + mRingRadius * Math.sin(angle));
- float y = (float) (getHeight() / 2 - mRingRadius * Math.cos(angle));
-
- // 绘制圆
- canvas.drawCircle(x, y, mBallRadius, mPaint);
- }
-
-
- public void startAnimation() {
- mAnimator.start();
- }
-
- public void stopAnimation() {
- mAnimator.end();
- }
-
- //销毁页面时停止动画
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
- stopAnimation();
- }
-
- private int dp2px(int dpVal) {
- return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, getResources().getDisplayMetrics());
- }
-}
diff --git a/refreshlayout_core/src/main/java/com/GoRefesh_core/ScrollingUtil.java b/refreshlayout_core/src/main/java/com/GoRefesh_core/ScrollingUtil.java
deleted file mode 100644
index 1282deb..0000000
--- a/refreshlayout_core/src/main/java/com/GoRefesh_core/ScrollingUtil.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/**
- * Copyright 2015 bingoogolapple
- *
- * 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.GoRefesh_core;
-
-import android.graphics.Rect;
-import android.os.Build;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.StaggeredGridLayoutManager;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-import android.webkit.WebView;
-import android.widget.AbsListView;
-import android.widget.ScrollView;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-public class ScrollingUtil {
-
- private ScrollingUtil() {
- }
-
- /**
- * 用来判断是否可以下拉
- * 手指在屏幕上该方法才有效
- */
- public static boolean canChildScrollUp(View mChildView) {
- if (mChildView == null) {
- return false;
- }
- if (Build.VERSION.SDK_INT < 14) {
- if (mChildView instanceof AbsListView) {
- final AbsListView absListView = (AbsListView) mChildView;
- return absListView.getChildCount() > 0
- && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
- .getTop() < absListView.getPaddingTop());
- } else {
- return ViewCompat.canScrollVertically(mChildView, -1) || mChildView.getScrollY() > 0;
- }
- } else {
- return ViewCompat.canScrollVertically(mChildView, -1);
- }
- }
-
- /**
- * Whether it is possible for the child view of this layout to scroll down. Override this if the child view is a custom view.
- * 判断是否可以上拉
- */
- public static boolean canChildScrollDown(View mChildView) {
- if (Build.VERSION.SDK_INT < 14) {
- if (mChildView instanceof AbsListView) {
- final AbsListView absListView = (AbsListView) mChildView;
- return absListView.getChildCount() > 0
- && (absListView.getLastVisiblePosition() < absListView.getChildCount() - 1
- || absListView.getChildAt(absListView.getChildCount() - 1).getBottom() > absListView.getPaddingBottom());
- } else {
- return ViewCompat.canScrollVertically(mChildView, 1) || mChildView.getScrollY() < 0;
- }
- } else {
- return ViewCompat.canScrollVertically(mChildView, 1);
- }
- }
-
- public static boolean isScrollViewOrWebViewToTop(View view) {
- return view != null && view.getScrollY() == 0;
- }
-
- public static boolean isViewToTop(View view, int mTouchSlop) {
- if (view instanceof AbsListView) return isAbsListViewToTop((AbsListView) view);
- if (view instanceof RecyclerView) return isRecyclerViewToTop((RecyclerView) view);
- return (view != null && Math.abs(view.getScrollY()) <= 2 * mTouchSlop);
- }
-
- public static boolean isViewToBottom(View view) {
- if (view instanceof AbsListView) return isAbsListViewToBottom((AbsListView) view);
- if (view instanceof RecyclerView) return isRecyclerViewToBottom((RecyclerView) view);
-// if (view instanceof WebView) return isWebViewToBottom((WebView) view,mTouchSlop);
-// if (view instanceof ViewGroup) return isViewGroupToBottom((ViewGroup) view);
- return false;
- }
-
- public static boolean isAbsListViewToTop(AbsListView absListView) {
- if (absListView != null) {
- int firstChildTop = 0;
- if (absListView.getChildCount() > 0) {
- // 如果AdapterView的子控件数量不为0,获取第一个子控件的top
- firstChildTop = absListView.getChildAt(0).getTop() - absListView.getPaddingTop();
- }
- if (absListView.getFirstVisiblePosition() == 0 && firstChildTop == 0) {
- return true;
- }
- }
- return false;
- }
-
- public static boolean isRecyclerViewToTop(RecyclerView recyclerView) {
- if (recyclerView != null) {
- RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
- if (manager == null) {
- return true;
- }
- if (manager.getItemCount() == 0) {
- return true;
- }
-
- if (manager instanceof LinearLayoutManager) {
- LinearLayoutManager layoutManager = (LinearLayoutManager) manager;
-
- int firstChildTop = 0;
- if (recyclerView.getChildCount() > 0) {
- // 处理item高度超过一屏幕时的情况
- View firstVisibleChild = recyclerView.getChildAt(0);
- if (firstVisibleChild != null && firstVisibleChild.getMeasuredHeight() >= recyclerView.getMeasuredHeight()) {
- if (Build.VERSION.SDK_INT < 14) {
- return !(ViewCompat.canScrollVertically(recyclerView, -1) || recyclerView.getScrollY() > 0);
- } else {
- return !ViewCompat.canScrollVertically(recyclerView, -1);
- }
- }
-
- // 如果RecyclerView的子控件数量不为0,获取第一个子控件的top
-
- // 解决item的topMargin不为0时不能触发下拉刷新
- View firstChild = recyclerView.getChildAt(0);
- RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) firstChild.getLayoutParams();
- firstChildTop = firstChild.getTop() - layoutParams.topMargin - getRecyclerViewItemTopInset(layoutParams) - recyclerView.getPaddingTop();
- }
-
- if (layoutManager.findFirstCompletelyVisibleItemPosition() < 1 && firstChildTop == 0) {
- return true;
- }
- } else if (manager instanceof StaggeredGridLayoutManager) {
- StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) manager;
-
- int[] out = layoutManager.findFirstCompletelyVisibleItemPositions(null);
- if (out[0] < 1) {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * 通过反射获取RecyclerView的item的topInset
- *
- * @param layoutParams
- * @return
- */
- private static int getRecyclerViewItemTopInset(RecyclerView.LayoutParams layoutParams) {
- try {
- Field field = RecyclerView.LayoutParams.class.getDeclaredField("mDecorInsets");
- field.setAccessible(true);
- // 开发者自定义的滚动监听器
- Rect decorInsets = (Rect) field.get(layoutParams);
- return decorInsets.top;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
-
-
- public static boolean isWebViewToBottom(WebView webview, int mTouchSlop) {
- return webview != null && ((webview.getContentHeight() * webview.getScale() - (webview.getHeight() + webview.getScrollY())) <= 2 * mTouchSlop);
- }
-
- public static boolean isViewGroupToBottom(ViewGroup viewGroup) {
- View subChildView = viewGroup.getChildAt(0);
- return (subChildView != null && subChildView.getMeasuredHeight() <= viewGroup.getScrollY() + viewGroup.getHeight());
- }
-
- public static boolean isScrollViewToBottom(ScrollView scrollView) {
- if (scrollView != null) {
- int scrollContentHeight = scrollView.getScrollY() + scrollView.getMeasuredHeight() - scrollView.getPaddingTop() - scrollView.getPaddingBottom();
- int realContentHeight = scrollView.getChildAt(0).getMeasuredHeight();
- if (scrollContentHeight == realContentHeight) {
- return true;
- }
- }
- return false;
- }
-
- public static boolean isAbsListViewToBottom(AbsListView absListView) {
- if (absListView != null && absListView.getAdapter() != null && absListView.getChildCount() > 0 && absListView.getLastVisiblePosition() == absListView.getAdapter().getCount() - 1) {
- View lastChild = absListView.getChildAt(absListView.getChildCount() - 1);
-
- return lastChild.getBottom() >= absListView.getMeasuredHeight();
- //return true;
- }
- return false;
- }
-
- public static boolean isRecyclerViewToBottom(RecyclerView recyclerView) {
- if (recyclerView != null) {
- RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
- if (manager == null || manager.getItemCount() == 0) {
- return false;
- }
-
- if (manager instanceof LinearLayoutManager) {
- // 处理item高度超过一屏幕时的情况
- View lastVisibleChild = recyclerView.getChildAt(recyclerView.getChildCount() - 1);
- if (lastVisibleChild != null && lastVisibleChild.getMeasuredHeight() >= recyclerView.getMeasuredHeight()) {
- if (Build.VERSION.SDK_INT < 14) {
- return !(ViewCompat.canScrollVertically(recyclerView, 1) || recyclerView.getScrollY() < 0);
- } else {
- Log.d("onInterceptTouchEvent", "ViewCompat=" + !ViewCompat.canScrollVertically(recyclerView, 1));
- return !ViewCompat.canScrollVertically(recyclerView, 1);
- }
- }
-
- LinearLayoutManager layoutManager = (LinearLayoutManager) manager;
- if (layoutManager.findLastCompletelyVisibleItemPosition() == layoutManager.getItemCount() - 1) {
- return true;
- }
-
- } else if (manager instanceof StaggeredGridLayoutManager) {
- StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) manager;
-
- int[] out = layoutManager.findLastCompletelyVisibleItemPositions(null);
- int lastPosition = layoutManager.getItemCount() - 1;
- for (int position : out) {
- if (position == lastPosition) {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- public static void scrollAViewBy(View view, int height) {
- if (view instanceof RecyclerView) ((RecyclerView) view).scrollBy(0, height);
- else if (view instanceof ScrollView) ((ScrollView) view).smoothScrollBy(0, height);
- else if (view instanceof AbsListView) ((AbsListView) view).smoothScrollBy(height, 0);
- else {
- try {
- Method method = view.getClass().getDeclaredMethod("smoothScrollBy", Integer.class, Integer.class);
- method.invoke(view, 0, height);
- } catch (Exception e) {
- view.scrollBy(0, height);
- }
- }
- }
-
-
- public static void scrollToBottom(final ScrollView scrollView) {
- if (scrollView != null) {
- scrollView.post(new Runnable() {
- @Override
- public void run() {
- scrollView.fullScroll(ScrollView.FOCUS_DOWN);
- }
- });
- }
- }
-
- public static void scrollToBottom(final AbsListView absListView) {
- if (absListView != null) {
- if (absListView.getAdapter() != null && absListView.getAdapter().getCount() > 0) {
- absListView.post(new Runnable() {
- @Override
- public void run() {
- absListView.setSelection(absListView.getAdapter().getCount() - 1);
- }
- });
- }
- }
- }
-
- public static void scrollToBottom(final RecyclerView recyclerView) {
- if (recyclerView != null) {
- if (recyclerView.getAdapter() != null && recyclerView.getAdapter().getItemCount() > 0) {
- recyclerView.post(new Runnable() {
- @Override
- public void run() {
- recyclerView.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
- }
- });
- }
- }
- }
-
- public static void scrollToBottom(View view) {
- if (view instanceof RecyclerView) scrollToBottom((RecyclerView) view);
- if (view instanceof AbsListView) scrollToBottom((AbsListView) view);
- if (view instanceof ScrollView) scrollToBottom((ScrollView) view);
- }
-
-
-}
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/drawable-xhdpi/arrow.png b/refreshlayout_core/src/main/res/drawable-xhdpi/arrow.png
deleted file mode 100644
index 3ff84aae9078519ed5924088e35020436ab6b342..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1223
zcmbu9e^8PK7{?!8UVccV)LfN>Zav#m)R)77kr`!hRI4+fQYWS#kLCYI$^%hDg8^)Qk^
z%C*-sHX*vP)kMIisc3fMfG;)17TbC
z;hMaTlRexJ5FA-D&+@ijKPo(R_hJSk5*?3-j3M{u_aO@JJ;fzp8h$6nCMGZaz5`St
zh+qA|dp9rTsVclHTiKgn^o}RY4iH?F21_jYkndU-oX(&3>oj_7fDMp>og=h^9lQuN
zA#7u@EB+UvkiHg@hIE{Lnj6~dQ^sR%A)7zM$RbDne8VrkhXkTPu=jNNtYZ+Pks376
z;j^W8eI&~XrC4bfMuOd>EsTqFjLanJ$z(AeT=q8-oX|{dyy2lF{}b&QsK8bgpWj_5
zT-viTZGoyM{TnwizDv{HFmAC}3P;-28y{G{XtoNUB;ARBzu0eOTdXIi>1d9HFgRkK
z&8_^~8%QnO1vD
ziQ>KnwJTo3Fy&CJ&judVDnc#Y{rZB@>tCh!H#aO=kt^;QPS)l*7w#W2sKbdbeXOyJ
ztEslnp}NK0S^k*i*%)DK1QS#LP&a9s8*ZU(V|0eu1(x!widdAhVc%QF>7nJtvi`wW
z$WRpVgE(j=EVQ&deDVS~q
zDZ?N`L&%ihAn`4&=Yhy2Tb4z@xx4BG8+$QMd@)?24uTQ8DAx
X@tdK{)+2dm{~*ANiivEF5J~?4Gi3d2
diff --git a/refreshlayout_core/src/main/res/layout/footer_error.xml b/refreshlayout_core/src/main/res/layout/footer_error.xml
deleted file mode 100644
index 8b67f2c..0000000
--- a/refreshlayout_core/src/main/res/layout/footer_error.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/layout/footer_finish.xml b/refreshlayout_core/src/main/res/layout/footer_finish.xml
deleted file mode 100644
index 31bde0b..0000000
--- a/refreshlayout_core/src/main/res/layout/footer_finish.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/layout/footer_loading.xml b/refreshlayout_core/src/main/res/layout/footer_loading.xml
deleted file mode 100644
index 279aef4..0000000
--- a/refreshlayout_core/src/main/res/layout/footer_loading.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/layout/headerview.xml b/refreshlayout_core/src/main/res/layout/headerview.xml
deleted file mode 100644
index 47472f2..0000000
--- a/refreshlayout_core/src/main/res/layout/headerview.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/values/attr.xml b/refreshlayout_core/src/main/res/values/attr.xml
deleted file mode 100644
index b76468c..0000000
--- a/refreshlayout_core/src/main/res/values/attr.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/refreshlayout_core/src/main/res/values/strings.xml b/refreshlayout_core/src/main/res/values/strings.xml
deleted file mode 100644
index f6ed911..0000000
--- a/refreshlayout_core/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- GoRefesh_core
- 正在加载中
-
diff --git a/refreshlayout_core/.gitignore b/refreshlayout_lottie/.gitignore
similarity index 100%
rename from refreshlayout_core/.gitignore
rename to refreshlayout_lottie/.gitignore
diff --git a/refreshlayout_core/build.gradle b/refreshlayout_lottie/build.gradle
similarity index 79%
rename from refreshlayout_core/build.gradle
rename to refreshlayout_lottie/build.gradle
index 6641825..63c1795 100644
--- a/refreshlayout_core/build.gradle
+++ b/refreshlayout_lottie/build.gradle
@@ -3,12 +3,12 @@ apply plugin: 'com.github.dcendents.android-maven'
group='com.github.yanyiqun001'
android {
- compileSdkVersion 26
- buildToolsVersion "26.0.2"
+ compileSdkVersion 25
+ buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
- targetSdkVersion 26
+ targetSdkVersion 25
versionCode 1
versionName "1.0"
@@ -28,7 +28,7 @@ dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.android.support:recyclerview-v7:26.1.0'
testCompile 'junit:junit:4.12'
+ compile 'com.airbnb.android:lottie:2.2.0'
+ provided project(':refreshlayout')
}
diff --git a/refreshlayout_core/proguard-rules.pro b/refreshlayout_lottie/proguard-rules.pro
similarity index 100%
rename from refreshlayout_core/proguard-rules.pro
rename to refreshlayout_lottie/proguard-rules.pro
diff --git a/refreshlayout_core/src/androidTest/java/com/GoRefesh_core/ExampleInstrumentedTest.java b/refreshlayout_lottie/src/androidTest/java/com/GoRefesh_core/ExampleInstrumentedTest.java
similarity index 100%
rename from refreshlayout_core/src/androidTest/java/com/GoRefesh_core/ExampleInstrumentedTest.java
rename to refreshlayout_lottie/src/androidTest/java/com/GoRefesh_core/ExampleInstrumentedTest.java
diff --git a/refreshlayout_core/src/main/AndroidManifest.xml b/refreshlayout_lottie/src/main/AndroidManifest.xml
similarity index 100%
rename from refreshlayout_core/src/main/AndroidManifest.xml
rename to refreshlayout_lottie/src/main/AndroidManifest.xml
diff --git a/refreshlayout/src/main/java/com/GoRefresh/LottieView.java b/refreshlayout_lottie/src/main/java/com/GoRefesh_core/LottieView.java
similarity index 95%
rename from refreshlayout/src/main/java/com/GoRefresh/LottieView.java
rename to refreshlayout_lottie/src/main/java/com/GoRefesh_core/LottieView.java
index 144ecc6..d206379 100644
--- a/refreshlayout/src/main/java/com/GoRefresh/LottieView.java
+++ b/refreshlayout_lottie/src/main/java/com/GoRefesh_core/LottieView.java
@@ -1,10 +1,11 @@
-package com.GoRefresh;
+package com.GoRefesh_core;
import android.animation.ValueAnimator;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
+import com.GoRefresh.IHeaderView;
import com.airbnb.lottie.LottieAnimationView;
/**
@@ -29,7 +30,7 @@ public LottieView(Context context, int layoutId, int lottieViewId) {
private void initView(Context context, int layoutId, int lottieViewId) {
view = LayoutInflater.from(context).inflate(layoutId, null);
- animationView = view.findViewById(lottieViewId);
+ animationView = (LottieAnimationView) view.findViewById(lottieViewId);
}
diff --git a/refreshlayout_lottie/src/main/res/values/strings.xml b/refreshlayout_lottie/src/main/res/values/strings.xml
new file mode 100644
index 0000000..ed7de6e
--- /dev/null
+++ b/refreshlayout_lottie/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ GoRefesh_lottie
+
diff --git a/refreshlayout_core/src/test/java/com/GoRefesh_core/ExampleUnitTest.java b/refreshlayout_lottie/src/test/java/com/GoRefesh_core/ExampleUnitTest.java
similarity index 100%
rename from refreshlayout_core/src/test/java/com/GoRefesh_core/ExampleUnitTest.java
rename to refreshlayout_lottie/src/test/java/com/GoRefesh_core/ExampleUnitTest.java
diff --git a/settings.gradle b/settings.gradle
index 618a334..77c9f12 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':refreshlayout', ':refreshlayout_core'
+include ':app', ':refreshlayout', ':refreshlayout_lottie'