我正试图让一个简单的视图在另一个视频后面滑动消失,我尝试过任何类型的动画,但没有一个成功...
这是我到目前为止所尝试过的:
public void slideToTop(View view){
TranslateAnimation animate = new TranslateAnimation(0,0,0,-view.getHeight());
animate.setDuration(1000);
view.startAnimation(animate);
view.setVisibility(View.GONE);
}
有没有ReverseInterpolator
public class ReverseInterpolator implements Interpolator {
public float getInterpolation(float paramFloat) {
return Math.abs(paramFloat -1f);
}
}
或使用Scaling
public void scaling(View view) {
ScaleAnimation animation = new ScaleAnimation(0,0,1,1.5f);
animation.setDuration(1000);
animation.setFillAfter(true);
view.startAnimation(animation);
}
或使用新的api
editView.animate().translationY(-editView.getHeight()).withLayer();
有关如何实现这一目标的任何帮助?
我的布局类似于:
<ScrollView>
<LinearLayout>
<LinearLayout>
<TextView/>
<View/> <!-- This should "disappear" sliding up behind the other one -->
</LinearLayout>
<!-- more of the previous -->
<LinearLayout>
<TextView/>
<View/>
</LinearLayout>
</LinearLayout>
</ScrollView>
有任何帮助吗?谢谢!
答案 0 :(得分:3)
如果您想要视图B在视图A后面消失的效果,则需要在A:
之前绘制B.<RelativeLayout>
<ViewB />
<ViewA above="ViewB"/>
</RelativeLayout>
然后移动ViewB。我已经使用以下代码完成了相同的操作,它将以自己的高度移动viewToMove:
public void collapse() {
View viewToMove= mainView.findViewById(R.id.viewToMove);
int pixelsToMove= viewToMove.getHeight() * -1;
slots.animate().yBy(pixelsToMove).setDuration(ANIMATION_DURATION_MS);
}
在致电getHeight()
时要小心,您可能需要ViewTreeObserver
才能获得正确的值,因为在绘制视图之前的大多数时间getHeight()
只会返回0