찾다

 >  Q&A  >  본문

android - fragment设置关于translationY属性的objectAnimator属性动画

在给fragment设置关于translationY属性的objectAnimator属性动画时,如果valueFrom的值大于等于fragment的高度时(下面代码中的第一个动画),fragment的这个动画不能在activity上显示出来,当valueFrom的值小于fragment的高度时,fragment的这个动画就能在activity上正常显示。请问为何会出现这种情况。
fragment设置动画的代码:

@Override
    public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
        Animator anim;
        if (enter) {
            anim = ObjectAnimator.ofFloat(mRootView, "translationY", mRootView.getHeight(), 0).setDuration(2000);
        } else {
            anim = ObjectAnimator.ofFloat(mRootView, "translationY", 0, mRootView.getHeight()-1).setDuration(2000);
        }

        return anim;
    }

fragment的mRootView的layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:background="@drawable/bg_white"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <ImageView
        android:layout_marginLeft="30dp"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="15dp"
        android:layout_marginRight="40dp"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:src="@drawable/icon_navigation"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="@string/app_name"
        android:id="@+id/location_txv"
        android:gravity="center_vertical"
        android:textSize="16sp"/>
</LinearLayout>
PHP中文网PHP中文网2802일 전830

모든 응답(2)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-17 17:26:39

    translationY를 y로 바꾸고 살펴보세요.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:26:39

    현재까지 해결책을 찾았습니다. 이 문제는 활동의 레이아웃과 관련된 것으로 보입니다.
    활동 레이아웃:

    으아아아

    액티비티 레이아웃에서는 버튼과 imageView의 높이를 설정했습니다. imageView와 화면 하단 사이의 공간인 ayout_marginBottom="85dp"는 비어 있다고 할 수 있습니다(이런 의미). 표현하기가 어렵습니다.) 현재 해결 방법은 이 공간 하단에 1dp 높이의 보기를 추가하는 것입니다.

    으아아아

    이것을 추가하고 나면 valueFrom 값이 높이보다 크거나 같아도 애니메이션이 정상적으로 표시될 수 있는데 왜 이런 뷰를 추가하지 않으면 안되는지 모르겠습니다. 프래그먼트를 저장하는 프레임 레이아웃은 위에서 언급한 대로 "빈" 공간에 있으므로 표시할 수 없습니다. 이 과정이 소스코드에 어떻게 그려져 있는지는 모르겠지만, 답변을 얻고 싶습니다.

    회신하다
    0
  • 취소회신하다