向上滑动动画不正常工作

时间:2018-05-24 08:31:23

标签: android android-animation android-linearlayout

我有一个Linearlayout.Here是我的xml代码

{ 
      MaximumDays: null,
      MaximumDaysApplied: '',
      MinimumDays: null,
      MinimumDaysApplied: '',
      ProductCategories: null,
      ProductCategoryApplied: '',
      ProductItems: [],
      ProductSubCategories: null,
      ProductSubCategoryApplied: '',
      StartingLocations: null,
      TotalRows: 0 
}

我的目标是创建自下而上的动画。我写了一些代码,但动画无法正常工作。这是我的java代码。 在Activity的onCreate方法

      <LinearLayout
                xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:orientation="vertical"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="-4dp">


                <android.support.v4.widget.NestedScrollView
                    android:id="@+id/scrollView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:fillViewport="true">
                <LinearLayout
                    android:id="@+id/paper_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:focusableInTouchMode="true"
                    android:background="#ffffff"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="26dp"
                        android:src="@mipmap/ic_app_icon" />


                    <TextView
                        android:id="@+id/company_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:gravity="center"
                        android:paddingLeft="16dp"
                        android:paddingRight="16dp"
                        android:singleLine="true"
                        android:text="Company Name"
                        android:textColor="@android:color/black"
                        android:textSize="30dp" />

                    <TextView
                        android:id="@+id/company_address"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp"
                        android:gravity="center"
                        android:paddingLeft="16dp"
                        android:paddingRight="16dp"
                        android:singleLine="true"
                        android:text="Company Address"
                        android:textColor="@android:color/black"
                        android:textSize="14dp" />

                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/recyclerView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="6dp"
                        android:layout_marginRight="6dp"
                        android:layout_marginTop="10dp"
                        android:focusableInTouchMode="false"
                        android:listSelector="#00000000"
                        android:overScrollMode="never"
                        android:scrollbars="none" />

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right"
                        android:layout_marginRight="15dp"
                        android:layout_marginTop="10dp"
                        android:src="@mipmap/test_img" />

                    <View
                        android:layout_width="match_parent"
                        android:layout_height="16dp" />
                </LinearLayout>
                </android.support.v4.widget.NestedScrollView>
            </LinearLayout>

我尝试像这样开始动画

 slide = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,
            Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
            0.0f, Animation.RELATIVE_TO_SELF, -5.0f);
    slide.setDuration(4000);
    slide.setFillAfter(true);
    slide.setFillEnabled(true);

我的目标是在动画完成后立即开始另一项活动

 if (slide != null) {
        linearLayout.startAnimation(slide);
        slide.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                linearLayout.clearAnimation();
                startActivity(MainActivity.class);

            }

        });
    }

但是,4秒后,当动画结束时,新的活动不会立即起作用。是否可以加快调用新活动的速度?

1 个答案:

答案 0 :(得分:0)

尝试使用:

val animation = ObjectAnimator.ofFloat(layout, "translationY", 440f)
animation.duration = 4500
animation.interpolator = LinearInterpolator()
animation.addListener(AnimatorListenerAdapter() {
  //animation end is here
  // TODO
})

代码在kotlin中,但您可以轻松转换它