Interpolatore di transizione di image L di materiale L

Questo è più di una domanda math piuttosto che di programmazione.

Beh, vorrei chiedere l'id che tu conosci l'interpolatore descritto in Design materiale:

  • Xamarin Forms Android App si blocca correttamente debug con VS Android Emulator
  • Fragmenti di Android: Quando utilizzare il nascondiglio / mostra o aggiungere / rimuovere / sostituire?
  • onActivityResult Con launchMode = "singleTask"?
  • Creazione di una bitmap dal file png memorizzato in sdcard (Android)
  • Leggere ActivityManager-registri su un dispositivo Jelly Bean?
  • Problemi di modifica colore della barra dei titoli
  • immettere qui la descrizione dell'immagine

    Sembra essere un AccelerateDecelerateInterpolator ma l'effetto di decelerazione decade più lentamente.

    Il mio miglior portello è:

     public class MaterialInterpolator implements Interpolator { @Override public float getInterpolation(float input) { if(input<1./3f) return new AccelerateInterpolator().getInterpolation(input); else return new DecelerateInterpolator().getInterpolation(input); } } 

    Che crea un divario tra i valori:

     Time / Value ... 0.3,0.09 0.317,0.100489 0.333,0.110889 <-- gap 0.35,0.57750005 0.367,0.599311 0.383,0.61931103 0.4,0.64 ... 

    Ridurre l'AccelerateDecelerateInterpolator:

     output = accelerateDecelerateInterpolator(decelerateInterpolator(input)); private float accelerateDecelerateInterpolator(float input) { return (float)(Math.cos((input + 1) * Math.PI) / 2.0f) + 0.5f; } private float decelerateInterpolator(float input) { // return 1.0f - (1.0f - input) * (1.0f - input); return (float)(1.0f - Math.pow((1.0f - input), 2 * mFactor)); // default factor =1.f } 

    Dà tariffe simili a:

    immettere qui la descrizione dell'immagine

    E curva valore / tempo:

    immettere qui la descrizione dell'immagine

    non è sicuro se all'inizio è un errore di output o il comportmento effettivo dovrebbe essere un errore di output


    Fonte: http://www.google.com/design/spec/patterns/imagery-treatment.html

    4 Solutions collect form web for “Interpolatore di transizione di image L di materiale L”

    La libreria di supporto ora dispone di interpolatori per i dispositivi pre-Lollipop: FastOutLinearInInterpolator, FastOutSlowInInterpolator , LinearOutSlowInInterpolator e PathInterpolatorCompat.

    Documenti: http://developer.android.com/reference/android/support/v4/view/animation/package-summary.html

    Origine: https://github.com/android/platform_frameworks_support/tree/master/v4/java/android/support/v4/view/animation

    Quelle trame appaiono molto come le trame di x*(a*x+b)^2 . Con restrizioni sulla seconda radice uguale a 1, è come a*x*(x-1)^2 . Ha integrato, ha scelto a modo che il risultato sia 1 a x=1 e ottenuto 3*x^4-8*x^3+6*x^2 .

    Il codice sarebbe:

     public class MaterialInterpolator implements Interpolator { @Override public float getInterpolation(float x) { return (float) (6 * Math.pow(x, 2) - 8 * Math.pow(x, 3) + 3 * Math.pow(x, 4)); } } 

    Android 5 fornisce ora interpolatori per le tre curve di base nelle specifiche di progettazione del materiale:

      * @android:interpolator/fast_out_linear_in * @android:interpolator/fast_out_slow_in * @android:interpolator/linear_out_slow_in 

    Probabilmente desideri che l'interpolatore fast_out_slow_in .

    Qui puoi trovare l'origine dell'interpolatore fast_out_slow_in.xml se desideri utilizzarli su Android 5.0.

    <?xml version="1.0" encoding="utf-8"?> <pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:controlX1="0.4" android:controlY1="0" android:controlX2="0.2" android:controlY2="1"/>

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.