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>