按钮展开动画出现在其他元素下方

时间:2019-06-30 16:12:15

标签: android android-animation

所以我有一个自定义键盘,并且每个按钮都有扩展动画,但是当按下一个按钮时,某些按钮的扩展动画发生在其他按钮的下方:enter image description here

这是我的按钮的外观。

        <Button
            android:text="т"
            android:layout_width="0dp"
            android:background="@drawable/cell_keyboard"
            android:textColor="@color/keyboard_text_color"
            android:layout_height="@dimen/keyboard_button_height"
            android:onClick="@{(v)-> onClickListener.onKeyboardInput(v)}"
            android:stateListAnimator="@animator/button_large_expand_animation"
            android:id="@+id/button7"
            app:layout_constraintStart_toEndOf="@+id/button4" app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintEnd_toStartOf="@+id/button12"
            app:layout_constraintTop_toTopOf="@+id/button13"
            app:layout_constraintBottom_toBottomOf="@+id/button13" android:textAlignment="center"/>

这是动画:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_enabled="true"
    android:state_pressed="true">
    <set>
        <objectAnimator
            android:duration="100"
            android:propertyName="scaleX"
            android:valueTo="1.5"
            android:valueType="floatType" />
        <objectAnimator
            android:duration="100"
            android:propertyName="scaleY"
            android:valueTo="1.5"
            android:valueType="floatType" />
    </set>
</item>
<!-- base state -->
<item android:state_enabled="true">
    <set>
        <objectAnimator
            android:duration="200"
            android:propertyName="scaleX"
            android:startDelay="100"
            android:valueTo="1"
            android:valueType="floatType" />
        <objectAnimator
            android:duration="200"
            android:propertyName="scaleY"
            android:startDelay="100"
            android:valueTo="1"
            android:valueType="floatType" />
    </set>
</item>
<item>
    <set>
        <objectAnimator
            android:duration="0"
            android:propertyName="scaleX"
            android:valueTo="1"
            android:valueType="floatType" />
        <objectAnimator
            android:duration="0"
            android:propertyName="scaleY"
            android:valueTo="1"
            android:valueType="floatType" />
    </set>
</item>

我尝试过的事情:

    button.rootView.bringToFront()
    button.rootView.requestFocusFromTouch()

我不知道如何解决此问题,将不胜感激。

编辑 好的我更新了一点 button.rootView.bringToFront()button.bringToFront()android:stateListAnimator="@animator/button_large_expand_animation"一起使用,但在动画结束后才出现。因此,当您第一次单击该按钮时,动画位于其他元素下方,但是再次单击时,动画位于这些元素上方,因为我正在使用 m=df1[['Feature']].merge(df2[['Feature']],how='outer',indicator=True) 你们是否有一个想法,如何在不向所有按钮添加动画侦听器和在onAnimationStart()中执行BringToFront()的情况下执行此操作。

1 个答案:

答案 0 :(得分:0)

尝试将elevation objectAnimator添加到您的stateListAnimator

(提升状态的示例值;您可能需要调整valueTo值)

<objectAnimator
    android:duration="200"
    android:propertyName="elevation"
    android:valueTo="6dp"
    android:valueType="floatType" />