Como puedo lograr animar el icono del conductor en ambas aplicaciones?

Hola comunidad de apphive, espero que se encuentren todos bien, el dia de hoy tengo dos pequeña duda, la primera siendo la mas sencilla de ellas.

Es posible en apphive cambiar el logo del vehículo tanto en la app de conductor como en la app de cliente, en caso de que si me gustaria saber como por favor.

Siguiendo el mismo orden en la segunda pregunta considero y creo que es un poco mas complejo, pero me gustaria saber si es posible darle una especie de animación a este icono de conductor, ya que de esta forma da una cesación al usuario de que la app esta corriendo (con vida). al igual al momento del cliente esperar su viaje todo el recorrido se ve muy animado y profesional, sin el conductor estar dando salto en el mapa.

En android estudio a través de java lo he logrado, pero si me complique un poco al hacerlo…

Ejemplo:
bloggif_640cafab55172

Esta fue la forma en código de como lo he logrado en android estudio.

ewPos);
                carMarker.setAnchor(0.5f, 0.5f);
                carMarker.setRotation((float) bearingBetweenLocations(startPosition, endPosition));
                if (callback != null) {
                    googleMap.animateCamera(CameraUpdateFactory
                            .newCameraPosition
                                    (new CameraPosition.Builder()
                                            .target(newPos)
                                            .bearing((float) bearingBetweenLocations(startPosition, endPosition))
                                            .zoom(12)
                                            .build()), callback);
                } else {
                    googleMap.animateCamera(CameraUpdateFactory
                            .newCameraPosition
                                    (new CameraPosition.Builder()
                                            .target(newPos)
                                            .bearing((float) bearingBetweenLocations(startPosition, endPosition))
                                            .zoom(12)
                                            .build()));
                }
            }
        });
        valueAnimator.start();
    }

    public static void carAnim(final Marker marker, final LatLng start, final LatLng end) {
        ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
        valueAnimator.setDuration(2000);
        final LatLngInterpolatorNew latLngInterpolator = new LatLngInterpolatorNew.LinearFixed();
        valueAnimator.setInterpolator(new LinearInterpolator());
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                float v = valueAnimator.getAnimatedFraction();
                LatLng newPos = latLngInterpolator.interpolate(v, start, end);

                marker.setPosition(newPos);
                marker.setAnchor(0.5f, 0.5f);
                marker.setRotation((float) bearingBetweenLocations(start, end));
            }
        });
        valueAnimator.start();
    }

    private static double bearingBetweenLocations(LatLng latLng1, LatLng latLng2) {

        double PI = 3.14159;
        double lat1 = latLng1.latitude * PI / 180;
        double long1 = latLng1.longitude * PI / 180;
        double lat2 = latLng2.latitude * PI / 180;
        double long2 = latLng2.longitude * PI / 180;
        double dLon = (long2 - long1);
        double y = Math.sin(dLon) * Math.cos(lat2);
        double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
                * Math.cos(lat2) * Math.cos(dLon);

        double brng = Math.atan2(y, x);

        brng = Math.toDegrees(brng);
        brng = (brng + 360) % 360;

        return brng;
    }

    public interface LatLngInterpolatorNew {
        LatLng interpolate(float fraction, LatLng a, LatLng b);

        class LinearFixed implements LatLngInterpolatorNew {
            @Override
            public LatLng interpolate(float fraction, LatLng a, LatLng b) {
                double lat = (b.latitude - a.latitude) * fraction + a.latitude;
                double lngDelta = b.longitude - a.longitude;
                if (Math.abs(lngDelta) > 180) lngDelta -= Math.signum(lngDelta) * 360;
                double lng = lngDelta * fraction + a.longitude;
                return new LatLng(lat, lng);
            }
        }
    }
}```

muchísimas gracias  feliz resto del dia.