在形状的波纹有透明背景

我在我的应用程序中使用以下形状

                     

它在我的drawable文件夹中。 现在我将我的应用程序更新为Lollipop,我希望对我使用的圆形按钮给出反馈。 所以在drawable-v21文件夹中我把它改成了一个涟漪选择器:

                    

但遗憾的是,在Lollipop中使用上述drawable不会产生涟漪效应。 是因为

谁能告诉我哪里出错了? 谢谢

  • NavigationView +select器+纹波效应状态select不起作用
  • 如何处理9-patch和CardView上的纹波效应,并控制select器的状态?
  • 使用RecyclerView和CardView触摸反馈
  • 用button背景色添加涟漪效果到我的button?
  • 如何在android中的偏好添加涟漪效应?
  • 使用Android 5.0设备的CardView中没有显示selectableItemBackground作为前景的波纹
  • 如何在Android 5.0 Lollipop的代码(而不是xml)中以编程方式使用RippleDrawable?
  • 在ImageButton之外实现纹波效果
  • 经过一些试验和错误后,似乎我误解了selectoritem的层次结构。

    以下工作完美。

             

    这适用于透明背景:

     < ?xml version="1.0" encoding="utf-8"?>                   

    这个答案有点修改: 透明纹波

    以下代码适用于自定义形状,带有涟漪效果的透明按钮 –

    main_activity_buttons_ripple_with_background.xml

     < ?xml version="1.0" encoding="utf-8"?>                     

    styles.xml

      

    activity_main.xml中

          

    指定纹波掩码时,您可以在透明或半透明背景上产生连锁效果。 纹波掩码是Drawable,但仅使用alpha值设置每个像素的纹波alpha。 以下是以编程方式创建的示例。

     var background = new android.graphics.drawable.GradientDrawable(); background.setShape(android.graphics.drawable.GradientDrawable.RECTANGLE); background.setColor(0x77FFFFFF); // semi-transparent background background.setCornerRadius(10); background.setStroke(3, 0xFF1144FF); // border color var mask = new android.graphics.drawable.GradientDrawable(); mask.setShape(android.graphics.drawable.GradientDrawable.RECTANGLE); mask.setColor(0xFF000000); // the color is irrelevant here, only the alpha mask.setCornerRadius(5); // you probably want the same corner as the background var rippleColorLst = android.content.res.ColorStateList.valueOf( android.graphics.Color.argb(255,50,150,255) ); // aaaand var ripple = new android.graphics.drawable.RippleDrawable(rippleColorLst,background,mask); yourButton.setBackground(ripple); 

    (抱歉JavaScript / NativeScript代码,可能有人能理解)