我已经为此搁置了很长一段时间了。我试图将包含在FrameLayout中的片段移动到右侧,以便只有左侧20%的片段可见。将部分片段移出屏幕
我想我遇到的问题是,父母不会让片段超出边界,或者我不知道如何移动它。我所尝试过的所有东西都只是将片段推向右侧墙壁,然后将片段缩放以适合。我需要它将右边墙外的碎片推开。任何帮助将不胜感激。
我试图达到的最终效果是,当您推送穿戴片段翻译成全视图,然后按一个按钮翻译回20%的观点。我有所有的动画设置,只是片段的实际移动困扰着我。
我已经为此搁置了很长一段时间了。我试图将包含在FrameLayout中的片段移动到右侧,以便只有左侧20%的片段可见。将部分片段移出屏幕
我想我遇到的问题是,父母不会让片段超出边界,或者我不知道如何移动它。我所尝试过的所有东西都只是将片段推向右侧墙壁,然后将片段缩放以适合。我需要它将右边墙外的碎片推开。任何帮助将不胜感激。
我试图达到的最终效果是,当您推送穿戴片段翻译成全视图,然后按一个按钮翻译回20%的观点。我有所有的动画设置,只是片段的实际移动困扰着我。
这意味着虽然它具有动画效果,但并不意味着片段本身就是动画看起来像的地方。它仍然会在原始位置收到OnClick事件,直到其实际移动。
您可能正在使用旧式动画(例如,TranslateAnimation
),它们是为瞬态效果设计的,而不是永久性效果。
我指出a related question of mine的原因在于很多解决方案,包括my own solution都使用新的动画设计框架,该框架专为持久效果而设计。
此外,这个例子并没有帮助我,我试图将它部分地移出屏幕,而不是仅仅把它放在边缘上。
特别是对于动画构架而言,“将其部分移出屏幕”和“将其向边缘碾压”之间没有实质性区别。例如,如果你读了我的解决方案,你会看到一个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 backport。
你是什么意思?“我有动画全部设置好了,只是片段的实际移动将我绊倒了”?这些言论似乎相互矛盾。您也可以在一两个月前询问以下问题(并回答以及其他答案):http://stackoverflow.com/questions/12253965/complete-working-sample-of-the-gmail-三片段动画场景 – CommonsWare
这意味着虽然它具有动画效果,但并不意味着片段本身就是动画看起来像的地方。它仍然会在原始位置收到OnClick事件,直到其实际移动。 – WIllJBD
此外,这个例子并不能帮助我,我试图将它部分地移出屏幕,而不是将它边缘化。 – WIllJBD