android – 如何在对角线上翻译图像上的动画?

前端之家收集整理的这篇文章主要介绍了android – 如何在对角线上翻译图像上的动画?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想对角线下的图像进行动画制作,如下图所示.我试过翻译动画,但我只能做平行的X轴或平行的Y轴.

但无法弄清楚如何对角地做到这一点.而且我也不确定是否可以通过翻译动画或其他类型的动画来完成.所以请建议我怎么做,或者如果有人能给我一个有用的链接,那么我也会被瞄准.@H_403_3@

解决方法

一种方法是使用AnimatorSet一起播放更多的ObjectAnimator.
  1. private void animateDiagonalPan(View v) {
  2. AnimatorSet animSetXY = new AnimatorSet();
  3.  
  4. ObjectAnimator y = ObjectAnimator.ofFloat(v,"translationY",v.getY(),targetY);
  5.  
  6. ObjectAnimator x = ObjectAnimator.ofFloat(v,"translationX",v.getX(),targetX);
  7.  
  8. animSetXY.playTogether(x,y);
  9. animSetXY.setInterpolator(new LinearInterpolator(1f));
  10. animSetXY.setDuration(300);
  11. animSetXY.start();
  12. }

或者您可以使用自定义视图和自定义属性,但在这种情况下,您需要自己计算X和Y的翻译:@H_403_3@

  1. final Property<YourView,Float> transProperty = new Property<YourView,Float>(
  2. float.class,"translation") {
  3. @Override
  4. public Float get(YourView) {
  5. return object.getTranslation();
  6. }
  7.  
  8. @Override
  9. public void set(YourView,Float value) {
  10. object.translate(value);
  11. }
  12. };
  13.  
  14. private void translate(float value){
  15. setTranslationX(value);
  16. setTranslationY(value);
  17. }

并使用它来动画:@H_403_3@

  1. private void animateDiagonalPan(View v) {
  2.  
  3. ObjectAnimator xy = ObjectAnimator.ofFloat(v,transProperty,targetValue);
  4.  
  5. xy.setInterpolator(new LinearInterpolator(1f));
  6. xy.setDuration(300);
  7. xy.start();
  8. }

猜你在找的Android相关文章