2016-11-06 107 views
0

我有一个工具栏和一个RelativeLayout容器在我的活动内部定义(不在中间)。如何翻译和缩放视图顶部覆盖工具栏?

我想要定义一个“展开”操作,其中整个RelativeLayout容器将设置为顶部正好在工具栏上方。

如何正确定义AnimationSet(带有ScaleAnimationTranslateAnimation)才能成功?

当前状态的一个例子:

View movement

*“定制视图”在图中被表示RelativeLayout容器我如上所述。

+0

工具栏和RelativeLayout的父级是什么?该图中的定制视图是什么? – Srijith

+0

所有Views的父级都是CoordinatorLayout。我编辑了关于自定义视图的问题。 – Kanellis

回答

0

如果你必须使用一个AnimationSet应该最低限度是这个样子:

TranslateAnimation translateAnim = new TranslateAnimation(fromX , toX , fromY , toY); 
ScaleAnimation scaleAnim = new ScaleAnimation(fromX , toX , fromY , toY); 
AnimationSet animSet = new AnimationSet(true); 
animSet.addAnimation(translateAnim); 
animSet.addAnimation(scaleAnim); 
animSet.setFillAfter(true); 
animSet.setDuration(...); 

当然你必须填写在fromX,TOX值...等

但你还可以使用ViewPropertyAnimator代替AnimationSet,这是远远更少的代码,真的很容易使用:

relativeLayout.animate() 
    .translationY(0) // 0 is top of Y axis 
    .scaleX(...)  
    .setDuration(...); 

这只是把你指向的方向,只需填写带有您需要的值的空白,并检查其他可用方法的文档。

+0

是的。我知道整个行动是如何运作的。但我不知道如何找到正确的'toY'和'toX'坐标.. – Kanellis