我一直在难倒这个相当长的一段时间。 我想移动它包含在一个FrameLayout里我的片段,以正确的,因此,只有片段的左20%是可见的。
我想我遇到的问题是,家长不让其边界外的片段移动,或我不知道如何移动。 我曾尝试一切才刚刚猛的片段靠在右侧壁,和缩放以适应片段。 我需要它推右墙外的片段。 任何帮助将超过赞赏。
我想实现的,最终的效果是,当你推一放,在片段转换为全视图,然后用按一下按钮变回20%视图。 我有动画中的所有设置,只是片段的实际移动被绊倒了我。
我一直在难倒这个相当长的一段时间。 我想移动它包含在一个FrameLayout里我的片段,以正确的,因此,只有片段的左20%是可见的。
我想我遇到的问题是,家长不让其边界外的片段移动,或我不知道如何移动。 我曾尝试一切才刚刚猛的片段靠在右侧壁,和缩放以适应片段。 我需要它推右墙外的片段。 任何帮助将超过赞赏。
我想实现的,最终的效果是,当你推一放,在片段转换为全视图,然后用按一下按钮变回20%视图。 我有动画中的所有设置,只是片段的实际移动被绊倒了我。
这意味着,虽然动画,这并不意味着片段本身就是动漫使它看起来是。 它仍然将在原来的位置收到的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反向移植。