我使用ImageView
设置scaleX()
动画。这应该是一个从左到右填充的进度条。它在API 10,18和19上没有问题。但是在API 16上,setPivotX()
方法似乎存在问题。我已尝试NineOldAndroids: set view pivot中的所有选项。
final ImageView progressBarFill = (ImageView) getView().findViewById(R.id.progressbarImageFill);
//...
ViewHelper.setPivotX(progressBarFill, 0);
AnimatorProxy.wrap(progressBarFill).setPivotX(0);
animate(progressBarFill).setDuration(1000).scaleX(0.25f);
和
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(progressBarFill, "scaleX", 0f, 0.25f)
);
AnimatorProxy.wrap(progressBarFill).setPivotX(0.0f);
ViewHelper.setPivotX(progressBarFill, 0f);
set.setDuration(1000).start();
动画有效,但它从ImageView
的中心开始动画。任何人都可以证实这个问题吗?
更新
我也试过使用androids标准动画包:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
progressBarFill.setVisibility(View.VISIBLE);
progressBarFill.setPivotX(0);
progressBarFill.setPivotY(0);
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(progressBarFill, "scaleX", 0f, 0.25f)
);
set.setDuration(2000).start();
}
但是仍然无法在Android API 16上运行。因此问题不仅与NineOldAndroids库有关,而且与标准动画函数有关。
答案 0 :(得分:3)
事实证明,在API 16中将枢轴X设置为0并不会很好。因此,要在视图progressBarFill.setPivotX(1);
中将枢轴设置在最左侧,效果会好很多。