Skip to content

Instantly share code, notes, and snippets.

@marcospaulo
Created July 13, 2016 15:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcospaulo/5dc697641da7027a9e0918b4e9d8992c to your computer and use it in GitHub Desktop.
Save marcospaulo/5dc697641da7027a9e0918b4e9d8992c to your computer and use it in GitHub Desktop.
PlayerView Class
<?xml version="1.0" encoding="utf-8"?>
<animated-vector
android:drawable="@drawable/ic_play"
xmlns:android="http://schemas.android.com/apk/res/android" >
<target
android:animation="@animator/anim_play_to_stop"
android:name="play"/>
<target
android:animation="@animator/anim_rotate_left"
android:name="group"/>
</animated-vector>
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_stop">
<target
android:name="stop"
android:animation="@animator/anim_stop_to_play" />
<target
android:name="group"
android:animation="@animator/anim_rotate_right" />
</animated-vector>
07-13 16:41:30.617 11297-11297/ca.bellmedia.iheartradio.qa E/AndroidRuntime: FATAL EXCEPTION: main
Process: ca.bellmedia.iheartradio.qa, PID: 11297
java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.bellmedia.iheartradio.qa/ca.bellmedia.iheartradio.home.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.graphics.drawable.VectorDrawableCompat.isStateful()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.graphics.drawable.VectorDrawableCompat.isStateful()' on a null object reference
at android.support.graphics.drawable.AnimatedVectorDrawableCompat.isStateful(AnimatedVectorDrawableCompat.java:294)
at android.widget.ImageView.updateDrawable(ImageView.java:833)
at android.widget.ImageView.setImageDrawable(ImageView.java:464)
at ca.bellmedia.iheartradio.player.customview.PlayerView.onFinishInflate(PlayerView.java:145)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:814)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:916)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:802)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at ca.bellmedia.iheartradio.player.BasePlayerActivity.onCreate(BasePlayerActivity.java:88)
at ca.bellmedia.iheartradio.home.HomeActivity.onCreate(HomeActivity.java:50)
at android.app.Activity.performCreate(Activity.java:6010)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) 
at android.app.ActivityThread.access$800(ActivityThread.java:155) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5343) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportHeight="48"
android:viewportWidth="48">
<group
android:name="group"
android:pivotX="24"
android:pivotY="24">
<path android:pathData="M 0 0 L 48 0 L 48 48 L 0 48 Z" />
<path
android:name="play"
android:fillColor="@android:color/white"
android:pathData="M 20 15 L 32 24 L 32 24 L 20 33 Z" />
</group>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<animated-selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true">
<item
android:id="@+id/playing"
android:state_checked="true"
android:drawable="@drawable/ic_stop" />
<item
android:id="@+id/stopped"
android:drawable="@drawable/ic_play" />
<transition
android:fromId="@id/stopped"
android:toId="@id/playing"
android:drawable="@drawable/avd_play_to_stop" />
<transition
android:fromId="@id/playing"
android:toId="@id/stopped"
android:drawable="@drawable/avd_stop_to_play" />
</animated-selector>
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportHeight="48"
android:viewportWidth="48">
<group
android:name="group"
android:pivotX="24"
android:pivotY="24"
android:rotation="270">
<path android:pathData="M 0 0 L 48 0 L 48 48 L 0 48 Z" />
<path
android:name="stop"
android:fillColor="@android:color/white"
android:pathData="M 16 16 L 32 16 L 32 32 L 16 32 Z" />
</group>
</vector>
if (PlatformUtils.isLollipopOrHigher()) {
AnimatedVectorDrawableCompat animatedVectorDrawableCompatPlayStop = AnimatedVectorDrawableCompat.create(getContext(), R.drawable.ic_play_stop);
AnimatedVectorDrawableCompat animatedVectorDrawableCompatPlayStopMinimized = AnimatedVectorDrawableCompat.create(getContext(), R.drawable.ic_play_stop);
ibPlayStop.setImageDrawable(animatedVectorDrawableCompatPlayStop);
ibPlayStopMinimized.setImageDrawable(animatedVectorDrawableCompatPlayStopMinimized);
} else {
ibPlayStop.setImageDrawable(DrawableHelper.createStateListCheckableDrawable(getResources(), R.drawable.ic_play, R.drawable.ic_stop));
ibPlayStopMinimized.setImageDrawable(DrawableHelper.createStateListCheckableDrawable(getResources(), R.drawable.ic_play, R.drawable.ic_stop));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment