0
有誰知道如何在Android上實現平滑寬度更改動畫?我已經通過自定義Animation類或者ValueAnimator + AnimatorUpdateListener檢查了幾個例子,但是他們的工作並不順利,特別是當同時有幾個額外的動畫處理時。Android平滑寬度更改動畫
任何想法?謝謝
我使用下一個代碼來動畫列表中的項目(即使4個項目也不平滑),有時也會與它們發生動畫,並且從上到下翻譯視圖 - 並且它也不平滑(但如果沒有列表項的寬度變化的翻譯動畫作品 - 這是光滑):
public void showDragHold() {
isOnDrag = true;
int width = -1;
int duration = 0;
LinkedList<Animator> valueAnimators = new LinkedList<Animator>();
for (View view : views) {
View dragView = view.findViewById(R.id.list_handle_drag);
if (width < 0) {
width = dragView.getResources().getDimensionPixelSize(R.dimen.drag_width);
duration = dragView.getResources().getInteger(R.integer.anim_fast_duration);
}
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, width);
valueAnimator.addUpdateListener(new ResizeUpdateAnimator(dragView));
valueAnimators.add(valueAnimator);
}
if (!valueAnimators.isEmpty()) {
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(valueAnimators);
animatorSet.setDuration(duration);
animatorSet.start();
}
}
private static final class ResizeUpdateAnimator implements ValueAnimator.AnimatorUpdateListener {
private View view;
public ResizeUpdateAnimator(View view) {
this.view = view;
}
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
final int newWidth = (Integer) valueAnimator.getAnimatedValue();
view.getLayoutParams().width = newWidth;
view.requestLayout();
}
}
ObjectAnimator(ValueAnimator)非常流暢。你可以展示一些你如何使用它們的例子嗎?另外,你在什麼操作系統級別? – JRomero
我已編輯帖子瞭解更多詳情 – alexkipar