保持视图在另一个视图的动画上方

时间:2011-08-04 05:24:12

标签: android animation android-linearlayout

我有一个Activity,主屏幕只有标题栏(等等)。我在标题栏下面有另一个TextView,我从上到下进行动画制作(从View.GONE开始,然后在用户发生事件后,我将其设置为可见的动画)。< / p>

除了标题栏下方的TextView动画到标题栏上方的位置之外,这样做效果很好。我希望它好像TextView来自标题栏下面的 。两个视图都在LinearLayout中,因此我无法像在FrameLayout中那样处理z顺序。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我最终通过在LinearLayout中包含textview,然后将LayoutAnimationController设置为LinearLayout来解决这个问题。这会导致所有子项相对于父容器进行动画处理,这使得下拉列表仅在LinearLayout中呈现(完美地工作)。这是我用于动画控制器和ListView的代码:

private void addDeleteDropAnimation() {
    AnimationSet set = new AnimationSet(true);

    Animation animation = new AlphaAnimation(0.0f, 1.0f);
    animation.setDuration(150);
    set.addAnimation(animation);

    animation = new TranslateAnimation(
        Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
        Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f
    );
    animation.setDuration(300);
    set.addAnimation(animation);

    controllerDel = new LayoutAnimationController(set, 0.5f);
    vw_delLinearLayout.setLayoutAnimation(controllerDel);
}

答案 1 :(得分:0)

Handler handler = new Handler();
new Thread(){
    public void run(){
        TextView tv = (TextView)findViewById(R.id.xx);
        LayoutParams params = (LayoutParams)tv.getLayoutParams();
        handler.post(new Runnable(){
            public void run(){            
                tv.setVisible(View.Visible);
            }
        }
        int height = params.height;
        for(int i = 0; i < height + 1; i++) {
            params.topMargin = i - height;
            handler.post(new Runnable(){
                public void run(){            
                   tv.requestLayout();
                }
            }

            try{
                Thread.sleep(5);
            }catch(InterruptedException e){
            }
        }

    }
}.start();

你可以试试这个。