移动的片段部分地关闭屏幕(Moving a fragment partially off scree

2019-09-24 00:33发布

我一直在难倒这个相当长的一段时间。 我想移动它包含在一个FrameLayout里我的片段,以正确的,因此,只有片段的左20%是可见的。

我想我遇到的问题是,家长不让其边界外的片段移动,或我不知道如何移动。 我曾尝试一切才刚刚猛的片段靠在右侧壁,和缩放以适应片段。 我需要它推右墙外的片段。 任何帮助将超过赞赏。

我想实现的,最终的效果是,当你推一放,在片段转换为全视图,然后用按一下按钮变回20%视图。 我有动画中的所有设置,只是片段的实际移动被绊倒了我。

Answer 1:

这意味着,虽然动画,这并不意味着片段本身就是动漫使它看起来是。 它仍然将在原来的位置收到的onclick事件,直到它在物理上移动。

您可能正在使用老式的动画(例如, TranslateAnimation ),它被设计为瞬态效应,而不是永久的。

我指出你的原因我的一个相关的问题是,许多解决方案,包括我自己的解决方案使用新的动画框架,这是专为更持久的效果。

此外这个例子不帮我,我想部分移动它关闭屏幕,不只是它蜷缩起来反对边缘。

特别是关于动画制作框架,存在之间的“部分移动它关闭屏幕”和“把它揉成一团对一个边缘”并无重大差异。 举例来说,如果你读了我的解决方案,你会看到一个translateWidgets()方法展示了一组控件中的横向滑动:

private void translateWidgets(int deltaX, View... views) {
    for (final View v : views) {
      v.setLayerType(View.LAYER_TYPE_HARDWARE, null);

      v.animate().translationXBy(deltaX).setDuration(ANIM_DURATION)
       .setListener(new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
           v.setLayerType(View.LAYER_TYPE_NONE, null);
         }
       });
    }
  }

在你的情况, deltaX是任何适当的值来实现你的20%的效果(大概0.2f倍容器的宽度,或沿着这些线路的东西),或撤消时生效满片段应该被看作。

我的回答包含了全样本项目,既为本地API 11级动画链接,并使用动画框架NineOldAndroids反向移植。



文章来源: Moving a fragment partially off screen