// 记录View移出动画是否执行完。
private boolean isOutExecute = false;
private ViewPropertyAnimatorListener outAnimatorListener = new ViewPropertyAnimatorListener() {
@Override
public void onAnimationStart(View view) {
isOutExecute = true;
}
@Override
public void onAnimationEnd(View view) {
view.setVisibility(View.GONE);
isOutExecute = false;
}
@Override
public void onAnimationCancel(View view) {
isOutExecute = false;
}
};
public static class ListenerAnimatorEndBuild {
// 记录View移出动画是否执行完。
private boolean isOutExecute = false;
private ViewPropertyAnimatorListener outAnimatorListener;
public ListenerAnimatorEndBuild() {
outAnimatorListener = new ViewPropertyAnimatorListener() {
@Override
public void onAnimationStart(View view) {
isOutExecute = true;
}
@Override
public void onAnimationEnd(View view) {
view.setVisibility(View.GONE);
isOutExecute = false;
}
@Override
public void onAnimationCancel(View view) {
isOutExecute = false;
}
};
}
// View移出动画是否执行完。
public boolean isFinish() {
return !isOutExecute;
}
// 返回ViewPropertyAnimatorListener。
public ViewPropertyAnimatorListener build() {
return outAnimatorListener;
}
}
ListenerAnimatorEndBuild listenerAnimatorEndBuild = new ListenerAnimatorEndBuild(); // 判断是否执行完动画: listenerAnimatorEndBuild.isFinish();
public class DefineBehavior extends BasicBehavior<View> {
private ListenerAnimatorEndBuild listenerAnimatorEndBuild;
public DefineBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
listenerAnimatorEndBuild = new ListenerAnimatorEndBuild();
}
@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) {
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL;
}
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
// if (dyConsumed > 0 && dyUnconsumed == 0) {
// System.out.println("上滑中。。。");
// }
// if (dyConsumed == 0 && dyUnconsumed > 0) {
// System.out.println("到边界了还在上滑。。。");
// }
// if (dyConsumed < 0 && dyUnconsumed == 0) {
// System.out.println("下滑中。。。");
// }
// if (dyConsumed == 0 && dyUnconsumed < 0) {
// System.out.println("到边界了,还在下滑。。。");
// }
// 这里可以写你的其他逻辑动画,这里只是举例子写了个缩放动画。
if ((dyConsumed > 0 || dyUnconsumed > 0) && listenerAnimatorEndBuild.isFinish() && child.getVisibility() == View.VISIBLE) {//往下滑
scaleHide(child, listenerAnimatorEndBuild.build());
} else if ((dyConsumed < 0 || dyUnconsumed < 0) && child.getVisibility() != View.VISIBLE) {
scaleShow(child, null);
}
}
}
<ImageView android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="16dp" android:src="@mipmap/ic_launcher" app:layout_behavior="@string/define_behavior" app:layout_scrollFlags="scroll|enterAlways|snap" />
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有