我有2个孩子的布局。一个在半顶,另一个在下面。顶部的那个以可见性GONE
状态开始,因此第二个孩子位于半顶部。
我做的是。当我触摸第二个孩子的元素时,这个孩子会向其原始位置制作一个滑动动画,第一个孩子会显示在半个顶部。
问题来了。第二个孩子有一个layout_marginTop="20dp"
属性,所以在开始时,当它在半顶部时,它有顶部的边缘。当动画开始时,它会移动到屏幕顶部并转到它的原始位置。也就是说,动画不是从当前位置开始,而是从屏幕顶部开始。这是我的slide_down动画。
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%" android:toYDelta="0%" android:duration="1000"/>
</set>
我知道这与fromYDelta="-100%"
有关,但有没有办法从孩子当时的地方开始动画?
答案 0 :(得分:1)
最好在Java文件中使用TranslateAnimation代码而不是xml。 让我们考虑A和B是你的观点,和 A位于半顶,能见度消失,B位于底部半场.. 当你点击B中的任何一个孩子时,需要从顶部向下滑动使得A可见......
A.setVisibility(View.GONE); //initially
TranslateAnimation slide_down=new TranslateAnimation(B.getScaleX(),B.getScaleX(),B.getScaleY()-20,B.getScaleY());
slide_down.setDuration(500);
slide_down.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
A.setVisibility(View.Visible);
}
});
B.startAnimation(slide_down); //start Animation when child view is clicked