android - Android 中状态更改时的按钮动画

标签 android android-animation

嗨,我有一个具有启用状态和禁用状态的按钮。最初它将处于禁用状态,如下所示

Disabled State

在特定时间我需要启用它,如下所示

Enabled State

我想动画化这个状态变化

这是我的无效绘图:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/transparent" />
    <corners android:radius="2dp" />
    <stroke
        android:width="1dp"
        android:color="#FFFFFF" />
</shape>

下面是我的启用状态:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFFFFF" />
    <corners android:radius="2dp" />
    <stroke
        android:width="1px"
        android:color="#FFFFFF" />
</shape>

如何在事件触发器上动画化此状态更改?

最佳答案

能够使用TransitionDrawable实现结果

final Handler handler = new Handler();

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                TransitionDrawable transition = (TransitionDrawable) btnSignIn.getBackground();
                transition.startTransition(1000);
                btnSignIn.setTextColor(Color.BLACK);
            }
        }, 1000);

我的新绘图就像:-

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
    <item android:drawable="@drawable/invalid_button" />
    <item android:drawable="@drawable/valid_button" />
</transition>

其中 invalid_button.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/transparent" />
    <corners android:radius="2dp" />
    <stroke
        android:width="1dp"
        android:color="#FFFFFF" />
</shape>

和 valid_button.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFFFFF" />
    <corners android:radius="2dp" />
    <stroke
        android:width="1px"
        android:color="#FFFFFF" />
</shape>

关于android - Android 中状态更改时的按钮动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36138469/

相关文章:

java - 如何修复 Flutter 中的 "Exception thrown while unbinding, java.lang.IllegalArgumentException: Service not registered: lp@9f7d4ca"异常?

android - Activity 退出时的 RecyclerView 动画

java - 我如何与动画互动?

android - 保存外部缓存文​​件

java - 从android应用程序接收java servlet中的空值

java - 动画textView更改文本并再次动画(动画倒计时)

android - 跟踪屏幕渲染

android - 我可以添加 AnimationListener 进行 fragment 翻译吗

android - 如何在没有额外权限的情况下获取短信统计信息(未读消息)?

android - 为多种屏幕尺寸设计Android应用程序