如何将整理活动缩小为矩形

Dan*_*lme 21 android android-animation android-activity

在我的Android应用程序中,我有一个浮动Activity.它是从我的应用程序外部开始使用ActivityOptions.makeScaleUpAnimation从"原始"矩形向上扩展.当我Activity完成时,我希望它能够完成与该动画相反的操作:即它逐渐缩小回到该矩形.

我知道我可以使用矩形getIntent().getSourceBounds(),并且我希望能够overridePendingTransition()在完成时使用以实现此效果,但是overridePendingTransition()只能接受固定的XML资源:似乎没有办法让动画依赖于源边界.我还能用其他东西来达到这个效果吗?

我的应用程序适用于API 11+,但由于它只是一种美容效果,我会对依赖于更高版本的解决方案感到满意.

Aja*_*ayV 8

我认为除了overridePendingTransition调用之外,还有一种方法可以缩小活动窗口.但是,此代码可能有所帮助

放大

ActivityOptions opts = ActivityOptions.makeCustomAnimation(getActivity(),R.anim.scale_up,0); startActivity(new Intent(this,SecondActivity.class),opts.toBundle());

这是scale_up动画文件:

<set  xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
    android:fromXScale="0"
    android:toXScale="1.0"
    android:fromYScale="0"
    android:toYScale="1.0"
    android:pivotX="50%p"
    android:pivotY="50%p"
    android:duration="500"/>
</set>
Run Code Online (Sandbox Code Playgroud)

缩小

从现有活动中调用此代码:

finish();

overridePendingTransition(0, R.anim.scale_down);
Run Code Online (Sandbox Code Playgroud)

这是scale_down动画文件:

<set xmlns:android="http://schemas.android.com/apk/res/android">
   <scale
    android:fromXScale="1.0"
    android:toXScale="0"
    android:fromYScale="1.0"
    android:toYScale="0"
    android:pivotX="50%p"
    android:pivotY="50%p"
    android:duration="250"/>
</set>
Run Code Online (Sandbox Code Playgroud)

您可以改变X和Y比例以获得所需的矩形.希望这可以帮助.

  • 正如我在问题中所说,我无法在 XML 文件中设置矩形,因为它来自意图的 *源边界*。 (2认同)