我正在尝试做一些看似简单的事情。我想要一个地图视图,其中有一个从屏幕底部向上滑动的菜单,可以在其中调整设置(用于覆盖)。但是,当我使用 TranslateAnimation 影响 LinearLayout(包含菜单)的 y 位置时,LinearLayout 中的按钮会移动,但“点击区域”仍保持在与动画之前相同的位置。

    TranslateAnimation slide = new TranslateAnimation(0,0,0,0);
 slide.setDuration(300);
 slide.setFillAfter(true);
 pullupMenu.startAnimation(slide);
 mapContainer.startAnimation(slide);

我还研究了补间视图的 marginTop 值,但甚至无法确定如何完成。

任何有关这些方向的帮助将不胜感激。

有帮助吗?

解决方案

动画通常是对小部件的像素进行动画处理。根据你写的内容,我的怀疑是 setFillAfter() 只是安排 像素 停留在目标位置,而不是小部件本身。

如果您希望动画真正结束移动小部件,您需要:

  • 注册一个侦听器以查明动画何时结束,以及
  • 此时安排修改布局规则,使小部件实际存在于新位置

您可以看到采用此技术的滑动窗格 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top