Qui a HASHTAG , i nostri clienti dipendono da noi per aiutarli a gestire in modo affidabile i loro contenuti sui social media. I clienti di Sprout utilizzano le nostre applicazioni mobili iOS e Android in modo da poter gestire i propri file social media in movimento . Quando abbiamo deciso di aggiornare la nostra esperienza di composizione del messaggio Android per supportare pubblicazione più immagini allegate a un Tweet, volevamo che fosse chiaro all'utente quando erano allegate più immagini, anche quando non erano visibili nella schermata Scrivi.



Soluzione progettuale: utilizzare l'animazione per indicare le immagini fuori schermo

Dato il nostro design e i vincoli di uno schermo mobile, era possibile che le immagini allegate risiedessero fuori dallo schermo. Anche se questo non è l'ideale, era una concessione necessaria data la densità delle funzionalità supportate nella schermata Compose. Per i casi in cui le immagini sono, di fatto, fuori dallo schermo, abbiamo deciso di implementare un'animazione di 'rimbalzo' orizzontale che indichi che l'elenco delle immagini era scorrevole.



Scelta di implementazione: ObjectAnimator + EasingInterpolator

Esistono molti meccanismi per supportare le animazioni di base in Android. Alcuni richiedono la configurazione nel codice, altri in xml. Scegliendo tra le alternative, abbiamo deciso di dare la priorità alla compatibilità con le versioni precedenti (supportiamo la versione 15+ di sdk), alla semplicità di implementazione e alla configurabilità. Alla fine, abbiamo deciso di utilizzare una combinazione di ObjectAnimator e EasingInterpolator . Entrambi possono essere configurati nel codice Java, che in definitiva è più facile da usare per gli sviluppatori: la sintassi è familiare e la logica dell'animazione può essere completamente definita in una posizione nella base del codice.





ObjectAnimator è una classe fornita dal framework Android che consente la modifica di una proprietà di una vista. Poiché il movimento dell'interpolatore predefinito per ObjectAnimator non sembrava naturale per il nostro caso d'uso, abbiamo deciso di utilizzare EasingInterpolator, una comoda libreria che fornisce molti modelli di interpolazione diversi.

android-bounce-animation-easing-sample

Bounce Animation Code

private void doBounceAnimation(View targetView) { ObjectAnimator animator = ObjectAnimator.ofFloat(targetView, 'translationX', 0, 25, 0); animator.setInterpolator(new EasingInterpolator(Ease.ELASTIC_IN_OUT)); animator.setStartDelay(500); animator.setDuration(1500); animator.start(); }

Fortunatamente, il codice per gestire questo comportamento è molto conciso. Nella riga 1, stiamo specificando come vogliamo animare targetView. In questo caso, vogliamo modificare la proprietà 'translationX' di targetView, che è la posizione x della vista dopo il layout. Vogliamo animare da un offset di 0dp dalla posizione iniziale a un offset di 25dp a destra e alla fine tornare all'offset originale di 0dp.

Nella riga 2, stiamo specificando il tipo di interpolazione che vorremmo. Abbiamo giocato con diversi modelli di interpolazione, ma alla fine abbiamo deciso che Ease.ELASTIC_IN_OUT sembrava il migliore per il nostro caso d'uso.



HASHTAGS Android Bounce Animation in Compose

Per ulteriori informazioni sul supporto dell'animazione della proprietà in Android, consulta il Doc. Sviluppatore di animazione di proprietà .



Animazione in azione

Siamo davvero felici dei nostri aggiornamenti all'esperienza di scrittura su dispositivi mobili. Andando avanti, abbiamo in programma di continuare ad arricchire la nostra esperienza mobile con interfacce visive reattive. Ti interessa lavorare con noi su questo genere di cose? Venire lavora con noi nel nostro team mobile Android!