【问题标题】:Toggle button element fades but suddenly reappears after animation is finished [duplicate]切换按钮元素消失但在动画完成后突然重新出现[重复]
【发布时间】:2019-10-06 10:02:04
【问题描述】:

我正在一个 android 应用程序上创建一个 UI。当我调用 view.startAnimation(anim) 时。它会根据需要淡化按钮,但一旦动画结束从 1 -> 0 插入 alpha,它就会重新出现。我假设 alpha 重置为其原始值。我不确定我错过了什么。

我正在使用最新的 android api,并在 Galaxy s9 物理设备上进行测试。

我已经调查了以下页面以尝试解决我的问题,一个是 youtube 教程,另一个是堆栈溢出回答的问题。 https://www.youtube.com/watch?v=x6QS6m1pYMs Fade In Fade Out Android Animation in Java

我已将所有内容设置如下, xmls:

    <ToggleButton
        android:id="@+id/my_button_toggle"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|right"
        android:gravity="center" />

    <Button
        android:id="@+id/my_button"
        android:textSize="12dp"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|center"/>

上面是在 FrameLayout 内部定义的,在它之前定义了一个片段。

set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:id="@+id/fade_out"
        android:duration="500"
        android:fromAlpha="1.0" android:toAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fillAfter="true" />
</set>

与调用 Java 像这样放在一起..

//global
ToggleButton togglebutton;
Button button;

void hideUI(){
    fade(togglebutton);
    fade(button);
}

void fade(View view){
    Button fadingButton = (Button) view;
        Animation fadeOutAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_out);
        fadingButton.startAnimation(fadeOutAnimation);
}

【问题讨论】:

    标签: java android user-interface alpha


    【解决方案1】:

    尝试添加:

    fadeOutAnimation.setFillAfter(true);
    

    开始动画后。

    像这样:

    void fade(View view){ 
        Button fadingButton = (Button) view;             
        Animation fadeOutAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_out);         
        fadingButton.startAnimation(fadeOutAnimation); 
        fadeOutAnimation.setFillAfter(true);
    }
    

    编辑:

    没关系,我看到你确实在你的 xml 中添加了它。

    看看这里:

    Android: Animation Position Resets After Complete

    【讨论】:

    • 感谢您的回复!很快。
    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多