diff --git a/src/main/java/de/dennisguse/opentracks/TrackController.java b/src/main/java/de/dennisguse/opentracks/TrackController.java index 877b19fea..2825f9c11 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackController.java +++ b/src/main/java/de/dennisguse/opentracks/TrackController.java @@ -19,6 +19,7 @@ package de.dennisguse.opentracks; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.drawable.AnimatedVectorDrawable; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.view.Gravity; import android.view.MotionEvent; @@ -28,6 +29,8 @@ import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; +import androidx.core.content.ContextCompat; + import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.services.TrackRecordingServiceInterface; import de.dennisguse.opentracks.util.ActivityUtils; @@ -134,7 +137,7 @@ public class TrackController { private final Activity activity; private final OnClickListener clickListener; private final int delayMillis; - private final AnimatedVectorDrawable animatedDrawable; + private final Drawable drawable; private final int delayMessageId; private ButtonDelay(final Activity activity, final ImageButton imageButton, final int animDrawableId, final int delayMessageId, final OnClickListener clickListener) { @@ -142,24 +145,30 @@ public class TrackController { this.clickListener = clickListener; this.delayMillis = activity.getResources().getInteger(R.integer.buttonDelayMillis); this.imageButton = imageButton; - this.animatedDrawable = (AnimatedVectorDrawable) activity.getDrawable(animDrawableId); + this.drawable = ContextCompat.getDrawable(activity, animDrawableId); this.delayMessageId = delayMessageId; } @Override public void run() { - imageButton.setImageDrawable(animatedDrawable); - activity.runOnUiThread(animatedDrawable::start); + activity.runOnUiThread(()->{ + imageButton.setImageDrawable(drawable); + if (drawable instanceof AnimatedVectorDrawable) { + ((AnimatedVectorDrawable) drawable).start(); + } + ActivityUtils.vibrate(activity, 150); + ActivityUtils.toast(activity, delayMessageId, Toast.LENGTH_SHORT, Gravity.TOP); + }); - ActivityUtils.vibrate(activity, 150); - activity.runOnUiThread(()-> ActivityUtils.toast(activity, delayMessageId, Toast.LENGTH_SHORT, Gravity.TOP)); try { Thread.sleep(delayMillis); } catch (InterruptedException ignored) { } if (!canceled) { - activity.runOnUiThread(()-> clickListener.onClick(null)); - ActivityUtils.vibrate(activity, 1000); + activity.runOnUiThread(()-> { + clickListener.onClick(null); + ActivityUtils.vibrate(activity, 1000); + }); } } } diff --git a/src/main/res/drawable/ic_button_stop_anim.xml b/src/main/res/drawable/ic_button_stop_anim.xml index a389c2136..be687f36e 100644 --- a/src/main/res/drawable/ic_button_stop_anim.xml +++ b/src/main/res/drawable/ic_button_stop_anim.xml @@ -1,5 +1,40 @@ + xmlns:aapt="http://schemas.android.com/aapt"> + + + + + + + + +