zoom in and zoom out animation in android

2019-01-23 03:05发布

问题:

I have code of normally zoom in and zoom out animation between two activities, but I want something different. I have five buttons on my first activity if I click on first button then zoom in would be starts from position of first button only instead of zooming from centre. Please help me.

EDIT : Zoom should start from the button I clicked as a centre.

回答1:

You can use this method after running the command to start your new activity,

startActivity(intent);
overridePendingTransition(animation_in_goes_here,animation_out_goes_here);

Then you may replace your animations above, replacing the animation_in_goes_here with the animation resource you need for the activity that you have newly started and replacing animation_out_goes_here with the animation resource for the activity that you are leaving from. This will give you the switching effects.

zoom_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true">
    <scale
    android:duration="1000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="3"
    android:toYScale="3"/>
 </set>

zoom_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true">
    <scale
    android:duration="1000"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0.5"
    android:toYScale="0.5"/>
</set>

Hope this helped to answer your question.



回答2:

Zoom In

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="0"
    android:fromYScale="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="0.5"
    android:toYScale="0.5">

</scale>

Zoom Out

<scale xmlns:android="http://schemas.android.com/apk/res/android"

    android:duration="1000"
    android:fromXScale="2.1"
    android:fromYScale="2.1"
    android:pivotX="50%"
    android:pivotY="50%"
    android:startOffset="3000"
    android:toXScale="0"
    android:toYScale="0">

</scale>



回答3:

I think you have to

  • Set "in" and "out" animations
  • Create folder res/anim
  • Put animation descriptions into res/anim folder

    object.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.zoom_enter)); object.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.zoom_exit));

You can use android sdk sample animations supplied by google under Apache 2.0 licence

Or refer this which uses scaling based zooming which is easier than the former

http://developer.android.com/training/animation/zoom.html