Android L波纹触控效果如何?

Ste*_*oen 42 android android-5.0-lollipop

我有一个带有高程的圆角矩形,可以投射阴影,就像这里的例子一样: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第一个链接的部分似乎是我想要的,但我无法弄清楚如何实现它.

yan*_*ver 76

试试那个:

ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="@color/COLOR_WHILE_PRESSING" xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/background"></item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 <solid android:color="@color/BACKGROUND_COLOR" />
 <corners android:radius="6dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

或许这篇文章可以帮到你:Android L FAB Button shadow

我在那里解释过,如何实现新的FAB按钮,我也使用了大纲.


kel*_*cer 8

这是带有涟漪和图层列表的。

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorRipple">
<item>
    <layer-list>
        <item>
            <shape android:shape="rectangle">
                <solid android:color="#349F37" />
                <corners android:radius="6dp" />
                <stroke
                    android:width="2dp"
                    android:color="#50E751" />
            </shape>
        </item>
    </layer-list>
</item>

</ripple>
Run Code Online (Sandbox Code Playgroud)