Βοήθεια για εναλλαγή background σε Android Button

Χαιρετώ την κοινότητα.
Χρειάζομαι τα φώτα σας, αγαπητοί/ές!
Σε μια εφαρμογή Android που φτιάχνω, προσπαθώ να πετύχω να αλλάζει το background ενός Button ανάμεσα σε διάφορα gradients κάθε φορά που το ‘χτυπάει’ ο χρήστης.
Τα gradients τα φτιάχνω σε αρχείο το καθένα στον φάκελο drawable, του οποίου τα περιεχόμενα είναι του τύπου:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="linear"
        android:angle="0"
        android:startColor="#dddddd"
        android:endColor="#ffeed4" />
</shape>

Το ερώτημά μου είναι, αν το παραπάνω βήμα είναι σωστό, ποιο είναι το επόμενο, μέσα στο MainActivity.java, ώστε προγραμματιστικά να αλλάζω το background στο παραπάνω gradient;
Μέχρι στιγμής έχω δοκιμάσει το εξής (αν υποθέσουμε ότι το κουμπί ονομάζεται ‘card’, και το όνομα του αρχείου στο οποίο έχω ορίσει το gradient είναι ‘gr0’):
card.setBackgroundResource(R.drawable.gr0);
το οποίο όμως δεν δουλεύει.
Σας ευχαριστώ εκ των προτέρων για κάθε βοήθεια!

Edit: Ένας καλός φίλος μού έδωσε τη λύση. Το σημαντικό είναι ότι το Button δεν μπορεί να έχει background τέτοιου είδους, οπότε πρέπει να χρησιμοποιηθεί ImageButton.
Στην περίπτωση που θέλουμε το κουμπί να εμφανίζει και κείμενο, τότε πρέπει να μπει μαζί με ένα TextView σε ένα RelativeLayout.