在android中向下滑动视图

时间:2010-09-12 04:08:01

标签: android list animation slide

我想在我的android应用程序中有一个按钮触发表单的向下滑动视图。我希望屏幕顶部有一个视图,屏幕底部有一个列表,我想在单击按钮时在两者之间显示向下滑动窗体视图。

我没有问题显示视图,但似乎无法将其从隐藏设置为动画显示在屏幕上。

关于这如何运作的任何想法?

2 个答案:

答案 0 :(得分:8)

public void doSlideDown(View view){
    RelativeLayout myView = (RelativeLayout)findViewById(R.id.my_view);
        addListingView.setVisibility(myView.VISIBLE);

        Animation slideDown = setLayoutAnim_slidedown(); 
        myView.startAnimation(slideDown);
}

public void doSlideUp(View view){
    RelativeLayout myView = (RelativeLayout)findViewById(R.id.my_view);

        Animation slideUp = setLayoutAnim_slideup(); 
        myView.startAnimation(slideUp);

}

public Animation setLayoutAnim_slidedown() {

        AnimationSet set = new AnimationSet(true);

        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(800);
        animation.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                // MapContacts.this.mapviewgroup.setVisibility(View.VISIBLE);

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                Log.d("LA","sliding down ended");

            }
        });
        set.addAnimation(animation);

        LayoutAnimationController controller = new LayoutAnimationController(
                set, 0.25f);


        return animation;
    }

public Animation setLayoutAnim_slideup() {

        AnimationSet set = new AnimationSet(true);

        Animation animation = new TranslateAnimation(
                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
                0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
                Animation.RELATIVE_TO_SELF, -1.0f);
        animation.setDuration(800);
        animation.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                RelativeLayout bodyView = (RelativeLayout)findViewById(R.id.bodyView);
                RelativeLayout myView = (RelativeLayout)findViewById(R.id.my_view);
                addListingView.clearAnimation();
                bodyView.removeView(myView);
            }
        });
        set.addAnimation(animation);

        LayoutAnimationController controller = new LayoutAnimationController(
                set, 0.25f);

        return animation;

}

答案 1 :(得分:7)