美文网首页我爱编程
2018-04-17 Android 有背景颜色下使用水波纹效果

2018-04-17 Android 有背景颜色下使用水波纹效果

作者: 贝贝ovo | 来源:发表于2018-04-17 13:23 被阅读105次
android:background="?android:selectableItemBackground"

这个属性可以设置为水波纹效果,如果此时还需要设置背景色,以前都是再嵌套一层布局 设置 android:background="@color/color_white ,显然不是最优解。
那如何在有背景颜色的情况下设置水波纹效果,见代码

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#fff" />
        </shape>
    </item>
    <item android:drawable="?attr/selectableItemBackground" />
</layer-list>

第一个item自定义背景,想要什么背景,自己写

第二个item设置为水波纹效果

然后使用layer-list将两个item合并,这种方式只能在5.0以上用,或者drawable-v21里用这个,再写一个同名的xml,像下面一种方式

另一种方式

drawable-v21中white_ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/base_ripple">
    <!--去掉此item内容就是无界效果-->
    <item>
        <shape>
            <!-- 中间的背景色-->
            <solid android:color="@color/color_white" />
        </shape>
    </item>
</ripple>

drawable中white_ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@color/base_ripple" ></item>
    <item android:state_selected="true" android:drawable = "@color/base_ripple"/>
    <item android:state_pressed="true"  android:drawable="@color/base_ripple"></item>
    <item android:drawable="@color/color_white" ></item>
</selector>

另:
1.设置前景的水波纹点击效果

android:foreground="?android:selectableItemBackground"

2.水波纹改色
在主题中进行配置代码

<item name="colorControlHighlight">@color/accent_material_light</item>

3.需要给控件设置可点击

相关文章

网友评论

    本文标题:2018-04-17 Android 有背景颜色下使用水波纹效果

    本文链接:https://www.haomeiwen.com/subject/kliukftx.html