Скользящая анимация не работает правильно - PullRequest
0 голосов
/ 24 мая 2018

У меня есть один Linearlayout. Вот мой код xml

      <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>

Я ставлю перед собой цель создать анимацию снизу вверх. Я написал некоторый код, но анимация работает неправильно.Вот мой код Java.В методе onCreate действия

 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);

            }

        });
    }

Моя цель - начать другое действие, как только анимация закончится

 public void startActivity(Class<?> cls) {
    Intent intent = new Intent(this, cls);
    startActivity(intent);
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}

Но через 4 секунды, когда анимация закончилась, новое действие не работает сразу. Есть ли способ ускорить вызов нового действия?

1 Ответ

0 голосов
/ 24 мая 2018

Попробуйте использовать это:

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

Код в kotlin, но вы можете легко конвертировать его

...