首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectAnimator不可逆

ObjectAnimator不可逆
EN

Stack Overflow用户
提问于 2017-09-06 04:42:56
回答 1查看 136关注 0票数 0

我有一个视图集合,可以向下移动屏幕,然后反向移动,但是现在,当我试图移动一个CardView时,它将向下移动,而不是备份。

当用户单击一个按钮时,它会提示视图集合下拉/淡出,当用户再次单击该按钮时,它们会返回。在视图集合创建的空间中,CardView会下降。我有一个CardView要下拉,但是当用户单击按钮时,视图集合会返回,而不是CardView -相反,它会消失。干杯!

MainActivity (NB: in OnCreate())

代码语言:javascript
复制
       ...


 final View blankCard = findViewById(R.id.child_card_template);
    blankCard.setVisibility(blankCard.INVISIBLE);

       ...

    ImageButton btn = (ImageButton) findViewById(R.id.imageLeft);
    btn.setOnClickListener(new View.OnClickListener() {

        int click_Animation_Type = 0;

        View viewTest = findViewById(R.id.child_card_template);
        View viewCard = viewTest;

        @Override
        public void onClick(View view) {
            switch(click_Animation_Type) {
                case 0:
                    moveSecondRow();
                    moveCardViewLayout();
                    click_Animation_Type = 1;
                    break;

                case 1:
                    rewindSecondRow();
                    rewindCardViewLayout();
                    click_Animation_Type = 0;
                    break;
            }
        }

            public void moveCardViewLayout() {
                View viewTest = findViewById(R.id.child_card_template);
                ObjectAnimator viewTestMovi = ObjectAnimator.ofFloat(viewTest, "translationY", 0f, 258f);
                if(viewTest.getVisibility()==View.INVISIBLE) {
                    viewTestMovi.setDuration(250);
                    viewTestMovi.start();
                    viewTest.setVisibility(viewTest.VISIBLE);
                }
            }

            public void rewindCardViewLayout() {
                View viewTest = findViewById(R.id.child_card_template);
                ObjectAnimator viewTestMoviReverse = ObjectAnimator.ofFloat(viewTest, "translationY", 258f, 0f);
                if (viewTest.getVisibility() == View.VISIBLE) {
                    viewTestMoviReverse.setDuration(250);
                    viewTestMoviReverse.start();
                    viewTest.setVisibility(viewCard.INVISIBLE);

                    //THERE'S NO ANIMATION, JUST TURNING INVISIBLE.
                    //Registers View is visible.
                }
            }

            public void moveSecondRow() {
                for (int i = 0; i < list.size(); i++) {
                    ObjectAnimator bottomRow = ObjectAnimator.ofFloat(list.get(i), "translationY", 0f, 300f);
                    bottomRow.setDuration(250);//set duration
                    Animation fadeOutAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_out_anim);
                    bottomRow.start();//start animation
                    list.get(i).startAnimation(fadeOutAnimation);
                    list.get(i).setVisibility(View.GONE);
                }
            }

            public void rewindSecondRow() {
                for (int i = 0; i < list.size(); i++) {
                    ObjectAnimator bottomRow = ObjectAnimator.ofFloat(list.get(i), "translationY", 300f, 0f);
                    bottomRow.setDuration(300);//set duration
                    Animation fadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_in_anim);
                    bottomRow.start();//start animation
                    list.get(i).setVisibility(View.VISIBLE);
                    list.get(i).startAnimation(fadeInAnimation);
                }
            }

    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-06 05:46:06

每次click_Animation_Type以0开头。将click_Animation_Type = 0;层放置在setContentView下面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46066918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档