2015-03-12 3 views
2

Я использую затмение. Я хочу использовать ripple effect.Как использовать эффект пульсации для кнопки

У меня есть appcompat-v7: 21.0.0.

вытяжке/test.xml

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

    <item android:drawable="@android:color/holo_blue_bright"/> <!-- normal color --> 

</ripple> 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.ex48_materialdesign.MainActivity" 
    android:orientation="vertical"> 


    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="test" 
     android:background="@drawable/test" 
     /> 

</LinearLayout> 

Но я получаю эти ошибки:

> 03-12 15:12:11.441: E/AndroidRuntime(4828): FATAL EXCEPTION: main 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): 
> java.lang.RuntimeException: Unable to start activity 
> ComponentInfo{com.example.ex48_materialdesign/com.example.ex48_materialdesign.MainActivity}: 
> android.view.InflateException: Binary XML file line #13: Error 
> inflating class android.widget.Button 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2247) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.app.ActivityThread.access$700(ActivityThread.java:152) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.os.Handler.dispatchMessage(Handler.java:99) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.os.Looper.loop(Looper.java:137) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.app.ActivityThread.main(ActivityThread.java:5328) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> java.lang.reflect.Method.invokeNative(Native Method) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> java.lang.reflect.Method.invoke(Method.java:511) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> dalvik.system.NativeStart.main(Native Method) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): Caused by: android.view.InflateException: 
> Binary XML file line #13: Error inflating class android.widget.Button 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.view.LayoutInflater.createView(LayoutInflater.java:619) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.view.LayoutInflater.rInflate(LayoutInflater.java:752) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:495) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:397) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.view.LayoutInflater.inflate(LayoutInflater.java:353) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> com.example.ex48_materialdesign.MainActivity.onCreate(MainActivity.java:13) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.app.Activity.performCreate(Activity.java:5250) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): ... 11 more 03-12 
> 15:12:11.441: E/AndroidRuntime(4828): Caused by: 
> java.lang.reflect.InvocationTargetException 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> java.lang.reflect.Constructor.constructNative(Native Method) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> java.lang.reflect.Constructor.newInstance(Constructor.java:417) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.view.LayoutInflater.createView(LayoutInflater.java:593) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  ... 24 more 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): Caused by: 
> android.content.res.Resources$NotFoundException: File 
> res/drawable/test.xml from drawable resource ID #0x7f020034 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.content.res.Resources.loadDrawable(Resources.java:2842) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.content.res.TypedArray.getDrawable(TypedArray.java:602) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  at 
> android.view.View.<init>(View.java:3460) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.widget.TextView.<init>(TextView.java:791) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.widget.Button.<init>(Button.java:107) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.widget.Button.<init>(Button.java:103) 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): ... 27 more 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): Caused by: 
> org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: 
> invalid drawable tag ripple 03-12 15:12:11.441: 
> E/AndroidRuntime(4828): at 
> android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:917) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.graphics.drawable.Drawable.createFromXml(Drawable.java:858) 
> 03-12 15:12:11.441: E/AndroidRuntime(4828): at 
> android.content.res.Resources.loadDrawable(Resources.java:2839) 03-12 
> 15:12:11.441: E/AndroidRuntime(4828):  ... 32 more 
+2

'' доступен только на Android 5.0+. Установлен ли ваш 'minSdkVersion' в 21 или выше? – CommonsWare

+0

my minSdkVersion равно 14, можно ли использовать тег для более низкого, чем 5.0+? –

ответ

6

является возможность использовать тег для ниже 5.0+?

Вы не можете использовать <ripple> в ресурсе, доступном для скачивания, до Android 5.0, так как его тогда не было. Backports, как appcompat-v7, могут поддерживать Java-код и стили Java, но они не могут заставить более ранние версии Android распознавать новые структуры ресурсов.

Кроме того, RippleDrawable существует только в уровне API 21 и, как представляется, не находится в обратном порту appcompat-v7.

Вы можете попробовать this RippleDrawable backport, хотя вам, вероятно, придется использовать его из кода Java, а не из ресурса.

Смежные вопросы