android - 向下滑动视图在第一次后不再显示
问题描述
我正在尝试在单击按钮时向下滑动视图并在同一个按钮上单击向上滑动
一旦向下滑动并向上滑动完成后,一切都在第一次工作,它不会工作
if (slideView.getVisibility() != View.VISIBLE) {
Transition transition = new Slide(Gravity.TOP);
transition.setDuration(300);
transition.addTarget(slideView);
TransitionManager.beginDelayedTransition(slideViewParent, transition);
slideView.setVisibility(View.VISIBLE);
transition.removeTarget(slideView);
} else {
slideView.animate()
.translationY(-slideView.getHeight())
.setDuration(400)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
animation.end();
slideView.setVisibility(View.GONE);
}
});
}
它最初会从父视图向下滑动..然后单击按钮它将向上滑动..再次单击按钮没有任何反应..我想再次向下滑动它
解决方案
我没有足够的声誉发表评论。但是,如果您的视图已经可见甚至已经消失,那么您的错误就在这两行:
slideView.setVisibility(View.VISIBLE);
slideView.setVisibility(View.GONE);
视图已经可见或已经消失,并且您将其设置为可见/再次消失,以无限循环向下/向上结束。
因此,将您的代码更改为:
if (slideView.getVisibility() != View.VISIBLE) {
Transition transition = new Slide(Gravity.TOP);
transition.setDuration(300);
transition.addTarget(slideView);
TransitionManager.beginDelayedTransition(slideViewParent, transition);
slideView.setVisibility(View.GONE);
transition.removeTarget(slideView);
} else {
slideView.animate()
.translationY(-slideView.getHeight())
.setDuration(400)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
animation.end();
slideView.setVisibility(View.VISIBLE);
}
});
}
推荐阅读
- batch-file - 扫描文件夹内容时排除某些子文件夹
- zap - 尝试通过将 ZAP 主机指定为节点从远程 Jenkins 服务器(外部 Jenkins 服务器)运行 ZAP 扫描时,ZAP 扫描进度为 0%
- javascript - 在 Document 节点上循环(包括 childrens )
- java - 我可以随机播放 2 个与我想要的匹配的数组列表吗?
- javascript - 如何在点击时调用 Jquery 按钮?
- html - iframe 引导期间的 Angular 应用程序路由
- mongodb - MongoDB Aggregate 在 Loopback 中未按预期工作
- python - numpy 矩阵不相等,即使它们看起来相同
- python - 带有 2 个 for 循环的列表理解提供了太多需要解包的值
- android - 进度条不能隐藏