展开动画以实现双方的工作? (在负轴上)

时间:2015-01-30 09:18:44

标签: android animation view expandable

我在视图上实现了ExpandAnimation:

        @Override
    protected void applyTransformation(float interpolatedTime,
                                       Transformation t) {
        LayoutParams lp =
                (LayoutParams) view.getLayoutParams();
        if(rightAnimation){
            lp.width = (int) (mStartWidth + mDeltaWidth *
                    interpolatedTime);
            view.setLayoutParams(lp);
        }else{

        }

    }

通过此动画,我的视图可以扩展和缩小。

我想要做的是将这个动画实现到另一侧(到-x侧)。但是我有点困惑,因为缩小宽度是行不通的。 (因为不允许减去宽度或高度)

有没有人知道在左侧(-x)或上侧(-y)侧实施扩展动画的更好方法?

或者反映视图?

1 个答案:

答案 0 :(得分:0)

最后我实现了左手侧扩展动画。这是代码:

   private class ExpandAnimation extends Animation implements Animation.AnimationListener {
    private final int mStartWidth;
    private final int mDeltaWidth;
    int delta;

    public ExpandAnimation(int startWidth, int endWidth) {
        mStartWidth = startWidth;
        mDeltaWidth = endWidth - startWidth;
        RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) getLayoutParams();
        delta = param.width;
        setAnimationListener(this);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) getLayoutParams();
        delta = param.width;
        if(param.width <= 0){
            delta = 0;
        }
        param.width = (int) (mStartWidth + mDeltaWidth *
                interpolatedTime);
        if(delta != 0){
            delta = (int) (mStartWidth + mDeltaWidth *
                    interpolatedTime) - delta;
        }
        param.leftMargin -=delta;
        setLayoutParams(param);
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }

    @Override
    public void onAnimationStart(Animation animation) {
    }

    @Override
    public void onAnimationEnd(Animation animation) {
        setText(text);
        requestLayout();
        mExpanded = !mExpanded;
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
}

由于我不知道的原因,宽度在开始时为-2。所以我用if过滤掉了。 Apply Transformation方法可以胜任。