java - 安卓 : hide/show footer/header as scrolling scrollview down/up

标签 java android animation scrollview motionevent

我正在尝试实现一种方法,当用户向下滚动 ScrollView 时,让我的页脚向下滑动标题向上滑动

反之亦然,当用户向上滚动 scollview 时,我希望页脚从底部滑入,页眉从顶部滑入。

关于动画,我找到了这个很好的库https://github.com/daimajia/AndroidViewAnimations带有很多漂亮的动画。

与我正在寻找的最接近的示例是默认的 Android Twitter 应用程序,当用户向下滚动时间线时,它的页脚会消失,而当用户向上滚动时,它会重新出现。

通过标题,我不是在谈论 Android 工具栏(op AppBar 或其他)。这是一个定制的 UI 元素,我想在用户滚动时为其添加动画效果。

页脚也是如此:它是一个定制的 UI 元素。

在寻找解决方案时,我偶然发现了这个答案 https://stackoverflow.com/a/28712465/3535408但它不起作用。 事实上,将 Log.d 放在 ifelse if 中表明,用手指简单触摸即可触发 MotionEvent。 ACTION_DOWNMotionEvent.ACTION_UP 事件。当我向上/向下滑动手指使 ScrollView 向上/向下滚动时,这同样适用:当我停止触摸 ScrollView 时,这两个事件都会在最后触发。

有没有办法改进这个解决方案?因为到目前为止,随着两个MotionEvents被触发,两个动画也被触发,所以结果是相当可怕的。

谢谢!

最佳答案

实现这一目标的简单方法如下:

  • 将 ListView 、页眉和页脚放置在RelativeLayout中
  • 将标题与父级顶部对齐
  • 将页脚与父级底部对齐
  • 向 ListView 添加相同高度的空页眉和页脚
  • 捕获 ListView 上的滚动事件并相应地更改页脚和/或页眉的翻译

但是为了回答你的问题,我建议你应该尝试一下 GestureDetector。管理事件变得更加容易 - Detecting Gestures

关于java - 安卓 : hide/show footer/header as scrolling scrollview down/up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037951/

相关文章:

android - 重新排序 Gradle 默认任务

python - 是否可以将使用 Tkinter 创建的动画保存在文件中?

java - spring security 默认登录页面代码位于哪里?

Java Collections.checked*() 与通用集合

android - 如何在 Android EditText 中进行提示换行?

android - 通过触摸模式检测多点触控

Javascript Canvas 动画没有出现

javascript - Chrome 中的 Webkit 动画迭代计数错误

java - 在访问 JNI 接口(interface)时,为什么 C 需要额外的间接级别而 C++ 不需要?

java - 未找到 android 项目中的 native 库(UnsatisfiedLinkError)