我想对角线下的图像进行动画制作,如下图所示.我试过翻译动画,但我只能做平行的X轴或平行的Y轴.
但无法弄清楚如何对角地做到这一点.而且我也不确定是否可以通过翻译动画或其他类型的动画来完成.所以请建议我怎么做,或者如果有人能给我一个有用的链接,那么我也会被瞄准.@H_403_3@
解决方法
一种方法是使用AnimatorSet一起播放更多的ObjectAnimator.
- private void animateDiagonalPan(View v) {
- AnimatorSet animSetXY = new AnimatorSet();
- ObjectAnimator y = ObjectAnimator.ofFloat(v,"translationY",v.getY(),targetY);
- ObjectAnimator x = ObjectAnimator.ofFloat(v,"translationX",v.getX(),targetX);
- animSetXY.playTogether(x,y);
- animSetXY.setInterpolator(new LinearInterpolator(1f));
- animSetXY.setDuration(300);
- animSetXY.start();
- }
或者您可以使用自定义视图和自定义属性,但在这种情况下,您需要自己计算X和Y的翻译:@H_403_3@
- final Property<YourView,Float> transProperty = new Property<YourView,Float>(
- float.class,"translation") {
- @Override
- public Float get(YourView) {
- return object.getTranslation();
- }
- @Override
- public void set(YourView,Float value) {
- object.translate(value);
- }
- };
- private void translate(float value){
- setTranslationX(value);
- setTranslationY(value);
- }
并使用它来动画:@H_403_3@
- private void animateDiagonalPan(View v) {
- ObjectAnimator xy = ObjectAnimator.ofFloat(v,transProperty,targetValue);
- xy.setInterpolator(new LinearInterpolator(1f));
- xy.setDuration(300);
- xy.start();
- }