对调
实现上述功能代码很简单,如下:
private ObjectAnimator leftAnimator, rightAnimator; private void changeText(View tvFrom, View tvTo) { float distance = tvTo.getX() - tvFrom.getX(); float textWidth = tvFrom.getWidth() - tvTo.getWidth(); if (distance < 0) { distance = Math.abs(distance); float otherDistance = distance - Math.abs(textWidth); if (textWidth > 0) { otherDistance = distance + textWidth; } leftAnimator = ObjectAnimator.ofFloat(tvFrom, "translationX", otherDistance, 0); rightAnimator = ObjectAnimator.ofFloat(tvTo, "translationX", -distance, 0); } else { float otherDistance = distance + Math.abs(textWidth); if (textWidth > 0) { otherDistance = distance - textWidth; } leftAnimator = ObjectAnimator.ofFloat(tvFrom, "translationX", 0, distance); rightAnimator = ObjectAnimator.ofFloat(tvTo, "translationX", 0, -otherDistance); } leftAnimator.setDuration(500); leftAnimator.start(); rightAnimator.setDuration(500); rightAnimator.start(); rightAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { startAnimal = false; } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); }
需要注意的是,如果是简单的展示就没什么问题了,但是如果是要对转换后进行 *** 作的话还要想到这个转换其实是将整个控件也掉位置了,不仅仅只是显示效果而已。需要处理对应的逻辑。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)