- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我经常使用 ViewPropertyAnimator 并使用它的 withEndAction() 函数设置结束 Action ,例如:
view.animate().translationY(0).withEndAction(new Runnable() {
@Override
public void run() {
// do something
}
}).start();
但您也可以设置结束 Action 设置特殊监听器,例如:
view.animate().translationY(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
// do something
}
});
那么这两种方法有什么区别,什么时候应该使用它们呢?
最佳答案
没有太大区别,看看souce code .
两者都在 onAnimationEnd
上执行。
但是 runnable 在启动后会被删除。所以 Runnable 只执行一次,而 Listener 可能会被调用多次。
@Override
public void onAnimationEnd(Animator animation) {
mView.setHasTransientState(false);
if (mListener != null) {
mListener.onAnimationEnd(animation); // this is your listener
}
if (mAnimatorOnEndMap != null) {
Runnable r = mAnimatorOnEndMap.get(animation); // this is your runnable
if (r != null) {
r.run();
}
mAnimatorOnEndMap.remove(animation);
}
if (mAnimatorCleanupMap != null) {
Runnable r = mAnimatorCleanupMap.get(animation);
if (r != null) {
r.run();
}
mAnimatorCleanupMap.remove(animation);
}
mAnimatorMap.remove(animation);
}
关于android animate() withEndAction() vs setListener() onAnimationEnd(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34152421/
以下示例中的内存泄漏。 1.SpeedHelper.java: public class SpeedHelper { interface Listener { void OnS
我的测试类有一些依赖项。所有这些都提供 setListener() 作为从其非阻塞操作接收通知的方式。 我实现了一个阻塞方法,该方法聚合所有非阻塞操作的结果。这意味着我必须使用此类 setListen
我正在尝试将一些 Java 代码移植到 C# 中。其中 CW 是扩展 View 的类。 OnSelectedListener 是一个以 Cselected 作为方法的接口(interface),该方法
我经常使用 ViewPropertyAnimator 并使用它的 withEndAction() 函数设置结束 Action ,例如: view.animate().translationY(0).w
我正在尝试使用Intellij调试Grails项目(来自其他开发人员),并遇到以下错误: ERROR org.codehaus.groovy.grails.web.context.GrailsCont
我是一名优秀的程序员,十分优秀!