Slide_down动画显示视图

时间:2014-09-25 15:18:53

标签: android animation

我有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%"有关,但有没有办法从孩子当时的地方开始动画?

1 个答案:

答案 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