如何设置动画以最大化屏幕视图

时间:2019-07-16 13:33:51

标签: android android-animation

我的视图处于最小化状态(一个小窗口,可以将其移动到任一角)。单击窗口时,我需要能够为最大化动画。

我已经在How to animate the width and height of a Layout?上使用ResizeAnimation尝试了该解决方案。我继续遇到的问题有两个,它似乎在以全屏方式显示之前几乎以一种倒置的方式(缩小)进行了动画处理。第二个问题,也是更烦人的问题是,除非它位于屏幕的左上方,否则它将最大化屏幕外。我需要它根据位置动态最大化。

class ResizeAnimation extends Animation {

    private static final int TIME_TO_ANIMATE_MS = 1000;

    final View view;
    final int startHeight;
    final int startWidth;
    final int endHeight;
    final int endWidth;

    ResizeAnimation(View view, int endHeight, int endWidth) {
        this.view = view;
        this.startHeight = view.getLayoutParams().height;
        this.startWidth = view.getLayoutParams().width;
        this.endHeight = endHeight;
        this.endWidth = endWidth;
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        view.getLayoutParams().height = (int) (startHeight + (endHeight - startHeight) * interpolatedTime);
        view.getLayoutParams().width = (int) (startWidth + (endWidth - startWidth) * interpolatedTime);
        view.requestLayout();
    }

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

    static void basicResize(View view, int newHeight, int newWidth) {
        ResizeAnimation resizeAnimation = new ResizeAnimation(view, newHeight, newWidth);
        resizeAnimation.setDuration(TIME_TO_ANIMATE_MS);
        view.startAnimation(resizeAnimation);
    }
}

我希望屏幕从其最小化状态变为最大化的窗口(全屏)(例如,当从当前位于屏幕上的任何位置最小化谷歌地图时,谷歌地图。目前正在发生的事情是最大化和扩展该窗口屏幕(不定位并最大化可见视图)。

0 个答案:

没有答案