рдмреИрдВрдХ рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдХрд░реНрд╖рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!

рдПрдХ рд╕рдордп рдореЗрдВ, рдЙрддреНрдкрд╛рдж рд╕реНрд╡рд╛рдореА рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб / рдЖрдИрдУрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдЙрд╕ рд╕рдордп, рд╣рдордиреЗ рдЛрдг рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреВрд░реНрд╡-рднрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╣рдо рдПрдХ рд╕реБрдВрджрд░ рд▓реЛрдбрд┐рдВрдЧ рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред


рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рдерд╛: рдбрд┐рдЬрд╛рдЗрдирд░ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ
рдЙрд╕рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдбреЛрдкрд┐рд▓рд┐рд╡реИрдирд┐рдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреБрд░рд╛рдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ (рд╣рд╛рдБ, рд╣рдо рдЕрднреА рднреА рдПрдВрдбреНрд░реЙрдЗрдб 4.1 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ)ред

рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рдереЗ:

  1. рдПрдирд┐рдореЗрдЯреЗрдб рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд▓рдоред рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ
    рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб (рдПрдкреАрдЖрдИ 25 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ) рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рд╣реИрдВред рд╕рд░рд▓ рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдм рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдФрд░ рдирд░рдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдВ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЖрдк рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
  2. рдЬреАрдЖрдИрдПрдл - рд╡реЗ рдмрд╣реБрдд рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╣реЗрд░рдлреЗрд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
  3. Png рдЕрдиреБрдХреНрд░рдо (рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ)ред

рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП Android рдФрд░ gif рдХреЗ рдореВрд▓ рд╡реЗрдХреНрдЯрд░ рдПрдиреАрдореЗрд╢рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ (рдУрд╣ рдорд╛рдп рдЧреЙрдб, рд╣рдордиреЗ рдЕрднреА рднреА рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ), рдореИрдВрдиреЗ рдЕрджреНрднреБрдд рд▓реЛрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛, рдФрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ред

рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдереАрдВред рдбрд┐рдЬрд╛рдЗрдирд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рдиреНрди рдерд╛, рдЕрдм рд╡рд╣ рдПрдбреЛрдм рдЖрдлреНрдЯрд░ рдЗрдлреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдПрдиреАрдореЗрд╢рди рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдФрд░ рдХреБрдЫ рдХреНрд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ json рдлрд╛рдЗрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╣рдо рднреА рдЦреБрд╢ рдереЗ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗред

Lottie рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдФрд░ Airbnb рджреНрд╡рд╛рд░рд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдПрдиреАрдореЗрд╢рди рдХреА рдмрдврд╝рддреА рдорд╛рдВрдЧ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд▓рдЧрднрдЧ) рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЦреБрдж рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рд▓рдХреНрд╖реНрдп рдЖрдлреНрдЯрд░ рдЗрдлреЗрдХреНрдЯреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╡реЗ рдЗрд╕рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗред рдЕрдм Lottie рдПрдиреАрдореЗрд╢рди рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ ImageView рдореЗрдВ рдХреЛрдИ рдЪрд┐рддреНрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ред

рдореБрдЦреНрдп 3 рдХрдХреНрд╖рд╛рдПрдВ:

  1. LottieAnimationView ImageView рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ, рдФрд░ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдЖрдк xml рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдХреЛрдб рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реАрдХреЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
  2. LottieDrawable - Drawable descendant, рдкрд┐рдЫрд▓реА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рджреГрд╢реНрдп рдореЗрдВ рдПрдиреАрдореЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  3. LottieComposition рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рдереА LottieCompositionFactory рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдирд┐рдореЗрд╢рди рдкреНрд░реАрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ LottieDrawable рдФрд░ LottieAnimationView рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдВрд╕рд╛рдзрди рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ


рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

  1. рд░реЗрд╕ / рдХрдЪреНрдЪрд╛
  2. src / рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ
  3. рдЬрд╕рди рд╕реНрдЯреНрд░рд┐рдВрдЧ
  4. рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХреЛрдИ рднреА url рдПрдХ json рдпрд╛ zip рдлрд╝рд╛рдЗрд▓ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ (HttpURLConnection рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рди рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдиреАрдореЗрд╢рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЬрд╝рд┐рдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
  5. InputStream json рдпрд╛ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓

рдПрдирд┐рдореЗрд╢рди рдХреИрд╢рд┐рдВрдЧ


рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд░реЗрд╕ / рд░реЙ рдпрд╛ рдПрд╕реЗрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рднреА рдПрдирд┐рдореЗрд╢рди рдПрд▓рдЖрд░рдпреВ рдХреИрд╢ рджреНрд╡рд╛рд░рд╛ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдордп рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреВрд▓рд░ рднреА, рдпрджрд┐ рдЖрдкрдХреЛ рдПрдиреАрдореЗрд╢рди рдХреЛ рдкреВрд░реНрд╡-рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдХреЛ рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

LottieCompositionFactory.fromRawRes(context, rawFile) 

рдЕрдкрд░рд┐рд╖реНрдХреГрдд рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рдЧрддрд┐ рдкреНрд░рдмрдВрдзрди


Lottie рдЖрдкрдХреЛ setProgress (...) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрддрдорд╛рди рдПрдирд┐рдореЗрд╢рди рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд╕реНрдерд┐рддрд┐, рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐, рд╡рд┐рднрд┐рдиреНрди рдЗрд╢рд╛рд░реЛрдВ рдЖрджрд┐ рдХреЛ рдЪреЗрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдмреЙрдЯрдорд╢реАрдЯ, рдкреБрд▓рдЯреЙрд░реНрдлрдлреНрд░реЗрд╢, рдХреЛрд▓реИрдкреНрд╕рд┐рдВрдЧрдЯреВрд▓рдмрд╛рд░ рд▓рдпрдЖрдЙрдЯ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗред

AppBarLayout рдХреЗ рд╕рд╛рде рдкреНрд░рдЧрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:

 appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> val percent = Math.abs(verticalOffset).toFloat()/appBarLayout.totalScrollRange animationView.progress = percent }) 

рдкрд╛рд╢рди


рд▓реЛрдЯреА рд▓реВрдкрд┐рдВрдЧ рд╕реЗрдЯрд░рд┐рдкреЗрдЯрдореЛрдб () рдпрд╛ рд╕реЗрдЯрд░реАрдкреЗрдЯрдХрд╛рдЙрдВрдЯ () рдореЗрдВ рди рдХреЗрд╡рд▓ рдкреВрд░реЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЯреБрдХрдбрд╝реЗ рдХреЗ рднреАрддрд░ (0.0 ... 1.0) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдпрд╣ рдЧреБрдг setMinFrame, setMaxFrame, setMinAndMaxFrame рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП 3 рдПрдирд┐рдореЗрд╢рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ: рдирд┐рд╖реНрдХреНрд░рд┐рдп, рдкреНрд░рдЧрддрд┐, рдкреВрд░реНрдгред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХреЛрдб рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:

 when (loadingStatus) { LoadingStatus.IDLE -> { animationView.setMaxProgress(0.1f) } LoadingStatus.PROGRESS -> { animationView.setMinAndMaxProgress(0.2f, 0.9f) animationView.repeatCount = LottieDrawable.INFINITE animationView.playAnimation() } LoadingStatus.COMPLETE -> { animationView.setMinAndMaxProgress(0.9f, 1f) animationView.repeatCount = 1 animationView.playAnimation() }} 


рддрд╕реНрд╡реАрд░реЗрдВ


рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд▓реЛрдЯреНрдЯреА рдХрд╛ рдПрдХ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рдерд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рд╕реАрдзреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рдореНрдорд┐рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕реНрдереИрддрд┐рдХ рдЫрд╡рд┐ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рджреЛрдиреЛрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕реНрдерд┐рд░ рддрд╕реНрд╡реАрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдбрд┐рдЬрд╛рдЗрдирд░ рдЬрдиреНрд╕ рдкреНрд▓рд╕ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╣реА рддрд╕реНрд╡реАрд░ рдХреЛ рднреА рдЙрддрд╛рд░рддрд╛ рд╣реИред

 { "v": "5.1.13", "fr": 29.9700012207031, "ip": 0, "op": 47.0000019143492, "w": 1034, "h": 1334, "nm": " 1", "ddd": 0, "assets": [ { "id": "image_0", "w": 130, "h": 436, "u": "images/", "p": "img_0.png" }, { "id": "comp_0", "layers": [ ... ]}] } 

рдпрд╣ img_0.png, рдпрд╣ рд╡рд╣ рдЪрд┐рддреНрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ src / рдЖрд╕реНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬреЛ рдХрд┐ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реЛрдЧрд╛ред

рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, setImageAssetDelegate рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд┐рдЯрдореИрдк рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЧреНрд▓рд╛рдЗрдб рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдиреАрдореЗрд╢рди рдФрд░ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХреИрд╢ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:

 glideLoader.loadAsBitmap(imageUrl).into(object: CustomTarget<Bitmap>() { override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) { viewAnimation.setImageAssetDelegate(object: ImageAssetDelegate { override fun fetchBitmap(asset: LottieImageAsset?): Bitmap { asset?.let { val resizeBitmap =Bitmap.createScaledBitmap(resource, it.width, it.height, true); return resizeBitmap } ?: run { return resource } } }) setAnimation(viewAnimation, animationImage) } override fun onLoadCleared(placeholder: Drawable?) {} }) 


рдЙрддреНрдкрд╛рджрдХрддрд╛


рдмреЗрд╢рдХ, рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдорд╛рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреБрдЫ рдПрдирд┐рдореЗрд╢рдиреЛрдВ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб 20% рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЖрджрд░реНрд╢ рдорд╛рдорд▓рд╛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рд░ рдЖрдЧ рд▓рдЧрд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдиреАрдореЗрд╢рди рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрднреА-рдХрднреА рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

 viewAnimation.useHardwareAcceleration(true) 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдлреЛрди рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреНрд╡рд░рдг рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╡рд┐рдкрд░реАрдд рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓реЙрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЛрдЯреА рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛:

  1. рдЫреЛрдЯреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрдХрд╛рд░ (300 kb)
  2. рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд╛рдзрд╛рди ios / android / web
  3. рд╡реЗрдм рд╕реЗ рдПрдирд┐рдореЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
  4. рдкреНрд░рдЧрддрд┐ рдкреНрд░рдмрдВрдзрди рдФрд░ рдХрд╣реАрдВ рднреА рдкрд╛рд╢рди
  5. рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЛ рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╡рд┐рдкрдХреНрд╖:

  1. рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдлрдкреАрдПрд╕ рдЖрд╡реЗрджрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИред
  2. рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЛрдЯреНрдЯреА рдПрдирд┐рдореЗрд╢рди рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рдордп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред


рд╡реИрд╕реЗ, рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдПрдиреАрдореЗрд╢рди рдХреИрд╕рд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк Google Play рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд▓реЛрдЯреНрдЯреА рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд░реЗрдВрдбрд░ рдЧреНрд░рд╛рдлрд╝ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдХрд┐рд╕реА рдлрд╝реНрд░реЗрдо рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдлреНрд░реЗрдо рдореЗрдВ рдХрд╛рдЯрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдЕрдХреНрд▓рд░реЗрд╢рди рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рддреЛ рдПрдиреАрдореЗрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред

Source: https://habr.com/ru/post/hi459852/


All Articles