所以我试图用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>
抽拉/ 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>
抽拉/ ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#7f7">
</ripple>
color.xml
<resources>
<color name="normal">#070</color>
</resources>
在涟漪效应重叠时,如何保持绿色(#070)背景,我该怎么办?我相信这是意图,对吧?
修改
我现在按照AcademicDuck的建议引入shape
:
抽拉/ 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>
此形状由现在修改的纹波引用:
抽拉/ 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>
现在有什么变化,当我按下背景时是纯红色而不是透明。但仍然没有涟漪。
答案 0 :(得分:1)
为了使用您的自定义drawable,您需要在ripple drawable中指定它(RippleDrawable):
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/yourRippleColor">
<item android:drawable="@drawable/yourDrawable" />
</ripple>
此外,还值得检查以下问题:Android L's Ripple Effect - Touch Feedback for Buttons - Using XML和android ripple button with background
答案 1 :(得分:0)
如果在纹波标记上没有设置子项,则Android Ripple效果将覆盖当前背景的顶部。在ripple标记内,指定<item android:drawable = "@drawble/yourBackground">
。并使'yourBackground'成为一个矩形可绘制资源,其背景颜色与按钮相同 - #070。