2014-10-30 3 views
1

Я анимирую ImageView используя scaleX(). Предполагается, что это будет индикатор выполнения, который заполняется слева направо. Он работает без проблем на API 10, 18 и 19. Но на API 16, похоже, проблема с методом setPivotX(). Я пробовал каждый вариант в NineOldAndroids: set view pivot.setPivotX не работает на android 4.1.1 NineOldAndroids

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. Может ли кто-нибудь подтвердить эту проблему?

UPDATE

Я пытался использовать андроид стандартного пакет анимации, а также:

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(); 
} 

Но до сих пор не работает на андроид API 16. Таким образом, проблема не только связанный с NineOldAndroids но и стандартную функцию анимации.

ответ

3

Оказывается, что настройка поворота X на 0 не очень хорошо сходится в API 16. Таким образом, чтобы установить поворот налево в окне progressBarFill.setPivotX(1);, работа была намного лучше.

Смежные вопросы