У меня есть ImageView, которая использует форму в качестве фонане удается получить доступ к детям RippleDrawable
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#fedc13" />
<stroke
android:width="2dp"
android:color="#cccccc" />
<size
android:width="120dp"
android:height="120dp" />
</shape>
И через код я могу изменить цвет фона легко
((GradientDrawable) img.getBackground()).setColor(newColor);
Это прекрасно работает, но я хотите добавить эффект пульсации для> Lollipop, когда пользователь нажимает на вид
Итак, я изменил свой xml для v21 на
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#FF0000">
<shape android:shape="oval">
<solid android:color="#fedc13" />
<stroke
android:width="1dp"
android:color="#00FF00" />
<size
android:width="120dp"
android:height="120dp" />
</shape>
</ripple>
И теперь для доступа к форме, img.getBackground()
теперь возвращает RippleDrawable, поэтому я решил получить содержащуюся форму. Но когда я делаю
((GradientDrawable)((RippleDrawable) img.getBackground()).getDrawable(0))
.setColor(newColor)
RippleDrawable не все содержащиеся в нем вводимого коэффициента, поэтому он вызывает исключение.
Почему я не могу получить доступ к содержащейся форме?