Android:是否有视图的 .TranslationX() 更改侦听器

Dil*_*rla 5 animation android

我的布局中有一个按钮。我正在使用 ObjectAnimator 和 translationX 动画为该按钮的位置设置动画。

ObjectAnimator btnAnimator = ObjectAnimator.ofFloat(myBtn, "translationX", 
        ViewHelper.getTranslationX(myBtn), 0);

btnAnimator.addListener(new AnimatorListener() {
    @Override
    public void onAnimationCancel(Animator arg0) {}

    @Override
    public void onAnimationEnd(Animator arg0) {
        Log.i("TAG","Animation Finished");
    }

    @Override
    public void onAnimationRepeat(Animator arg0) {}

    @Override
        public void onAnimationStart(Animator arg0) {}
});
btnAnimator.setDuration(animationSpeed).start();
Run Code Online (Sandbox Code Playgroud)

现在,我想为该按钮的 TranslationX 设置一个侦听器,以便在按钮的 TranslationX 位置发生变化时进行通知。

小智 1

两种可能的方法:

1) 重写视图中的onLayout()以手动比较和检测位置变化。

2)在你的视图上使用onLayoutChangeListener:

button.addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
                    int oldTop, int oldRight, int oldBottom) {
        // Check your new position vs the old one
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 当translationX改变时,onLayout不会被调用 (2认同)