How to create ripple effect in simple layout How to create ripple effect in simple layout android android

How to create ripple effect in simple layout


Set these properties on your layout (if your layout has the default white/light background):

          android:clickable="true"          android:focusable="true"          android:background="?attr/selectableItemBackground"

You don't need a custom drawable in this case.

However, if your layout has a black/dark background, you'd have to create your own ripple drawable like this one:

<?xml version="1.0" encoding="utf-8"?><!-- An white rectangle ripple. --><ripple xmlns:android="http://schemas.android.com/apk/res/android"    android:color="@android:color/white">    <item        android:id="@android:id/mask"        android:gravity="center">        <shape android:shape="rectangle">            <solid android:color="@android:color/white"/>        </shape>    </item></ripple>

And then set this ripple drawable as your android:background property.

You can see many examples of these types of ripples in AOSP: in here


I'm adding this in addition to Igor Ganapolsky's answer in case anyone wants to have a layout with different color and also have a ripple effect. You simply create a ripple effect in drawables like this:

ripple.xml

<?xml version="1.0" encoding="utf-8"?><ripple xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:color="@color/rippleColor"    tools:targetApi="lollipop"> <!-- ripple effect color -->    <item android:id="@android:id/background">        <shape android:shape="rectangle">            <solid android:color="@color/backgroundColor" /> <!-- background color -->        </shape>    </item></ripple>

then give it as your layout's background or any button as Igor Ganapolsky mentioned in his answer.

android:clickable="true"android:background="@drawable/ripple"


You have to alter following code snippet in any widget(TextView/Button) and you can implement Ripple Effect:

android:clickable="true"android:focusable="true"android:foreground="?attr/selectableItemBackground"

And you are good to go.