如何在android中滑入和滑出视图

我试图根据活动中的其他事件的上下文来制作一个视图(带有一些按钮的线性视图R.id.playerControl )。

为此我有一个selectMediaItem方法,当用户分别选择或取消选择一个项目时,它应该显示或隐藏视图。

我是新的动画在Android中,我有麻烦得到这个工作有两个原因:

  • 该视图在动画时间之外保持在屏幕上,所以当它完成滑动时,它会跳回去 - 然后当它被请求滑入时跳出来滑回。

  • 随着视图消失,屏幕上有一个永久的黑色空间。 我希望视图在可见时填充空间,如果不可见, GONE空。 为此,我希望布局可以随着动画的变化而变化,这样它就可以推动其他事物的发展。

  • 我的代码:

    protected void selectMediaItem( ItemHandle item ) {
    
        if (item != null) {
            if (toPlay == null) {
                View playerControl = findViewById(R.id.playerControl);
                Animation slideInAdmination = AnimationUtils.loadAnimation(this, R.anim.slide_in);
                playerControl.startAnimation(slideInAdmination);
            }
        }
        else {
            if (toPlay != null) {
                View playerControl = findViewById(R.id.playerControl);
                Animation slideInAdmination = AnimationUtils.loadAnimation(this, R.anim.slide_out);
                playerControl.startAnimation(slideInAdmination);
            }
        }
        toPlay = item;
    }
    

    slide_in.xml

        <translate
            android:duration="1000"
            android:fromYDelta="100%p"
            android:toYDelta="0" />
    
    
    </set>
    

    有没有简单的方法将视图滑入到位并再次滑出?


    我强烈建议你使用Property Animations。 你的示例代码会是这样的。

    mSlidInAnimator = ObjectAnimator.ofFloat(mSlidingView, "translationY", 0);
    mSlidInAnimator.setDuration(200);
    mSlidInAnimator.start();
    
    mSlidOutAnimator = ObjectAnimator.ofFloat(mSlidingView, "translationY", newPosOfView);
    mSlidOutAnimator.setDuration(200);
    mSlidOutAnimator.start();
    

    “translationY”表示向上/向下动画。 使用“translationX”作为右侧的动画。

    这里newPosOfView将是一个相对于你的默认视图位置的位置。 例如,如果您想要将视图向下移动50dp,则它将以像素为单位50dp。 在slideInAnimator中,pos是0,因为您想要移动到视图的orignal位置。

    仔细阅读文档,它非常有帮助。


    您需要添加:

    slideInAdmination.setFillerAfter(true)
    

    在调用startAnimation() 。 这使得视图在动画之后保持其新位置。

    链接地址: http://www.djcxy.com/p/71729.html

    上一篇: How to slide a view in and out in android

    下一篇: How do I document a string double array in JSDoc?