【发布时间】:2014-05-25 20:33:43
【问题描述】:
我在整个视图的点击监听器中有以下代码:
float newPosition = value / MAX_VALUE * scaleWidth; // value is float
ObjectAnimator a = ObjectAnimator.ofFloat(indicatorView, "translationX", indicatorView.getTranslationX(), newPosition);
a.setDuration(2000);
a.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
Log.e("test", "start");
}
@Override
public void onAnimationEnd(Animator animation) {
Log.e("test", "end");
}
@Override
public void onAnimationCancel(Animator animation) {
Log.e("test", "cancel");
}
@Override
public void onAnimationRepeat(Animator animation) {
Log.e("test", "repeat");
}
});
a.start();
无论我做什么,无论我设置的持续时间如何,动画都不会播放,移动的视图只是移动到新的(虽然是正确的)位置。日志输出如下所示:
05-25 12:46:22.477: ERROR/test(2266): start
05-25 12:46:22.477: ERROR/test(2266): end
这意味着动画在它开始后立即完成。我在 4.4.2 设备上测试代码,清单中的最小和目标 SDK 是 19。我没有使用 NineOldAndroids。我正在尝试遵循本教程:http://cogitolearning.co.uk/?p=1290,它显然似乎在工作。
我对这行代码也有同样的问题:
indicatorView.animate().translationX(newPosition).setDuration(2000).start();
这是布局 XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scale"
android:layout_marginLeft="50dp"
android:layout_marginTop="100dp"
android:layout_width="500dp"
android:layout_height="75dp"
android:background="@android:color/holo_red_light">
<ImageView
android:id="@+id/indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/indicator" />
</FrameLayout>
有什么帮助吗?
编辑:我下载了上述项目并进行了构建,但那里的动画似乎都不适合我,在互联网上找到的任何代码 sn-ps 都不起作用。在我看来,我的手机出了点问题。
【问题讨论】: