【问题标题】:Android - Rotate Object along Y-AxisAndroid - 沿 Y 轴旋转对象
【发布时间】:2014-03-03 06:52:37
【问题描述】:

我的应用中有一个 TextView,我希望它从左边缘沿 Y 轴旋转。

使用此代码,

<rotate 
    android:fromDegrees="90"
    android:toDegrees="0"
    android:pivotX="0%"
    android:pivotY="0%"
    android:duration="2000" />

我可以让它沿左边缘旋转,但它不会沿 Y 轴移动。

但是,当我使用 objectAnimator 时,它确实使用它的 rotationY 属性沿 Y 轴移动,但是我无法设置值 pivotXpivotY 使其沿中心而不是从左边缘旋转。

如何同时实现这两件事?

请帮帮我!!

提前致谢。

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

    从 android 检查这个 card flip animation。 基本上你定义4个动画并设置动画顺序

        getFragmentManager()
            .beginTransaction()
            .setCustomAnimations(
                    R.animator.card_flip_right_in, R.animator.card_flip_right_out,
                    R.animator.card_flip_left_in, R.animator.card_flip_left_out)
            .replace(R.id.container, new CardBackFragment())
            .addToBackStack(null)
            .commit();
    

    您可能想要更改角度和“valueFrom”、“valueTo”属性以满足您的需要。

    【讨论】:

    • 过渡动画和视图旋转有区别
    • @grytrn for fragment 谷歌开发者给出的卡片翻转动画也存在一些问题。只有即将到来的片段的入口旋转播放,而当前片段的退出动画不开始。它只是让当前的片段不可见,并且只播放入口片段。
    【解决方案2】:

    要从左边缘旋转视图,请尝试使用以下视图属性。

    android:transformPivotX = "0dp"
    

    这将从左边缘旋转您的视图。

    【讨论】:

    • 旋转将在 XY 平面上,这不是 OP 想要的
    【解决方案3】:

    您可以使用 setRotationY() 方法绕 y 轴旋转。

    ValueAnimator lockAnimator = ValueAnimator.ofFloat(0, 1);     // value from 0 to 1
    lockAnimator.setDuration(ANIMATION_DURATION);
    lockAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator pAnimation) {
            float value = (Float) (pAnimation.getAnimatedValue());
            textView.setRotationY(180 * value);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多