Gabriel Brito Gabriel Brito - 26 days ago 18
Android Question

Recycler view click animation

I'm trying to add some click animation as shown here to my recycler view but unsuccessfully. Here's some of my code.

Inside my Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
...
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(this, R.dimen.card_item_offset);
mRecyclerView.addItemDecoration(itemDecoration);

mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);

mAdapter = new CustomAdapter(this);
mRecyclerView.setAdapter(mAdapter);
}


Inside my ViewHolder

public CustomViewHolder(View itemView) {
super(itemView);
this.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* on click stuff here */
}
});
}


Inside my CardView.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_loading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp"
android:clickable="true"
android:background="?android:attr/selectableItemBackground">

<TextView
android:id="@+id/card_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</android.support.v7.widget.CardView>


Not sure where the problem is, but thank you in advance for helping =)

Answer

this is called Ripple effect you are trying with background instead foreground

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

you can also make it custom too

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/colorcode">

    <item
        android:id="@android:id/mask"
        android:drawable="@color/colorcode" />
</ripple>

to support in older versions you can do like that

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorcode" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/colorcode" />
        </shape>
    </item>
</selector>
Comments