我正在使用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的中心动画。有人能证实这个问题吗?
更新
我也尝试过使用机器人标准动画包:
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 16上仍然不起作用。因此,这个问题不仅与NineOldAndroids库有关,而且还与标准的动画功能有关。
发布于 2014-10-31 09:49:42
在API 16中,将枢轴X设置为0并不是很好。因此,在视图中将枢轴设置到最左边的时候,progressBarFill.setPivotX(1);的效果要好得多。
https://stackoverflow.com/questions/26658124
复制相似问题