Quando si esegue questo codice all'interno della visualizzazione personalizzata, onAnimationStart
e onAnimationEnd
vengono richiamati ripetutamente. Non è strano? Come programmatore Android, mi aspettavo che fossero chiamati solo una volta rispettivamente.Impossibile rimuovere l'ascoltatore di ViewPropertyAnimator
final ViewPropertyAnimator animator = animate().setDuration(1000).alpha(0.0f); animator.setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { Utils.log("----------------start"); } @Override public void onAnimationEnd(Animator animation) { Utils.log("--------- end"); } }).start();
Ma poi ho cercato di risolvere il problema rimuovendo l'ascoltatore quando onAnimationEnd
viene chiamato da s setListener(null)
ViewPropertyAnimator
', ma non ha mai funzionato, nonostante ciò che è scritto nei documenti:
public ViewPropertyAnimator setListener (Animator.AnimatorListener listener)
Added in API level 12
Sets a listener for events in the underlying Animators that run the property animations.
Parameters
listener The listener to be called with AnimatorListener events. A value of null removes any existing listener.
Returns
This object, allowing calls to methods in this class to be chained.
Qualcun altro ha incontrato questo strano problema? forse è un bug di Android?
dove si chiama animator.start()? – pskink
all'interno della mia vista personalizzata, btw, in realtà penso di non aver nemmeno bisogno di chiamarlo, l'animazione sarà avviata dalla prossima opportunità (forse il prossimo fotogramma). L'ho letto da qualche parte nei documenti – Leo
che cosa significa "all'interno della mia vista personalizzata"? quale metodo? – pskink