通过波纹效果更改FAB颜色

Aka*_*mar 5 android android-layout floating-action-button rippledrawable

在Android中,我想做这样的事情(但是有2种黑白交替色:

像这样用波纹效果改变颜色

在此处输入图片说明

我试图做的是:

1)通过XML设置默认的backgroundTint和波纹颜色

app:backgroundTint="@android:color/black"
app:rippleColor="@android:color/white"
Run Code Online (Sandbox Code Playgroud)

2)在onclick方法中,将backgroundTint更改为白色,并将波纹颜色更改为黑色

为初始颜色设置一个字符串,即high_color = "black"。然后,

fab.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        @Override
        public void onClick(View v) {
            if(high_color.equals("black")){
                fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.white)));
                fab.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.black)));
                fab.setRippleColor(ContextCompat.getColor(getApplicationContext(), R.color.black));
                high_color = "white";
            }else {
                fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.black)));
                fab.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.white)));
                fab.setRippleColor(ContextCompat.getColor(getApplicationContext(), R.color.whites));
                high_color = "black";
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在我得到这样的东西:

我得到的是这个

在此处输入图片说明

无论如何,要使它看起来像第一个吗?像放慢涟漪动画速度之类的速度?

Anu*_*mar 1

我认为你应该使用选择器。选择器可以轻松地在后台进行更改。

以类似的方式使用选择器,如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" state_enabled="true "/>
    <item android:color="@android:color/black" state_enabled="false "/>
</selector>
Run Code Online (Sandbox Code Playgroud)

使用它作为 FAB 的背景,代码片段如下:

app:background ="@drawable/selector"
Run Code Online (Sandbox Code Playgroud)

当点击时,这将使白色作为背景。不然就黑了 还有更多的属性命名空间可以进一步调整选择器。因此,请在 Android 开发人员网站上阅读有关选择器的信息。如果这真的对您有帮助,请回复我。