我有一个带有高程的圆角矩形,可以投射阴影,就像这里的例子一样:http://developer.android.com/preview/material/views-shadows.html#shadows
这是我的形状:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="6dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我希望获得其他所有内容的漂亮"涟漪"触摸效果,但是如果将其设置为视图的背景,则不会给出触摸反馈.形状保持白色.
所以,我把它变成了layer-list:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="6dp" />
</shape>
</item>
<item android:drawable="?android:selectableItemBackground" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
现在,当我点击它时,我得到了很好的触摸反馈,但是有一个问题.
圆角矩形的轮廓丢失了.它仍然可以将白色圆角矩形绘制得很精细,但是阴影会被渲染为非圆角矩形(方形边缘),并且波纹会一直延伸到角落之外:

它在这里看起来并不太可怕,但在设备上它非常丑陋和令人反感.
有没有办法来解决这个问题?Outline第一个链接的部分似乎是我想要的,但我无法弄清楚如何实现它.
我试图将FloatingActionButton纹波设置为类似于此的东西
从材料设计.
问题是我只得到一个没有波纹的"平面样式",它只是将按钮从我的情况下改变为白色到橙色而没有上面链接中显示的动画.
我在这里听到了答案:
但我的FAB仍然很无聊!
编辑:我目前的代码是:XML:
<android.support.design.widget.FloatingActionButton
android:id="@+id/item_activity_fab"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginRight="16dp"
android:src="@drawable/watch"
app:borderWidth="0dp"
app:elevation="6dp"
app:fabSize="normal"
app:layout_anchor="@id/item_activity_title_background"
app:layout_anchorGravity="top|right|end"
app:pressedTranslationZ="12dp"
app:rippleColor="@android:color/transparent"/>
Run Code Online (Sandbox Code Playgroud)
Java的:
mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6));
Run Code Online (Sandbox Code Playgroud)
我在FAB上尝试了这种方法,但它似乎没有用.我也尝试了我提供的链接中的步骤
android android-animation material-design floating-action-button
在Material Design指南中,Google推出了一种新的按钮样式,即FAB Button.我找到了如何制作它的说明,但是添加阴影时遇到了麻烦.怎么能实现这一目标?
android button shadow floating-action-button android-5.0-lollipop
所以我试图用cusotm颜色创建一个涟漪效果,并且有一些成功,除了涟漪效果去除了原始背景,因此创造了一个半透明的涟漪效果,这不是我想要的.
布局:
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:text="Clicky"
android:colorControlHighlight="@android:color/holo_blue_light"
android:background="@drawable/selector">
</Button>
Run Code Online (Sandbox Code Playgroud)
绘制/ selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ripple"/>
<item android:drawable="@color/normal"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
绘制/ ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#7f7">
</ripple>
Run Code Online (Sandbox Code Playgroud)
color.xml
<resources>
<color name="normal">#070</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
在涟漪效应重叠时,我该怎么做才能保持绿色(#070)背景?我相信这是意图,对吗?
编辑
我现在已经shape按照AcademicDuck的建议介绍了一个:
绘制/ red_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/normal" />
</shape>
Run Code Online (Sandbox Code Playgroud)
此形状由现在修改的波纹引用:
绘制/ ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:drawaleb="@drawable/red_shape">
</ripple>
Run Code Online (Sandbox Code Playgroud)
现在有什么变化,当我按下背景是纯红色而不是透明.尽管如此,仍然没有波纹.
我的应用程序中有一个按钮,我想为该按钮提供连续/无限的涟漪效果。如何在android中不点击的情况下在按钮上产生无限的涟漪效果。
我在一个布局文件中有两个浮动操作按钮,但是只有最后一个按钮可以应用波纹效果。如果我将它们对面放置,那么它也是最后一个引起涟漪的地方。因此,无论它们如何放置在布局文件中,最后一个都会在触摸时产生连锁反应,而另一个则不会。怎么会这样?有什么解决方案可以对两个FAB产生连锁反应吗?
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_fab_run"
android:elevation="8dp"
app:backgroundTint="@color/primary"
app:rippleColor="@color/blue" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_run"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/ic_fab_run"
android:elevation="8dp"
app:backgroundTint="@color/primary"
app:rippleColor="@color/blue" />
Run Code Online (Sandbox Code Playgroud)
TL; DR:只有布局中的最后一个FAB会产生涟漪效应,如何解决?