Android L波纹触摸对外形的影响?

我有一个圆angular矩形的高程投影,就像在这里的例子: 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> 

我想获得其他一切所具有的“涟漪”效果,但是如果将其设置为视图的背景,则不会提供任何触摸反馈。 形状保持白色。

所以,我把它做成了一个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> 

现在,当我点击它时,我会得到很好的触摸反馈,但是有一个问题。

圆angular矩形的轮廓丢失了。 它仍然绘制了白色的圆angular矩形,但阴影被铸造成一个非圆angular的矩形(方形边缘),波纹一直走到angular落:

不好的角落

在这里看起来并不太可怕,但是在设备上它非常丑陋和令人厌恶。

有没有办法来解决这个问题? 第一个链接的Outline部分似乎是我想要的,但我不知道如何实现它。

试试那个:

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> 

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> 

或者,也许这个职位将帮助你: Android L FABbutton阴影

我在那里解释说,如何实现新的FABbutton,我也用了那个轮廓。

点击这里获取完整的源代码

在drawable文件夹中创buildbutton.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/colorPrimaryDark"/> <item android:drawable="@color/colorPrimary"/> </selector> 

在drawable-v21文件夹中创buildbutton.xml

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item android:drawable="@color/colorPrimary" /> </ripple> 

你可以设置button.xml作为你的视图的背景。

 <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:background="@drawable/button" android:clickable="true" android:gravity="center" android:padding="16dp" android:text="Android Ripple Effect Custom" android:textColor="#fff" android:textSize="18sp" /> 

如果你想自定义颜色的涟漪效应,而不是默认的灰色,那么你可以通过在你的风格添加colorControlHighlight存档它。

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="colorControlHighlight">@color/colorPrimaryDark</item> </style> </resources> 

在Android工作室涟漪触摸效果button

  <com.xgc1986.ripplebutton.widget.RippleButton android:id="@+id/Summit" android:layout_width="260dp" android:layout_height="50dp" android:text="Login" android:textColor="@color/white" android:textStyle="bold" app:buttonColor="@color/Button" app:rippleColor="@color/white" /> 

欲了解更多参考,请点击http://androiddhina.blogspot.in/2015/04/android-ripple-touch-effect-example.html

 <RelativeLayout android:foreground="?android:attr/selectableItemBackground"> </RelativeLayout>