Ripple drawable crashes application in Android API 19

I use custom drawable ripples

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

but this will crash the app in API 19

 android.content.res.Resources$NotFoundException: File res / drawable / ripple_effect_square2.xml from drawable resource ID #0x7f02017d at android.content.res.Resources.loadDrawable(Resources.java:2101) at android.content.res.Resources.getDrawable(Resources.java:700) at android.view.View.setBackgroundResource(View.java:15303) Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line # 2: invalid drawable tag ripple at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java: 933) at android.graphics.drawable.Drawable.createFromXml(Drawable.java: 877) at android.content.res.Resources.loadDrawable(Resources.java: 2097) at android.content.res.Resources.getDrawable(Resources.java: 700) at android.view.View.setBackgroundResource(View.java: 15303) 

What should I do to prevent a crash?

+3
source share
2 answers

RippleDrawable was added in API 21, so it is not available in previous SDKs.

You can move your paintable file to res / drawable-v21 to ensure that it does not work on earlier releases.

+12
source

I had the same problem.

The answer to Mina Sami's question also solved my problem.

Atef Hares asked for an alternative in older versions. What works for me is to use a selector instead of ripples

eg:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="#ccffffff" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle"> <stroke android:color="@android:color/white" /> </shape> </item> <item android:drawable="@color/playColor" /> </selector> 

Where

 <color name="playColor">#E8EAF6</color> 
+6
source

All Articles