我的视图处于最小化状态(一个小窗口,可以将其移动到任一角)。单击窗口时,我需要能够为最大化动画。
我已经在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);
}
}
我希望屏幕从其最小化状态变为最大化的窗口(全屏)(例如,当从当前位于屏幕上的任何位置最小化谷歌地图时,谷歌地图。目前正在发生的事情是最大化和扩展该窗口屏幕(不定位并最大化可见视图)。