Change position of view after end of animation

前端 未结 3 532
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-04 15:58

I develop a widget based on ViewGroup and my problem is that I need to save position of items after the end of animation. I called setFillAfter(true) i

3条回答
  •  旧时难觅i
    2021-02-04 16:35

    I did it. Here is the code:

    private void scrollUp() {
        for(int i = 0; i < getChildCount(); i++) {
            final View child = getChildAt(i);
            final int index = i; 
            final int newleft = child.getLeft() + mOffsetBetweenItems;
            final int newTop = child.getTop() - mOffsetBetweenItems;
            TranslateAnimation scrollUp = new TranslateAnimation(0, mOffsetBetweenItems, 0, -mOffsetBetweenItems);          
            scrollUp.setDuration(1500);
            scrollUp.setFillEnabled(true);        
            scrollUp.setAnimationListener(
                new AnimationListener() {
    
                    @Override
                    public void onAnimationStart(Animation animation) {}
    
                    @Override
                    public void onAnimationRepeat(Animation animation) {}
    
                    @Override
                    public void onAnimationEnd(Animation animation) {
                        child.layout(newleft, newTop, newleft + child.getMeasuredWidth(), newTop + child.getMeasuredHeight() );
                    }
                }
            );
    
            child.startAnimation(scrollUp);
        }
    }
    

    Just removed setFillAfter(true) and write setFillEnabled(true) instead of. But in this case I don't understand the logic of setFillEnabled() working, because it provides behavior not like describes in documentation.

提交回复
热议问题