Animate an Object With a Custom Interpolator in Xamarin.Android
Today we're gonna make a simple scale animation with a Custom Interpolator, look the code
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Animation;
using Android.Views.Animations;
namespace HeartBeat
{
[Activity (Label = "HeartBeat", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
//SetContentView (Resource.Layout.Main);
ImageView img = new ImageView (this);
//set heart image to imageview
img.SetImageResource (Resource.Drawable.Heart);
//Set the imageview as a content view
SetContentView (img);
//Create an action
Action act = new Action (() => {
//Create an instance of our custom interpolator
customInterpolator i = new customInterpolator ();
//Create an Scale Animation(fromX,toX,fromY,toY,pivotX,pivotY)
ScaleAnimation anim = new ScaleAnimation (1, 1.2f, 1, 1.2f, img.Width / 2, img.Height / 2);
//Set repeat count to infinite
anim.RepeatCount = Animation.Infinite;
//Set the animation duration
anim.Duration = 750;
//Set the animation custom interpolator
anim.Interpolator = i;
//Attach our Custom Scale Animation to the imageview
img.StartAnimation (anim);
});
//Post the action to the imageview
img.Post (act);
}
}
//Custom interpolator implementing Java Object class and IInterpolator interface
public class customInterpolator:Java.Lang.Object, IInterpolator
{
//implement the GetInterpolation Method from IInterpolator Interface
public float GetInterpolation (float input)
{
float x = input < 1/3f? 2 * input : (1 + input) / 2;
return (float) Math.Sin(x * Math.PI);
}
}
}
Now you can see the result
Full Code at GitHub: https://github.com/AlejandroRuiz/Mono/tree/master/HeartBeat
If you have a question feel free to ask me



Comentarios
Publicar un comentario