Ошибка направления анимации сворачивания нижнего диалогового окна Android

#android #android-layout #android-animation #android-alertdialog #android-dialog

#Android #android-макет #android-анимация #android-alertdialog #android-диалог #android-dialog

Вопрос:

Я использую пользовательский нижний диалог, просто диалоговое окно, прикрепленное к нижней части экрана

вот код

https://github.com/javiersantos/BottomDialogs/blob/master/library/src/main/java/com/github/javiersantos/bottomdialogs/BottomDialog.java

Моя проблема в том, что когда я анимирую представление в этом диалоговом окне (свернуть / развернуть), в нижней части экрана появляется черный пробел, я просто хочу, чтобы нижняя часть диалогового окна была исправлена, а только верхняя часть диалогового окна изменилась.

Вот видео. https://youtu.be/bU3elAE-eBU

Я пробовал с разными анимациями, но получил тот же результат.

Анимации

 public class ViewAnimationUtils {

    public  static void expandOrCollapse(final View v,String exp_or_colpse) {
        TranslateAnimation anim = null;
        if(exp_or_colpse.equals("expand"))
        {
            anim = new TranslateAnimation(0.0f, 0.0f, -v.getHeight(), 0.0f);
            v.setVisibility(View.VISIBLE);
        }
        else{
            anim = new TranslateAnimation(0.0f, 0.0f, 0.0f, -v.getHeight());
            Animation.AnimationListener collapselistener= new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    v.setVisibility(View.GONE);
                }
            };

            anim.setAnimationListener(collapselistener);
        }

        // To Collapse
        //

        anim.setDuration(300);
        anim.setInterpolator(new AccelerateInterpolator(0.5f));
        v.startAnimation(anim);
    }

    public static void expand(final View v) {
        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final int targtetHeight = v.getMeasuredHeight();

        v.getLayoutParams().height = 0;
        v.setVisibility(View.VISIBLE);
        Animation a = new Animation()
        {
            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {
                v.getLayoutParams().height = interpolatedTime == 1
                        ? ViewGroup.LayoutParams.WRAP_CONTENT
                        : (int)(targtetHeight * interpolatedTime);
                v.requestLayout();
            }

            @Override
            public boolean willChangeBounds() {
                return true;
            }
        };

        a.setDuration(200);
        v.startAnimation(a);
    }

    public static void collapse(final View v) {
        final int initialHeight = v.getMeasuredHeight();

        Animation a = new Animation()
        {
            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {
                if(interpolatedTime == 1){
                    v.setVisibility(View.GONE);
                }else{
                    v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
                    v.requestLayout();
                }
            }

            @Override
            public boolean willChangeBounds() {
                return true;
            }
        };

        a.setDuration(100);
        v.startAnimation(a);
    }
}
  

вот xml

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        android:focusableInTouchMode="true"
        android:layout_gravity="bottom">

    <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none">

        <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent"
                                                           android:layout_height="wrap_content">


            <Button
                    android:layout_width="0dp"
                    android:layout_height="48dp"
                    android:textSize="16sp"
                    android:textColor="@color/hard_white"
                    android:lineSpacingExtra="10sp"
                    android:gravity="center"
                    android:text="@string/continuee"
                    android:elevation="2dp"
                    android:textAllCaps="false"
                    android:background="@drawable/radius_background_lipstick"
                    android:id="@ id/btn_login" app:layout_constraintEnd_toEndOf="parent"
                    android:enabled="false"
                    android:layout_marginEnd="16dp"
                    android:layout_marginRight="16dp"
                    app:layout_constraintStart_toStartOf="parent"
                    android:layout_marginLeft="16dp"
                    android:layout_marginStart="16dp"
                    app:fontFamily="@font/akkuratprobold"
                    app:layout_constraintHorizontal_bias="0.0"
                    android:layout_marginTop="36dp"
                    app:layout_constraintTop_toBottomOf="@ id/textView17"
                    app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp"/>

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="13sp"
                    android:textColor="#747474"
                    android:text="Pound Sterling"
                    app:fontFamily="@font/akkuratproregular"
                    android:id="@ id/textView17"
                    app:layout_constraintTop_toBottomOf="@ id/textView18" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    android:text="Cash amount"
                    app:fontFamily="@font/akkuratprobold"
                    android:id="@ id/textView18"
                    android:layout_marginTop="48dp"
                    app:layout_constraintTop_toBottomOf="@ id/textView19" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="15dp"
                    android:textSize="13sp"
                    android:textColor="#747474"
                    app:fontFamily="@font/akkuratproregular"
                    android:lineSpacingExtra="7sp"
                    android:text="Amount you’d like to buy"
                    android:id="@ id/textView19"
                    app:layout_constraintTop_toBottomOf="@ id/view" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                    android:layout_marginTop="12dp"/>
            <EditText
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:inputType="number"
                    android:ems="10"
                    android:gravity="center"
                    android:textSize="30sp"
                    android:background="#70FFFFFF"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="-4sp"
                    app:fontFamily="@font/akkuratproregular"
                    android:id="@ id/editText2"
                    android:text="100" app:layout_constraintEnd_toEndOf="@ id/btn_login"
                    android:layout_marginTop="8dp"
                    app:layout_constraintTop_toTopOf="@ id/textView18"
                    app:layout_constraintBottom_toBottomOf="@ id/textView17" app:layout_constraintVertical_bias="1.0"
                    app:layout_constraintStart_toEndOf="@ id/textView17" android:layout_marginStart="8dp"
                    android:layout_marginLeft="8dp" app:layout_constraintHorizontal_bias="1.0"/>

            <View android:layout_width="379dp" android:layout_height="1dp"
                  android:background="@color/greyish"
                  android:alpha="0.5"
                  android:id="@ id/view"
                  app:layout_constraintTop_toBottomOf="@ id/constraintLayout5"
                  android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
                  android:layout_marginLeft="8dp" android:layout_marginEnd="8dp"
                  app:layout_constraintEnd_toEndOf="parent"
                  android:layout_marginRight="8dp" android:layout_marginTop="16dp"/>

            <View android:layout_width="379dp" android:layout_height="1dp"
                  android:background="@color/greyish"
                  android:alpha="0.5"
                  android:id="@ id/view2"
                  app:layout_constraintTop_toBottomOf="@ id/imageView9"
                  android:layout_marginTop="12dp" android:layout_marginStart="8dp"
                  app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
                  android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
                  android:layout_marginRight="8dp"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    app:fontFamily="@font/akkuratprobold"
                    android:text="Order type"
                    android:id="@ id/textView20"
                    app:layout_constraintTop_toBottomOf="@ id/view2"
                    android:layout_marginTop="16dp" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>

            <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" android:layout_marginTop="8dp"
                    tools:layout_editor_absoluteX="0dp" app:layout_constraintTop_toBottomOf="@ id/textView20"
                    android:id="@ id/constraintLayout5"
                    android:visibility="gone">

                <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp" app:srcCompat="@drawable/ic_tick"
                        android:id="@ id/imageView13" app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginEnd="24dp" android:layout_marginRight="24dp"
                        app:layout_constraintTop_toTopOf="@ id/textView23"
                        app:layout_constraintBottom_toBottomOf="@ id/textView23"/>

                <TextView
                        android:layout_width="0dp"
                        android:layout_height="40dp"
                        android:gravity="center|left"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Cash"
                        android:id="@ id/textView23"
                        android:layout_marginEnd="16dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"
                        android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginLeft="16dp" app:layout_constraintHorizontal_bias="0.0"
                        android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"/>
                <TextView
                        android:layout_width="0dp"
                        android:layout_height="40dp"
                        android:gravity="center|left"
                        android:textSize="16sp"
                        android:textColor="#2d2d2d"
                        android:lineSpacingExtra="10sp"
                        app:fontFamily="@font/akkuratprobold"
                        android:text="Principal"
                        android:id="@ id/textView27"
                        android:layout_marginEnd="16dp"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="16dp"
                        android:layout_marginStart="16dp" app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginLeft="16dp" app:layout_constraintHorizontal_bias="0.0"
                        android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@ id/textView23"/>

            </androidx.constraintlayout.widget.ConstraintLayout>


            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    android:gravity="end"
                    app:fontFamily="@font/akkuratprobold"
                    android:text="Cash"
                    android:id="@ id/textView14"
                    app:layout_constraintTop_toBottomOf="@ id/view2"
                    android:layout_marginTop="16dp" app:layout_constraintEnd_toStartOf="@ id/imageView12"
            />


            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="13sp"
                    android:textColor="#747474"
                    android:gravity="center_horizontal"
                    app:fontFamily="@font/akkuratproregular"
                    android:text="Senior Secured"
                    android:id="@ id/textView21"
                    app:layout_constraintTop_toBottomOf="@ id/textView22" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="13sp"
                    android:textColor="#747474"
                    android:gravity="center_horizontal"
                    app:fontFamily="@font/akkuratproregular"
                    android:text="Order Type"
                    android:visibility="gone"
                    android:id="@ id/textView26"
                    app:layout_constraintTop_toBottomOf="@ id/view2" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"
                    android:layout_marginTop="12dp"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    android:lineSpacingExtra="10sp"
                    android:text="Company"
                    app:fontFamily="@font/akkuratprobold"
                    android:id="@ id/textView22"
                    android:layout_marginTop="16dp"
                    app:layout_constraintTop_toTopOf="parent" android:layout_marginStart="16dp"
                    app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="16dp"/>
            <ImageView
                    android:layout_width="40dp"
                    android:padding="5dp"
                    android:layout_height="40dp" app:srcCompat="@drawable/aston_martin_logo"
                    android:id="@ id/imageView9" android:layout_marginTop="8dp"
                    app:layout_constraintTop_toTopOf="@ id/textView22"
                    android:background="@drawable/radius_corner_grey"
                    app:layout_constraintBottom_toBottomOf="@ id/textView21" app:layout_constraintEnd_toEndOf="parent"
                    android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
                    app:layout_constraintVertical_bias="0.47"/>
            <ImageView
                    android:layout_width="25dp"
                    android:layout_height="25dp" app:srcCompat="@drawable/ic_down"
                    android:id="@ id/imageView12" app:layout_constraintEnd_toEndOf="parent"
                    android:layout_marginEnd="16dp" android:layout_marginRight="16dp"
                    app:layout_constraintTop_toTopOf="@ id/textView14"
                    app:layout_constraintBottom_toBottomOf="@ id/textView14"/>



        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>
  

Комментарии:

1. Возможно, попробуйте некоторые варианты заполнения: cogitolearning.co.uk/2013/10 /…

2. @Demonick Спасибо, но я пытался, и это не сработало.

3. Временное решение: вместо этого я использовал диалог прозрачной активности.