Android scale animation
Scale the image 3 times bigger.
The first two params 1f, 3.0f says the width starts from the original length and ends with 3 times longer in length.
The secone two params 1f, 3.0f says the height starts from the original length and ends with 3 times longer in length.
The last two params ivWheel.getWidth() / 2.0f, ivWheel.getHeight() / 2.0f, indicates the povit point of the scaleing, in this case, the scaling goes from the center of the image and scale outwards.
[code language=”java”]
ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 3.0f, 1f, 3.0f, ivWheel.getWidth() / 2.0f, ivWheel.getHeight() / 2.0f);
scaleAnimation.setDuration(3000); // scale to 3 times as big in 3 seconds
scaleAnimation.setInterpolator(this, android.R.interpolator.accelerate_decelerate);
ivWheel.startAnimation(scaleAnimation);
scaleAnimation.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {
Log.d("ScaleActivity", "Scale started…");
}
public void onAnimationEnd(Animation animation) {
Log.d("ScaleActivity", "Scale ended…");
}
public void onAnimationRepeat(Animation animation) {
}
});
[/code]
activity_scale.xml, the layout file for the scale animation demo.
[code language=”xml”]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_rotate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Scale"
android:onClick="scale"/>
<ImageView
android:id="@+id/iv_wheel"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="100dp"
android:layout_gravity="center"
android:src="@drawable/wheel_image" />
</LinearLayout>
[/code]
ScaleActivity.java, the activity file for the scale animation demo.
[code language=”java”]
public class ScaleActivity extends AppCompatActivity {
private ImageView ivWheel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scale);
ivWheel = (ImageView) findViewById(R.id.iv_wheel);
}
public void scale(View v) {
ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 3.0f, 1f, 3.0f, ivWheel.getWidth() / 2.0f, ivWheel.getHeight() / 2.0f);
scaleAnimation.setDuration(3000); // scale to 3 times as big in 3 seconds
ivWheel.startAnimation(scaleAnimation);
scaleAnimation.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationEnd(Animation animation) {
Log.d("ScaleActivity", "Scale started…");
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
Log.d("ScaleActivity", "Scale ended…");
}
});
}
/**
* Constructor to use when building a ScaleAnimation from code
*
* @param fromX Horizontal scaling factor to apply at the start of the
* animation
* @param toX Horizontal scaling factor to apply at the end of the animation
* @param fromY Vertical scaling factor to apply at the start of the
* animation
* @param toY Vertical scaling factor to apply at the end of the animation
* @param pivotX The X coordinate of the point about which the object is
* being scaled, specified as an absolute number where 0 is the left
* edge. (This point remains fixed while the object changes size.)
* @param pivotY The Y coordinate of the point about which the object is
* being scaled, specified as an absolute number where 0 is the top
* edge. (This point remains fixed while the object changes size.)
*/
// public ScaleAnimation(float fromX, float toX, float fromY, float toY,
// float pivotX, float pivotY)
}
[/code]
Search within Codexpedia
Search the entire web