@Override
public void onStartAnimator(RefreshLayout layout, int headHeight, int extendHeight) {
/**
* 提前关闭 下拉视图偏移
*/
mRefreshKernel.animSpinner(0);
if (mCurrentPercent > 0) {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(mCurrentPercent, 0);
valueAnimator.setDuration(300);
valueAnimator.addUpdateListener(animation -> {
onPullingDown((float) animation.getAnimatedValue(), 0, 0, 0);
});
valueAnimator.start();
mCurrentPercent = 0;
}
if (mFlyView != null && !mIsRefreshing) {
if (mFlyAnimator != null) {
mFlyAnimator.end();
mFlyView.clearAnimation();
}
mIsRefreshing = true;
layout.setEnableRefresh(false);
final int offDistX = ((View) mRefreshLayout).getWidth()-mFlyView.getLeft();
final int offDistY = -(mFlyView.getTop() - mOffset) * 2 / 3;
ObjectAnimator transX = ObjectAnimator.ofFloat(mFlyView, "translationX", 0, offDistX);
ObjectAnimator transY = ObjectAnimator.ofFloat(mFlyView, "translationY", 0, offDistY);
transY.setInterpolator(PathInterpolatorCompat.create(0.7f, 1f));
ObjectAnimator rotation = ObjectAnimator.ofFloat(mFlyView, "rotation", mFlyView.getRotation(), 0);
rotation.setInterpolator(new DecelerateInterpolator());
ObjectAnimator rotationX = ObjectAnimator.ofFloat(mFlyView, "rotationX", mFlyView.getRotationX(), 50);
rotationX.setInterpolator(new DecelerateInterpolator());
AnimatorSet flyUpAnim = new AnimatorSet();
flyUpAnim.setDuration(800);
flyUpAnim.playTogether(transX
,transY
,rotation
,rotationX
,ObjectAnimator.ofFloat(mFlyView, "scaleX", mFlyView.getScaleX(), 0.5f)
,ObjectAnimator.ofFloat(mFlyView, "scaleY", mFlyView.getScaleY(), 0.5f)
);
mFlyAnimator = flyUpAnim;
mFlyAnimator.start();
}
}
FlyRefreshHeader.java 文件源码
java
阅读 33
收藏 0
点赞 0
评论 0
项目:SmartRefresh
作者:
评论列表
文章目录