ripple drawable在Android API 19上崩溃应用程序

Ate*_*res 7 android rippledrawable android-api-levels

我正在使用自定义波纹 drawable

<?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>
Run Code Online (Sandbox Code Playgroud)

但它崩溃了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) 
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能防止崩溃?

Min*_*amy 19

RippleDrawable在API 21中添加,所以它不是可在先前版本的SDK.

您可以将可绘制文件移动到res/drawable-v21,以确保它不会在早期版本中崩溃.

  • 是否有其他替代方法可以在21岁之前 (2认同)

Ang*_*cia 13

我有同样的问题.

Mina Samy回答也解决了我的问题.

Atef Hares要求旧版本的替代品.对我有用的是使用选择器而不是纹波

例如:

<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>
Run Code Online (Sandbox Code Playgroud)

哪里

<color name="playColor">#E8EAF6</color>
Run Code Online (Sandbox Code Playgroud)