RotateAnimation image transfer rotation animation effectTween AnimationA tween animation performs a series of simple conversions (location, size, rotation, transparency) on the content of the view object ). If you have a text view object, you can move it, rotate it, and make it larger or smaller. If there is a background image under the text, the background image will also be converted with the file.
Use XML to define Tween Animation
The XML file of the animation is in the project.Res/animDirectory. This file must contain a root element Interpolation element or adding all the above elements In element groups, by default, all animation commands occur simultaneously. To enable them to occur in sequence, you need to set a special attribute startOffset. Animation commands define what kind of conversions you want to perform. when they happen, how long should they be executed? The conversions can be continuous or at the same time. For example, if you want to move the text content from the left to the right, then rotate the text 180 degrees, or rotate the text content simultaneously during the movement, no conversion requires some special parameters (the size of the start and end sizes, the rotation angle of the start and end, and so on). You can also set some basic parameters (for example, if several conversions occur simultaneously, you can set the same Start Time for them. If the conversion is based on the sequence, the calculation Start Time plus the cycle.
Common node attributes of Tween Animation
Attribute [type] |
Function |
Remarks |
Duration [long] |
Attribute is animation duration |
Time in milliseconds |
FillAfter [boolean] |
If it is set to true, the animation will be applied after the animation ends. |
FillBefore [boolean] |
If this parameter is set to true, the animation is applied before the animation starts. |
Interpolator |
Specifies an animation insertor. |
There are some common plug-ins Accelerate_decelerate_interpolator Accelerator-slowdown animation inserter Accelerate_interpolator Acceleration-animation insertor Decelerate_interpolator Slowdown-animation inserter Other animation Effects |
RepeatCount [int] |
Number of animation repetitions |
|
RepeatMode [int] |
Define repeated Behaviors |
1: Start again 2: plays backward |
StartOffset [long] |
The time interval between the animation, starting from the time when the animation was stopped |
ZAdjustment [int] |
Changing the Z Order of an animation |
0: Keep Z Order unchanged 1: Keep at the top -1: Keep at the bottom layer |
Table 2 |
XML Node |
Function Description |
Alpha |
Gradient transparency animation effect |
Android: fromAlpha = "0.1 ″ Android: toAlpha = "1.0 ″ Android: duration = "3000"/> |
FromAlpha |
Transparency when attribute is animation start |
0.0 indicates completely transparent 1.0 indicates completely opaque The above value is a float data type number between 0.0 and 1.0. Duration is the animation duration, in ms. |
ToAlpha
|
The property is the transparency when the animation ends. |
Table 3 |
Scale |
Gradient scaling animation effect |
Android: interpolator = "@ android: anim/accelerate_decelerate_interpolator" Android: fromXScale = "0.0 ″ Android: toXScale = "1.4 ″ Android: fromYScale = "0.0 ″ Android: toYScale = "1.4 ″ Android: Required Tx = "50%" Android: Required ty = "50%" Android: fillAfter = "false" Android: startOffset = "700" Android: duration = "700 ″ Android: repeatCount = "10"/> |
FromXScale [float] fromYScale [float] |
It is the scaling size on the X and Y coordinates when the animation starts. |
0.0 indicates shrinking to none 1.0 indicates normal scaling-free A value smaller than 1.0 indicates contraction. Value greater than 1.0 indicates Amplification |
ToXScale [float] ToYScale [float] |
It is the scaling size on the X and Y coordinates when the animation ends. |
PivotX [float] Ty [float] |
It is the starting position of the animation relative to the X and Y coordinates of the object. |
Attribute value description: from 0%-100%, 50% is the midpoint position on the X or Y coordinate of the object. |
|
|
|
|
Table 4 |
Translate |
Animation Effect |
Android: fromXDelta = "30 ″ Android: toXDelta = "-80 ″ Android: fromYDelta = "30 ″ Android: toYDelta = "300 ″ Android: duration = "2000"/> |
FromXDelta ToXDelta |
It is the position on the X coordinate at the animation end and start. |
|
FromYDelta ToYDelta |
It is the position on the Y coordinate of the animation and the start point of the animation. |
|
|
|
|
|
Table 5 |
Rotate |
Animation effects of screen transfer and Rotation |
Android: interpolator = "@ android: anim/accelerate_decelerate_interpolator" Android: fromDegrees = "0 ″ Android: toDegrees = "+ 350 ″ Android: Required Tx = "50%" Android: Required ty = "50%" Android: duration = "3000"/> |
FromDegrees |
It is the angle of the object when the animation starts. |
Description If the angle is negative, it indicates clockwise rotation. If the angle is positive, it indicates clockwise rotation. (Negative from -- to positive: clockwise rotation) (Negative from -- to negative: counter-clockwise rotation) (Positive from -- to positive: clockwise rotation) (Positive from -- to negative: clockwise rotation) |
ToDegrees |
The Rotation Angle of an object can be greater than 360 degrees when the animation ends. |
PivotX Ty |
It is the starting position of the animation relative to the X and Y coordinates of the object. |
Note: The preceding two attribute values are from 0% to 100%. 50% indicates the point position on the X or Y coordinate of the object. |
The following is a complete XML definition (provided by the SDK)
How to Use Tween Animation
Use the static method loadAnimation () of the AnimationUtils class to load the animated XML file in XML.
// Main. in xml, ImageViewImageView spaceshipImage = (ImageView) findViewById (R. id. spaceshipImage); // load the Animation hyperspaceJumpAnimation = AnimationUtils. loadAnimation (this, R. anim. hyperspace_jump); // use ImageView to display the animated spaceshipImage. startAnimation (hyperspaceJumpAnimation );
How to define animations in Java code
// Define the Animation Instance Object private Animation myAnimation_Alpha; private Animation myAnimation_Scale; private Animation myAnimation_Translate; private Animation myAnimation_Rotate in the Code; // Initialize an instance object myAnimation_Alpha = new AlphaAnimation (0.1f, 1.0f) according to their respective constructor; myAnimation_Scale = new ScaleAnimation (0.0f, 1.4f, 0.0f, 1.4f, Animation. RELATIVE_TO_SELF, 0.5f, Animation. updated, 0.5f); myAnimation_Translate = new TranslateAnimation (30366f,-80366f, 30366f, 300366f); myAnimation_Rotate = new RotateAnimation (0.0f, + 350366f, Animation. RELATIVE_TO_SELF, 0.5f, Animation. RELATIVE_TO_SELF, 0.5f );
Explanation of interpolator
Interpolator defines the rate of change of an animation ). This allows the basic animation effects (alpha, scale, translate, and rotate) to accelerate, slow down, and repeat.
Interpolator defines the speed at which an animation changes, including constant speed, positive acceleration, negative acceleration, and irregular acceleration. Interpolator is a base class that encapsulates all the common methods of Interpolator. It has only one method, that is, getInterpolation (float input ), this method maps a point on the timeline to a multiplier to be applied to the transformations of an animation. Android provides several Interpolator subclasses to achieve different speed curves, as shown below:
AccelerateDecelerateInterpolator |
The speed changes are slow at the beginning of the animation and in the middle of the introduction. |
AccelerateInterpolator |
Speed changes are slow at the beginning of the animation and acceleration starts. |
CycleInterpolator |
Specifies the number of times the animation is played cyclically, and the speed changes along the sine curve. |
DecelerateInterpolator |
The speed changes slowly at the beginning of the animation, and then starts to slow down. |
LinearInterpolator |
Changes at an even rate in an animation |
Frame AnimationFrame Animation is an image prepared in advance for sequential playback, similar to a movie. Unlike the animation package, the Android SDK provides another class, AnimationDrawable, to define and use Frame Animation.
Frame Animation can be defined in XML Resource (or stored inRes \ animFolder), you can also useAPI definition in AnimationDrawable. Since Tween Animation and Frame Animation are very different, the XML definition format is also completely different. The format is:The first is the animation-list root node. The animation-list root node contains multiple item subnodes. Each item node defines an animation, the drawable resource of the current frame and the duration of the current frame.The following describes the elements of a node:
XML attributes |
Description |
Drawable |
Drawable resource referenced by the current frame |
Duration |
Display Time of the current frame (in milliseconds) |
Oneshot |
If it is true, the animation is played only once and stops at the last frame. If it is set to false, the animation is played cyclically. |
VariablePadding |
If true, allows the drawable's padding to change based on the current state that is selected. |
Visible |
Specifies the initial visibility of drawable. The default value is flase; |
The following is a specific XML example to define a frame-by-frame animation:
The XML above defines a Frame Animation, which contains three animations. Three animations apply three pictures in drawable: rocket_thrust1, rocket_thrust2, and rocket_thrust3, each animation lasts for 200 milliseconds.
Then we save the above XML inRes/anim/TextNamed rocket_thrust.xml in the folder to display the animation code:
AnimationDrawable rocketAnimation;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.anim.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground();}public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { rocketAnimation.start(); return true; } return super.onTouchEvent(event);}
Result of code execution: three images are played in sequence.
One thing to note is that the Code for starting the Frame Animation is rocketAnimation. start (); cannot be in OnCreate (), because in OnCreate (), AnimationDrawable is not completely bound to ImageView, And the animation is started in OnCreate, you can only see the first image. This is actually implemented in the drag event.
Next, let's take a look at the introduction to AnimationDrawable In the Android SDK:
AnimationDrawable |
Get and set animation attributes |
|
Int getDuration () |
Obtain the animation duration |
Int getNumberOfFrames () |
Get the number of animation Frames |
Boolean isOneShot () Void setOneShot (boolean oneshot) |
Get oneshot attributes Set the oneshot attribute |
Void inflate (Resurce r, XmlPullParser p, AttributeSet attrs) |
|
Add and retrieve frame animations |
Drawable getFrame (int index) |
Obtain the Drawable resource of a frame. |
Void addFrame (Drawable frame, int duration) |
Add frames for the current animation (resource, duration) |
Animation Control |
Void start () |
Start Animation |
Void run () |
You cannot directly drop the call. Use start () instead. |
Boolean isRunning () |
Whether the current animation is running |
Void stop () |
Stop current Animation |
Reference: Android SDK
Moandroid.com
Eoeandroid.com
161 you also like the following: android Service learning notes Android Activity and Intent mechanism learning notes Android Nine Patch pictures and button background Android style and theme Android process and thread Android Face Detection class FaceDetectZ tips? Http://www.bkjia.com/kf/ware/vc/ "target =" _ blank "class =" keylink "> vcgo8aW1nIGNsYXNzPQ =" wumii-image "src =" http://www.2cto.com/uploadfile/Collfiles/20150305/2015030510170673.png "alt =" \ "> Android processes are not associated with threads [?] Category: Android green channel: Follow my favorites to contact me with feisky
Follow-10
Fans-673 + followed by 140 (Please rate your article )? Previous Article: how to calculate the running time of the matlab program
? Next article: Study Notes on Android Network Connection Processing
Feedback #1 floor by the legendary Xiang Ge would like to ask the landlord, if an instance loads multiple animations, how to implement it using code?
For example:
You can use xml to implement gradient and screen position conversion as follows:
Xmlns: android = "http://schemas.android.com/apk/res/android"
Android: Required interpolator = "false"
>
Android: interpolator = "@ android: res/anim/accelerate_decelerate_interpolator"
Android: fromalphi = "0.0"
Android: toAlpha = "1.0"
Android: duration= "2000"
Android: repeatCount = "0"
>
Android: fromXDelta = "30"
Android: toXDelta = "-80"
Android: fromYDelta = "30"
Android: toYDelta = "300"
Android: duration= "2000"
/>
However, in code mode, how can I get an instance loaded with multiple animations?