I've a ViewFlipper component that is flipping automatically, and I want to handle the event in wich the component does a transition between the current View and the next. Is it possible?
Thanks.
mViewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
mViewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
mViewFlipper.getAnimation().setAnimationListener(this);
mViewFlipper.startFlipping();
And this is the log:
02-16 14:27:50.860: E/AndroidRuntime(7961): FATAL EXCEPTION: main 02-16 14:27:50.860: E/AndroidRuntime(7961): Process: com.idiadasample, PID: 7961 02-16 14:27:50.860: E/AndroidRuntime(7961): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.idiadasample/com.idiada.activity.ViewFlipperActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.animation.Animation.setAnimationListener(android.view.animation.Animation$AnimationListener)' on a null object reference 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread.access$800(ActivityThread.java:144) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.os.Handler.dispatchMessage(Handler.java:102) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.os.Looper.loop(Looper.java:135) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread.main(ActivityThread.java:5221) 02-16 14:27:50.860: E/AndroidRuntime(7961): at java.lang.reflect.Method.invoke(Native Method) 02-16 14:27:50.860: E/AndroidRuntime(7961): at java.lang.reflect.Method.invoke(Method.java:372) 02-16 14:27:50.860: E/AndroidRuntime(7961): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 02-16 14:27:50.860: E/AndroidRuntime(7961): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 02-16 14:27:50.860: E/AndroidRuntime(7961): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.animation.Animation.setAnimationListener(android.view.animation.Animation$AnimationListener)' on a null object reference 02-16 14:27:50.860: E/AndroidRuntime(7961): at com.idiada.activity.ViewFlipperActivity.onCreate(ViewFlipperActivity.java:89) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.Activity.performCreate(Activity.java:5933) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 02-16 14:27:50.860: E/AndroidRuntime(7961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 02-16 14:27:50.860: E/AndroidRuntime(7961): ... 10 more
You can add animation and listen to animation events as suggested in this answer:
viewFlipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {}
public void onAnimationRepeat(Animation animation) {}
public void onAnimationEnd(Animation animation) {}
});
Set animation:
viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.fade_in));
viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.fade_out));