Андроид Π²Π΅ΠΊΡ‚ΠΎΡ€: 404 Β |Β  Page Not Found Β |Β  Android Developers

VectorDrawable β€” Ρ‡Π°ΡΡ‚ΡŒ пСрвая / Π₯Π°Π±Ρ€

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ «VectorDrawables – Part 1» с сайта blog.stylingandroid.com.

По Π΄ΠΎΠ»Π³Ρƒ слуТбы ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΌΠ½Π΅ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. Π’ΠΎ врСмя поиска наткнулся я Π½Π° ΡΠ΅Ρ€ΠΈΡŽ статСй ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ β€œVectorDrawable” Π² Π±Π»ΠΎΠ³Π΅ https://blog.stylingandroid.com/. ΠžΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° всС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ мСня вопросы я, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ нашСл, Π½ΠΎ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΈΡΡŒ своСй ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Π²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ объСмом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. РСшил ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ этих статСй с обитатСлями Ρ…Π°Π±Ρ€Π°.

Π― Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ» названия, activity, bitmap ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π»Π΅Π³Ρ‡Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, вСдь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Π² силу профСссии, эти слова Π² русском Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ практичСски Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚. Π”Π°Π»Π΅Π΅ слСдуСт ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:

Одна ΠΈΠ· Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ интСрСсных Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡˆΠ΅ΠΊ Π² Lollipop – это Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ VectorDrawable ΠΈ связанных с Π½ΠΈΠΌ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ возмоТности для добавлСния слоТной Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ (позволяСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния Π½Π΅ зависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² экрана ΠΈ плотности, Ρ‡Π΅ΠΌ растровыС изобраТСния), Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт нСсколько ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнтов для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ½Ρ‹Ρ….

Π’ этой сСрии статСй ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· прСимущСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π½Π°ΠΌ Π΄Π°ΡŽΡ‚. Π’Π°ΠΊ ΠΆΠ΅ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΠ· ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшого количСства ΠΊΠΎΠ΄Π°.

ВСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° – способ описания графичСских элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ гСомСтричСскиС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Они особСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для графичСских элСмСнтов, созданных Π² прилоТСниях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Adobe Illustrator ΠΈΠ»ΠΈ Inkscape, Π³Π΄Π΅ простыС гСомСтричСскиС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТныС элСмСнты. Π Π°Π±ΠΎΡ‚Π° с растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, опрСдСляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля ΠΈ особСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ„ΠΎΡ‚ΠΎ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠΌ прСимущСством использования Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ (Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… случаях) являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ изобраТСния рСндСрятся Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ автоматичСски Π²Ρ‹ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ плотности пиксСлСй. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ получаСтся чСткая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° с ΠΏΠ»Π°Π²Π½Ρ‹ΠΌΠΈ линиями, нСзависимо ΠΎΡ‚ возмоТностСй устройства. Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньший объСм памяти, Ρ‡Π΅ΠΌ ΠΈΡ… растровый Π°Π½Π°Π»ΠΎΠ³.

Однако, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ изобраТСния Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… мощностСй для отрисовки, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ большом количСствС слоТных графичСских элСмСнтах.

ВСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄Π΅ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с использованиСм Π½ΠΎΠ²ΠΎΠ³ΠΎ класса – VectorDrawable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ Π² Lollipop. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для графичСских элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ прСдставлСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ растровыС изобраТСния Π² ΠΏΠ°ΠΏΠΊΠ°Ρ… mdpi, hdpi, xhdpi, xxhdpi, ΠΈ xxxhdpi Π½Π° ΠΎΠ΄ΠΈΠ½ VectorDrawable Π² ΠΏΠ°ΠΏΠΊΠ΅ Drawable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, Π·Π°ΠΉΠΌΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ мСньшС пространства Π½Π° дискС, Ρ‡Π΅ΠΌ растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для mdpi.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» svg (Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС https://code.google.com/archive/p/svg-android/downloads):

Π­Ρ‚ΠΎΡ‚ svg-Ρ„Π°ΠΉΠ» Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2265 Π±Π°ΠΉΡ‚, Ссли ΠΌΡ‹ отрисуСм Π΅Π³ΠΎ Π² bitmap с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ 500 Ρ… 500 пиксСлСй, ΠΈ сохраним ΠΊΠ°ΠΊ png, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π·Π°ΠΉΠΌΠ΅Ρ‚ ΡƒΠΆΠ΅ 13272 Π±Π°ΠΉΡ‚Π°, плюс ΠΊ этому, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ для Ρ€Π°Π·Π½Ρ‹ΠΉ плотностСй экрана. Но SVG – это Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ VectorDrawable, поэтому ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ нСпосрСдствСнно. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, VectorDrawable ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты SVG. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· нашСго SVG – это path. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° исходный ΠΊΠΎΠ΄ SVG:


android.svg
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<g display="none">
    <path display="inline" d="M499.001,1v498h2V1h599.001 M500.001,0H0v500h500.001V0L500.001,0z"/>
</g>
<g>
    <path fill="#9FBF3B" d="M301.314,83.298l20.159-29.272c1.197-1.
74,0.899-4.024-0.666-5.104c-1.563-1.074-3.805-0.543-4.993,1.199 L294.863,80.53c-13.807-5.439-29.139-8.47-45.299-8.47c-16.16,0-31.496,3.028-45.302,8.47l-20.948-30.41 c-1.201-1.74-3.439-2.273-5.003-1.199c-1.564,1.077-1.861,3.362-0.664,5.104l20.166,29.272 c-32.063,14.916-54.548,43.26-57.413,76.34h318.316C355.861,126.557,333.375,98.214,301.314,83.298"/> <path fill="#FFFFFF" d="M203.956,129.438c-6.673,0-12.08-5.407-12.08-12.079c0-6.671,5.404-12.08,12.08-12.08 c6.668,0,12.073,5.407,12.073,12.08C216.03,124.03,210.624,129.438,203.956,129.438"/> <path fill="#FFFFFF" d="M295.161,129.438c-6.668,0-12.074-5.407-12.074-12.079c0-6.673,5.406-12.08,12.074-12.08 c6.675,0,12.079,5.409,12.079,12.08C307.24,124.03,301.834,129.438,295.161,129.438"/> <path fill="#9FBF3B" d="M126.383,297.598c0,13.45-10.904,24.354-24.355,24.354l0,0c-13.45,0-24.354-10.904-24.354-24.354V199.09 c0-13.45,10.904-24.354,24.354-24.354l0,0c13.451,0,24.355,10.904,24.
355,24.354V297.598z"/> <path fill="#9FBF3B" d="M140.396,175.489v177.915c0,10.566,8.566,19.133,19.135,19.133h32.633v54.744 c0,13.451,10.903,24.354,24.354,24.354c13.451,0,24.355-10.903,24.355-24.354v-54.744h47.371v54.744 c0,13.451,10.902,24.354,24.354,24.354s24.354-10.903,24.354-24.354v-54.744h32.633c10.569,0,19.137-8.562,19.137-19.133V175.489 h240.396z"/> <path fill="#9FBF3B" d="M372.734,297.598c0,13.45,10.903,24.354,24.354,24.354l0,0c13.45,0,24.354-10.904,24.354-24.354V199.09 c0-13.45-10.904-24.354-24.354-24.354l0,0c-13.451,0-24.354,10.904-24.354,24.354V297.598z"/> </g> </svg>

НСмного разбСрСмся. Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 500Ρ…500, Π•ΡΡ‚ΡŒ элСмСнт (group), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ – Π΅Π³ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт с id = β€œandroid”. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Он состоит ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ элСмСнтов , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π³ΠΎΠ»ΠΎΠ²Ρƒ, ΠΏΡ€Π°Π²Ρ‹ΠΉ Π³Π»Π°Π·, Π»Π΅Π²Ρ‹ΠΉ Π³Π»Π°Π·, лСвая Ρ€ΡƒΠΊΠ°, Ρ‚Π΅Π»ΠΎ ΠΈ Π½ΠΎΠ³ΠΈ, правая Ρ€ΡƒΠΊΠ°.

Атрибут β€œfill” опрСдСляСт Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ (ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π·Π΅Π»Π΅Π½Ρ‹Π΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π³Π»Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π»ΠΈΡ‚Ρ‹ Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ), Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ β€œd” содСрТит ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Π»ΠΈΠ½ΠΈΠΉ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит элСмСнт. Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π² элСмСнтС , слСдуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ SVG Path Specification, Π½ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ это Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто Π²Π·ΡΡ‚ΡŒ ΠΈΡ…, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π°ΡˆΠΈΡ… VectorDrawables.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим наш VectorDrawable:


res/drawable/android.xml
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="500"
    android:viewportHeight="500"
    android:width="500px"
    android:height="500px">
    <group android:name="android">
        <path
            android:name="head"
            android:fillColor="#9FBF3B"
            android:pathData="M301.314,83.298l20.159-29.272c1.197-1.74,0.899-4.024-0.666-5.104c-1.563-1.074-3. 805-0.543-4.993,1.199L294.863,80.53c-13.807-5.439-29.139-8.47-45.299-8.47c-16.16,0-31.496,3.028-45.302,8.47l-20.948-30.41c-1.201-1.74-3.439-2.273-5.003-1.199c-1.564,1.077-1.861,3.362-0.664,5.104l20.166,29.272c-32.063,14.916-54.548,43.26-57.413,76.34h318.316C355.861,126.557,333.375,98.214,301.314,83.298" />
        <path
            android:name="left_eye"
            android:fillColor="#FFFFFF"
            android:pathData="M203.956,129.438c-6.673,0-12.08-5.407-12.08-12.079c0-6.671,5.404-12.08,12.08-12.08c6.668,0,12.073,5.407,12.073,12.08C216.03,124.03,210.624,129.438,203.956,129.438" />
        <path
            android:name="right_eye"
            android:fillColor="#FFFFFF"
            android:pathData="M295.161,129.438c-6.668,0-12.074-5.407-12.074-12.079c0-6.673,5.406-12.08,12.074-12.08c6.675,0,12.079,5.409,12.079,12.08C307.24,124.03,301.834,129.438,295.161,129.438" />
        <path
            android:name="left_arm"
            android:fillColor="#9FBF3B"
            android:pathData="M126.
383,297.598c0,13.45-10.904,24.354-24.355,24.354l0,0c-13.45,0-24.354-10.904-24.354-24.354V199.09c0-13.45,10.904-24.354,24.354-24.354l0,0c13.451,0,24.355,10.904,24.355,24.354V297.598z" /> <path android:name="body" android:fillColor="#9FBF3B" android:pathData="M140.396,175.489v177.915c0,10.566,8.566,19.133,19.135,19.133h32.633v54.744c0,13.451,10.903,24.354,24.354,24.354c13.451,0,24.355-10.903,24.355-24.354v-54.744h47.371v54.744c0,13.451,10.902,24.354,24.354,24.354s24.354-10.903,24.354-24.354v-54.744h32.633c10.569,0,19.137-8.562,19.137-19.133V175.489h240.396z" /> <path android:name="right_arm" android:fillColor="#9FBF3B" android:pathData="M372.734,297.598c0,13.45,10.903,24.354,24.354,24.354l0,0c13.45,0,24.354-10.904,24.354-24.354V199.09c0-13.45-10.904-24.354-24.354-24.354l0,0c-13.451,0-24.354,10.904-24.354,24.354V297.598z" /> </group> </vector>

ΠœΡ‹ создали Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… изобраТСния, Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ помСстили элСмСнт с ΡˆΠ΅ΡΡ‚ΡŒΡŽ элСмСнтами , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с svg – Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ»Π΅ β€œname” слуТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для облСгчСния понимая Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΊΠ°ΠΊΠΎΠΉ элСмСнт. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΎΠ½ΠΈ Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Ρ„Π°ΠΉΠ» ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ скромным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 2412 Π±Π°ΠΉΡ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ drawable:


res/layout/activity_vector_drawables.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".VectorDrawablesActivity">

    <ImageView
        android:id="@+id/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/android"
        android:contentDescription="@null" />

</RelativeLayout>

… ΠΈ Ссли ΠΌΡ‹ запустим это, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ отрисовку:

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ APK, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ VectorDrawable, Π³Π΄Π΅ это умСстно. Π’Π°ΠΊ ΠΆΠ΅ это позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ прилоТСния, особСнно, Ссли Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… плотностСй экрана. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Π½Π΅ всС, Π½Π° Ρ‡Ρ‚ΠΎ способСн VectorDrawable. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΊ этой части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

ВСкторная анимация Π² прилоТСниях android (Animated Vector Drawable) β€” Fandroid.info

package …;

Β 

import android.graphics.drawable.Animatable;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.NavigationView;

import android.support.design.widget.Snackbar;

import android.support.v4.view.GravityCompat;

import android.support.v4.widget.DrawerLayout;

import android.support.v7.app.ActionBarDrawerToggle;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.app.AppCompatDelegate;

import android. support.v7.widget.Toolbar;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.ImageView;

Β 

public class MainActivity extends AppCompatActivity

Β Β Β Β Β Β Β Β implements NavigationView.OnNavigationItemSelectedListener {

Β Β Β Β private ImageView mAnimAndroid;

Β 

Β Β Β Β static {

Β Β Β Β Β Β Β Β AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);

Β Β Β Β }

Β 

Β Β Β Β @Override

Β Β Β Β protected void onCreate(Bundle savedInstanceState) {

Β Β Β Β Β Β Β Β super.onCreate(savedInstanceState);

Β Β Β Β Β Β Β Β setContentView(R.layout.activity_main);

Β Β Β Β Β Β Β Β Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

Β Β Β Β Β Β Β Β setSupportActionBar(toolbar);

Β 

Β Β Β Β Β Β Β Β mAnimAndroid = (ImageView) findViewById(R.id.android_anim);

Β 

Β Β Β Β Β Β Β Β FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

Β Β Β Β Β Β Β Β fab.setOnClickListener(new View. OnClickListener() {

Β Β Β Β Β Β Β Β Β Β Β Β @Override

Β Β Β Β Β Β Β Β Β Β Β Β public void onClick(View view) {

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Snackbar.make(view, «Replace with your own action», Snackbar.LENGTH_LONG)

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β .setAction(«Action», null).show();

Β Β Β Β Β Β Β Β Β Β Β Β }

Β Β Β Β Β Β Β Β });

Β 

Β Β Β Β Β Β Β Β DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

Β Β Β Β Β Β Β Β ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

Β Β Β Β Β Β Β Β drawer.setDrawerListener(toggle);

Β Β Β Β Β Β Β Β toggle.syncState();

Β 

Β Β Β Β Β Β Β Β NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

Β Β Β Β Β Β Β Β navigationView.setNavigationItemSelectedListener(this);

Β Β Β Β }

Β 

Β Β Β Β @Override

Β Β Β Β protected void onResume() {

Β Β Β Β Β Β Β Β super.onResume();

Β Β Β Β Β Β Β Β Drawable drawable = mAnimAndroid.getDrawable();

Β Β Β Β Β Β Β Β if (drawable instanceof Animatable){

Β Β Β Β Β Β Β Β Β Β Β Β ((Animatable) drawable). start();

Β Β Β Β Β Β Β Β }

Β 

Β 

Β Β Β Β }

Β 

Β Β Β Β @Override

Β Β Β Β public void onBackPressed() {

Β Β Β Β Β Β Β Β DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

Β Β Β Β Β Β Β Β if (drawer.isDrawerOpen(GravityCompat.START)) {

Β Β Β Β Β Β Β Β Β Β Β Β drawer.closeDrawer(GravityCompat.START);

Β Β Β Β Β Β Β Β } else {

Β Β Β Β Β Β Β Β Β Β Β Β super.onBackPressed();

Β Β Β Β Β Β Β Β }

Β Β Β Β }

Β 

Β Β Β Β @Override

Β Β Β Β public boolean onCreateOptionsMenu(Menu menu) {

Β Β Β Β Β Β Β Β // Inflate the menu; this adds items to the action bar if it is present.

Β Β Β Β Β Β Β Β getMenuInflater().inflate(R.menu.main, menu);

Β Β Β Β Β Β Β Β return true;

Β Β Β Β }

Β 

Β Β Β Β @Override

Β Β Β Β public boolean onOptionsItemSelected(MenuItem item) {

Β Β Β Β Β Β Β Β // Handle action bar item clicks here. The action bar will

Β Β Β Β Β Β Β Β // automatically handle clicks on the Home/Up button, so long

Β Β Β Β Β Β Β Β // as you specify a parent activity in AndroidManifest. xml.

Β Β Β Β Β Β Β Β int id = item.getItemId();

Β 

Β Β Β Β Β Β Β Β //noinspection SimplifiableIfStatement

Β Β Β Β Β Β Β Β if (id == R.id.action_settings) {

Β Β Β Β Β Β Β Β Β Β Β Β return true;

Β Β Β Β Β Β Β Β }

Β 

Β Β Β Β Β Β Β Β return super.onOptionsItemSelected(item);

Β Β Β Β }

Β 

Β Β Β Β @SuppressWarnings(«StatementWithEmptyBody»)

Β Β Β Β @Override

Β Β Β Β public boolean onNavigationItemSelected(MenuItem item) {

Β Β Β Β Β Β Β Β // Handle navigation view item clicks here.

Β Β Β Β Β Β Β Β int id = item.getItemId();

Β 

Β Β Β Β Β Β Β Β if (id == R.id.nav_camera) {

Β Β Β Β Β Β Β Β Β Β Β Β // Handle the camera action

Β Β Β Β Β Β Β Β } else if (id == R.id.nav_gallery) {

Β 

Β Β Β Β Β Β Β Β } else if (id == R.id.nav_slideshow) {

Β 

Β Β Β Β Β Β Β Β } else if (id == R.id.nav_manage) {

Β 

Β Β Β Β Β Β Β Β } else if (id == R.id.nav_share) {

Β 

Β Β Β Β Β Β Β Β } else if (id == R.id.nav_send) {

Β 

Β Β Β Β Β Β Β Β }

Β 

Β Β Β Β Β Β Β Β DrawerLayout drawer = (DrawerLayout) findViewById(R. id.drawer_layout);

Β Β Β Β Β Β Β Β drawer.closeDrawer(GravityCompat.START);

Β Β Β Β Β Β Β Β return true;

Β Β Β Β }

}

Vector для Google Android — MegaObzor

Π˜ΡΡ‚ΠΈΠ½Π½ΡƒΡŽ свободу Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π³ – Π±Π΅Π·ΡƒΠ΄Π΅Ρ€ΠΆΠ½Ρ‹ΠΉ, ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΡ€ΡƒΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. ВсСм ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠ°ΠΌ ΠΏΠ°Ρ€ΠΊΡƒΡ€Π°, прСодолСния прСпятствий, сорСвнований с ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ сопСрниками посвящаСтся эта ΠΈΠ³Ρ€Π° ΠΎΡ‚ Nekki. По своСму классу ΠΎΠ½Π° прСдставляСт собой Π°Ρ€ΠΊΠ°Π΄Ρƒ, Π³Π»Π°Π²Π½Ρ‹ΠΉ смысл ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠ±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠΎΠ³ΠΎΠ½ΠΈ. Π‘ΡŽΠΆΠ΅Ρ‚ начинаСтся с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹Ρ€Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ· сСтСй Ρ‚ΠΎΡ‚Π°Π»ΠΈΡ‚Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вас прСслСдуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΠΎΠ΅Π²ΠΈΠΊΠΎΠ² Β«Π‘ΠΎΠ»ΡŒΡˆΠΎΠ³ΠΎ Π±Ρ€Π°Ρ‚Π°Β», Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стало Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ вас ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.
По Ρ…ΠΎΠ΄Ρƒ сцСнария приходится ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΠ΅ Ρ‚Ρ€ΡŽΠΊΠΈ, Π²Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° отвСсныС стСны, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ особСнности мСстности, ΠΏΡ€Ρ‹ΠΆΠΊΠΈ ΠΈ скольТСния, словом, всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ ниндзя Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² – паркуристов. ПобСда ΠΆΠ΅ достаСтся Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ достигнСт Ρ†Π΅Π»ΠΈ, ΠΈ, Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ Π»ΠΎΠ²ΠΊΠΈ, сколь ваши сопСрники, Π²Ρ‹, СстСствСнно, ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅.

Π˜Π³Ρ€ΡƒΡˆΠΊΠ° отличаСтся достаточно нСслоТным ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным ΠΈ доступным для быстрого осваивания ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ любого класса ΠΈ ΠΎΠΏΡ‹Ρ‚Π° ΠΈΠ³Ρ€Ρ‹ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π°Ρ€ΠΊΠ°Π΄Ρ‹. КаТдая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° прохоТдСния Π΄Π΅Π»Π°Π΅Ρ‚ сильнСС ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Π΅Π΅, позволяСт Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΈ ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚ всС Π½ΠΎΠ²Ρ‹ΠΌ Ρ‚Ρ€ΡŽΠΊΠ°ΠΌ. По Ρ…ΠΎΠ΄Ρƒ Π±Π΅Π³Π° ΠΏΠΎ трассС приходится ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€Ρ‹ΠΆΠΊΠΈ Π½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ расстояния, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ситуации ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€ΠΎΡ‚Ρ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅-ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. По ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΈΠ³Ρ€ доступно ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ своСобразной Π½Π°Π³Ρ€Π°Π΄Ρ‹ Π·Π° идСальноС ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ трассы – Π·Π²Π΅Π·Π΄Ρ‹, максимальноС количСство ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… равняСтся Ρ‚Ρ€Π΅ΠΌ Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ, ΠΈ ΠΊ этому, бСзусловно, Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ всС ΡΠΊΠ°Ρ‡Π°Π²ΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΠ³Ρ€Π° Π±Ρ‹Π»Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² соцсСтях, Π² частности Π² Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈ ЀСйсбукС, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ бСсплатноС снабТСниС Сю устройств Π½Π° iOS, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ для Андроидов. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΡΡ – Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидаСтся ΠΎΠ΄Π½ΠΎ ΠΈΠ· вСсомых ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (ΠΊ слову, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ послСднСС), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ новая локация ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π’Π΅Ρ…Π½ΠΎΠΏΠ°Ρ€ΠΊ с ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·Π°ΠΌΠΈ для ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями гСймплСя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹Ρ… трассах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€ΡŽΠΊΠΈ.

БСйчас ΠΆΠ΅ полная вСрсия ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Π²Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ слоТности, с Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒΡŽ трассами, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² стилС ΠΏΠ°Ρ€ΠΊΡƒΡ€ Ρ‚Ρ€ΡŽΠΊΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ρ‡Ρ‚ΠΎ добавляСт ΠΈΠ³Ρ€Π΅ приятной ΠΈ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ рСалистичности, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ погруТая Π² ΠΌΠΈΡ€ Π»ΠΎΠ²ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ. Π’ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° новая ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ отличная ΠΏΠΎ своСму ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Cascadeur, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ разработанная для создания ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ Ρ‚Π°ΠΊΠΎΠ³ΠΎ направлСния.

Π§Ρ‚ΠΎ интСрСсно, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ этой ΠΈΠ³Ρ€ΠΎΠΉ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ, вСдь Π² Π½Π΅ΠΌ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ всСго лишь стрСлочки Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅: Π²Π²Π΅Ρ€Ρ… (ΠΏΡ€Ρ‹ΠΆΠΎΠΊ), Π²Π½ΠΈΠ· (ΠΏΠΎΠ΄ΠΊΠ°Ρ‚), Π²ΠΏΡ€Π°Π²ΠΎ (быстро Π±Π΅ΠΆΠ°Ρ‚ΡŒ) ΠΈ Π²Π»Π΅Π²ΠΎ (Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒΡΡ). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ процСсс Π±Π΅Π³Π° Π½Π΅Ρ‚ нСобходимости всС врСмя ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡƒ – пСрсонаТ Π±Π΅ΠΆΠΈΡ‚ бСзостановочно, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ лишь ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌ Ρ‚Ρ€ΡŽΠΊΠΎΠ² ΠΈ характСристики двиТСния.

Π£ΠΆΠ΅ ΡƒΡΠΏΠ΅Π²ΡˆΠΈΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π’Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ ΠΏΠ°Ρ€ΠΊΡƒΡ€Π° ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠ°ΠΌ ΡƒΡΠΊΠΎΡ€ΡΡ‚ΡŒΡΡ лишь Π½Π° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ трассах, Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΎΡ…ΠΎΡ‚Π½ΠΈΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΡ‚Π°Ρ‚ΡŒ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠΉ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ оказавшСйся Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΏΡ€Π΅Π³Ρ€Π°Π΄Ρ‹.

А Ссли ΡƒΠΆ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ особо Ρ€Π΅Ρ‚ΠΈΠ²Ρ‹ΠΉ ΠΏΡ€Π΅ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ подбСрСтся ΠΊ Π²Π°ΠΌ слишком Π±Π»ΠΈΠ·ΠΊΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ€ΡƒΠΆΠΈΠ΅ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π΅Π³ΠΎ ΡƒΠ±ΠΈΡ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‚ΡΡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡ€Ρ‹ΠΆΠΊΠ° ΠΈΠ»ΠΈ замСдлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ использованиСм Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ .png для Π·Π½Π°Ρ‡ΠΊΠΎΠ² Π² Android?

Png – сТатоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Он ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ большС ΠΈΠ»ΠΈ мСньшС, Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠ±ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Блишком большой ΠΈΠ»ΠΈ слишком малСнький, ΠΈ ΠΎΠ½ выглядит Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (слишком большой Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ слишком малСнький).

ВыдСляСмый Π²Π΅ΠΊΡ‚ΠΎΡ€ прСдставляСт собой ΡΠ΅Ρ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, поэтому Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΈ 1000Γ—1000, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ 100Γ—100.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ png – Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ (Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹) ΠΈ слоТнСС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ. Но ΠΎΠ½ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π»ΡƒΡ‡ΡˆΠ΅. Если ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ трСбуСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ png – это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Если это Ρ‚Π°ΠΊ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – Π·Π½Π°Ρ‡ΠΎΠΊ – это Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ использованиС Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Ѐотография Π½Π΅ сработаСт.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ drawables ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ вашСго apk, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с нСсколькими Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΏΠΊΠ°Ρ…. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 1 Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ

НСдостатком Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ тяТСлыС, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах

Помимо ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΈ пространствСнных Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°Ρ…, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прСобразования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹). Π‘ Π½Π°Π±ΠΎΡ€ΠΎΠΌ PNG Ρƒ вас Π΅ΡΡ‚ΡŒ статичСскоС прСдставлСниС, ΠΈ всС, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСскими растровыми изобраТСниями (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ с Π½ΠΈΠΌΠΈ слоТныС Π²Π΅Ρ‰ΠΈ). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΡ€Ρ„ΠΈΠ½Π³Π° ΠΏΡƒΡ‚ΠΈ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ графичСских элСмСнтов PNG Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ пространство со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ пространство, Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ прСобразования – это Π·Π°Π΄Π°Ρ‡ΠΈ с интСнсивным использованиСм процСссора – Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ растрового изобраТСния).

ПониманиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Android: VectorDrawable | Ник Π‘Π°Ρ‚Ρ‡Π΅Ρ€ | Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Android

Android-устройства Π±Ρ‹Π²Π°ΡŽΡ‚ всСх Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Ρ„ΠΎΡ€ΠΌ ΠΈ плотности экрана . Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я большой ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ использования Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… рСсурсов, Π½Π΅ зависящих ΠΎΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Но Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ собой ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚? ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΈΡ… прСимущСства? ΠšΠ°ΠΊΠΎΠ²Ρ‹ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹? Когда я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? Как Π²Ρ‹ ΠΈΡ… создаСтС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅? Π’ этой сСрии постов я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ эти вопросы ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ рСсурсов Π² Π²Π°ΡˆΠΈΡ… прилоТСниях Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (png, jpeg, bmp, gif, webp ΠΈ Ρ‚. Π΄.) ΡΠ²Π»ΡΡŽΡ‚ΡΡ растровыми, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ сСтку пиксСлСй. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π² своСм содСрТании, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π²Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля. Однако вСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° описываСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Ρ€ΠΈΡŽ Ρ„ΠΎΡ€ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° абстрактном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ холста.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ 3 основных прСимущСства:

Sharp

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ изобраТСния изящно ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ; ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° абстрактном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ холста, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот холст Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² этом Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅.Однако растровыС рСсурсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. УмСньшСниС ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° растровых рСсурсов, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, допустимо (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ отбрасываСтС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ), Π½ΠΎ ΠΈΡ… ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌ, ΠΊΠ°ΠΊ Π½Π΅Ρ‡Π΅Ρ‚ΠΊΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΡΠ°Ρ‚ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ пиксСли.

АртСфакты ΠΈΠ·-Π·Π° (ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ) ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ растрового изобраТСния (слСва) ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (справа)

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π° Android Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нСсколько вСрсий ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ растрового рСсурса для экранов с Ρ€Π°Π·Π½ΠΎΠΉ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ:

  • res/drawable-mdpi /Ρ„Ρƒ.png
  • res/drawable-hdpi/foo.png
  • res/drawable-xhdpi/foo.png
  • …

Android Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΡƒΡŽ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΅Π΅ (ΠΏΡ€ΠΈ нСобходимости). Учитывая Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΠΊ устройствам с экранами всС Π±ΠΎΠ»Π΅Π΅ высокой плотности, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всС Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ вСрсии ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ рСсурсов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ соврСмСнныС устройства Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сСгмСнты с Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Pixel 3 XL ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ 552 dpi, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ xxhdpi ΠΈ xxxhdpi), поэтому рСсурсы часто ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… рСсурсов ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ измСняСтся, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ рСсурс, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ любой плотности экрана.

ΠœΠ°Π»Ρ‹ΠΉ

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ рСсурсы, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ*, Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹, Ρ‡Π΅ΠΌ растровыС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ.

НапримСр, Π²ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Google I/O, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ряд Π·Π½Π°Ρ‡ΠΊΠΎΠ² с растровых PNG Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΈ сэкономили 482 ΠšΠ‘.Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠΆ большим, это Π±Ρ‹Π»ΠΎ просто для нСбольшой ΠΈΠΊΠΎΠ½ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ; изобраТСния большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ) Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ экономию.

Π­Ρ‚Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° прилоТСния Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π³ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

ΠœΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π½Π° VectorDrawable , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ Π² Ρ‚ΠΎ врСмя ΡˆΠΈΡ€ΠΎΠΊΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ врСмя (спойлСр: ΠΎΠ½ΠΈ сСйчас!) поэтому Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π°ΡΡ‚Ρ€ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ πŸ˜”. Если Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π° 30% большС, Ρ‡Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ :

  • Растр: Π Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ = 53. 9 ΠšΠ‘ (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° = 54,8 ΠšΠ‘)
  • Π’Π΅ΠΊΡ‚ΠΎΡ€: Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ = 3,7 ΠšΠ‘ (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° = 15,8 ΠšΠ‘)

устройство, VectorDrawable , ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, всС Π΅Ρ‰Π΅ мСньшС, Π° Ρ‚Π°ΠΊΠΆΠ΅ устраняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ всС Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ растровыС рСсурсы.

ДинамичСский

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ изобраТСния ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ своС содСрТимоС, Π° Π½Π΅ Β«ΡΠ³Π»Π°ΠΆΠΈΠ²Π°ΡŽΡ‚Β» ΠΈΡ… Π΄ΠΎ пиксСлСй, ΠΎΠ½ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²Π΅Ρ€ΠΈ для Π½ΠΎΠ²Ρ‹Ρ… интСрСсных возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ анимация, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ динамичСскоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌ.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… постах.

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ структуру изобраТСния, поэтому ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ»ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ: рисуСтся ΠΏΠ΅Ρ€Π΅Π΄ использованиСм.

Π¨Π°Π³ΠΈ, связанныС с Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

Для этого Π΅ΡΡ‚ΡŒ Π΄Π²Π° шага:

  1. Π˜Π½Ρ„Π»ΡΡ†ΠΈΡ . Π’Π°Ρˆ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π² VectorDrawable , ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡƒΡ‚ΠΈ, Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ Ρ‚. Π΄., ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅.
  2. Π§Π΅Ρ€Ρ‚Π΅ΠΆ . Π—Π°Ρ‚Π΅ΠΌ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рисования Canvas .

Оба эти шага ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ слоТности Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ Ρ‚ΠΈΠΏΡƒ выполняСмых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТныС Ρ„ΠΎΡ€ΠΌΡ‹, потрСбуСтся большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Path . Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ для выполнСния большСго количСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рисования потрСбуСтся большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ дорогостоящими, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ). ΠœΡ‹ вСрнСмся ΠΊ этому Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ постС этой сСрии ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этих Π·Π°Ρ‚Ρ€Π°Ρ‚.

Для статичСских Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² этап рисования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, послС Ρ‡Π΅Π³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ . АнимированныС Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚Ρ‹ этой ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… свойства ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, трСбуя пСрСрисовки.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с растровыми Π°ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ PNG, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±Ρ‹Π»ΠΎ сильно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

Π­Ρ‚ΠΎ сущСствСнный компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ растром ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ прСимущСства, Π½ΠΎ Π·Π° счСт Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.Π’ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π½ΠΈ Android устройства Π±Ρ‹Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ, Π° ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ экрана ΠΌΠ°Π»ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»Π°ΡΡŒ. БСгодня устройства Android Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ экранов. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ рСсурсы.

ΠŸΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ

Из-Π·Π° Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ подходят для описания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ простыС Π·Π½Π°Ρ‡ΠΊΠΈ ΠΈ Ρ‚. Π΄. Они уТасны ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ фотографичСского Ρ‚ΠΈΠΏΠ°, Π³Π΄Π΅ слоТнСС ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… содСрТимоС ΠΊΠ°ΠΊ ΡΠ΅Ρ€ΠΈΡŽ Ρ„ΠΎΡ€ΠΌ, ΠΈ, вСроятно, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ растровый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, webp).Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, спСктр, Π² зависимости ΠΎΡ‚ слоТности вашСго Π°ΠΊΡ‚ΠΈΠ²Π°.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

НикакиС инструмСнты проСктирования (ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я знаю) Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ VectorDrawable Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ шаг прСобразования ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. ΠœΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим эту Ρ‚Π΅ΠΌΡƒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ постС.

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹, вСроятно, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ SVG (ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ вСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ°), отраслСвым стандартом Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.Он способный ΠΈ Π·Ρ€Π΅Π»Ρ‹ΠΉ с установлСнными инструмСнтами, Π½ΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ стандарт . Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя мноТСство слоТных возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ javascript, эффСкты размытия ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ встраиваниС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π΄Π°ΠΆΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… GIF. Android Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями, поэтому ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСй спСцификации SVG Π½Π΅ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ.

Однако SVG Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚ΠΈ, которая опрСдСляСт, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого API Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€. По сути, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Android: спСцификация ΠΏΡƒΡ‚ΠΈ SVG (плюс нСсколько Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, опрСдСляя собствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, VectorDrawable ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с функциями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android. НапримСр, Ρ€Π°Π±ΠΎΡ‚Π° с систСмой рСсурсов Android для ссылки Π½Π° @colors , @dimens ΠΈΠ»ΠΈ @strings , Ρ€Π°Π±ΠΎΡ‚Π° с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Ρ‚Π΅ΠΌΡ‹ ΠΈΠ»ΠΈ AnimatedVectorDrawable с использованиСм стандартного Animator s.

Как ΡƒΠΊΠ°Π·Π°Π½ΠΎ, VectorDrawable ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚ΠΈ SVG, позволяя ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько Ρ„ΠΎΡ€ΠΌ для рисования.Он создан Π² Π²ΠΈΠ΄Π΅ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π°ΠΊΡ‚ΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Ссли Π±Ρ‹ Π²Ρ‹ установили Π΅Π³ΠΎ Π² wrap_content ImageView . Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° просмотра ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ холст ΠΈΠ»ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠ΅ пространство, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рисования. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° просмотра ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ (Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ) β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π² холстС 1 * 1. Ссли Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько элСмСнтов . Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½Ρ‹ (для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, анимация), Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ элСмСнт pathData , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Ρ„ΠΎΡ€ΠΌΡƒ. Π­Ρ‚Ρƒ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄ΡΡ‰ΡƒΡŽ строку ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ΅Ρ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€ΠΎΠΌ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ холстС:

Визуализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡƒΡ‚ΠΈ

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ΅Ρ€ΠΎ, Π·Π°Ρ‚Π΅ΠΌ проводят линию Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ ΠΏΠ΅Ρ€ΠΎ, Π·Π°Ρ‚Π΅ΠΌ Ρ€ΠΈΡΡƒΡŽΡ‚. другая линия.Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всСго 4 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ (Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, см. ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ):

  • M ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ
  • L линия ΠΊ
  • C (кубичСская кривая Π‘Π΅Π·ΡŒΠ΅) ΠΊ
  • Z Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ (ΠΎΡ‚ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ)

(ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π° строчныС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² SVG? Π₯отя Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ VectorDrawable , Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для понимания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ вСрнСмся ΠΏΠΎΠ·ΠΆΠ΅. .

ΠŸΡƒΡ‚ΠΈ сами ΠΏΠΎ сСбС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ€ΠΈΡΡƒΡŽΡ‚, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ/ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

Π§Π°ΡΡ‚ΡŒ 2 этой сСрии Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы заполнСния/поглаТивания Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡƒΡ‚Π΅ΠΉ. Π­Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ прСобразования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎ всСм путям Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ/ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π³Ρ€ΡƒΠΏΠΏΡƒ. Π­Ρ‚ΠΈ прСобразования Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ особого смысла для статичСских ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Β«Π·Π°ΠΏΠ΅ΠΊΠ°Ρ‚ΡŒΒ» ΠΈΡ… ΠΏΠΎ своим путям, Π½ΠΎ ΠΎΠ½ΠΈ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ clip-path s, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π³Ρ€ΡƒΠΏΠΏΠ΅ . Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ path s.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠΏΡƒΡ‚ΠΈ ΠΊΠ»ΠΈΠΏΠ° Π½Π΅ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ.

ДСмонстрация ΠΏΡƒΡ‚ΠΈ ΠΊΠ»ΠΈΠΏΠ° Π±Π΅Π· сглаТивания

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ сильно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ эффСкт) ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡ΠΊΠ° Π·Π°Ρ‚Π²ΠΎΡ€Π° ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ рисуСт Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ рисуСт сплошной ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, замаскированный ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡƒ Талюзи.ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ интСрСсныС эффСкты (особСнно ΠΏΡ€ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ), Π½ΠΎ это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΡ€ΠΎΠ³ΠΎ, поэтому, Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, нарисовав Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом, сдСлайтС это.

ΠŸΡƒΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ; это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рисованиС подмноТСства всСго ΠΏΡƒΡ‚ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ! Π§Π°Ρ‰Π΅ всСго ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ ΠΎΠ±Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ.

ΠžΠ±Ρ€Π΅Π·ΠΊΠ° ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ²

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ с Π½Π°Ρ‡Π°Π»Π°, Π»ΠΈΠ±ΠΎ с ΠΊΠΎΠ½Ρ†Π° ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ смСщСниС ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±Ρ€Π΅Π·ΠΊΠ°ΠΌ. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ [0,1].ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ установка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ мСняСт Ρ‡Π°ΡΡ‚ΡŒ нарисованной Π»ΠΈΠ½ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ смСщСния ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Β«Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽΒ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это свойство Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого смысла для статичСских ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ root vector ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойство alpha [0, 1]. Π£ Π³Ρ€ΡƒΠΏΠΏ Π½Π΅Ρ‚ свойства Π°Π»ΡŒΡ„Π°, Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ fillAlpha / strokeAlpha .

НадСюсь, этот пост даст Π²Π°ΠΌ прСдставлСниС ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… Π°ΠΊΡ‚ΠΈΠ²Π°Ρ…, ΠΈΡ… прСимущСствах ΠΈ нСдостатках.Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Android Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ. Учитывая Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ устройств Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅, использованиС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… рСсурсов Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ вашим Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° растровыС β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² особых случаях. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сообщСниях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС:

Π‘ΠΊΠΎΡ€ΠΎ: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² для Android
Π‘ΠΊΠΎΡ€ΠΎ: ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Android
VectorDrawable s

Android Vector Drawable Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Android Vector Drawable.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΈΡ… Π² нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Android.

Android Vector Drawable

Часто ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PNG Π² качСствС рисуСмых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ изобраТСния PNG Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… экрана, ΠΌΡ‹ создаСм нСсколько рСсурсов PNG с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ. ВпослСдствии изобраТСния PNG Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ мСсто ΠΈ приводят ΠΊ большим Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ APK ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Android.

Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Vector Drawable! Π­Ρ‚ΠΎ ваша Π·Π°ΠΌΠ΅Π½Π° изобраТСниям PNG.

VectorDrawable β€” это вСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, опрСдСлСнная Π² XML-Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Ρ… вмСстС с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ†Π²Π΅Ρ‚Π΅.

ΠœΠΎΠ³ΡƒΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² соотвСтствии с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ экрана Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства. Они Ρ‚Π°ΠΊΠΆΠ΅ быстро ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° экранС. VectorDrawable β€” это Ρ„Π°ΠΉΠ» XML.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ² Π² ΠΏΠ°ΠΏΠΊΡƒ для рисования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ New | Π’Π΅ΠΊΡ‚ΠΎΡ€ Актив .

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ рисунки Π·Π½Π°Ρ‡ΠΊΠΎΠ² Material Design. Код для VectorDrawable выглядит Ρ‚Π°ΠΊ:

Они ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ Ρ‚Π΅Π³Π΅ . android:viewportWidth ΠΈ android:viewportHeight ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для установки ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты рисуСмых Π³Ρ€Π°Π½ΠΈΡ†.Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этих Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π²Π΅ΠΊΡ‚ΠΎΡ€ рисуСтся Π½Π° холстС.

ΠΏΡƒΡ‚ΡŒ β€” это Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт рисуСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ создаСм Π»ΠΈΠ½ΠΈΠΈ, ΠΊΡ€ΠΈΠ²Ρ‹Π΅, Π΄ΡƒΠ³ΠΈ ΠΈ устанавливаСм Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°. ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΏΡƒΡ‚ΠΈ Π² pathData .

Vector Drawables Π±Ρ‹Π»ΠΈ прСдставлСны начиная с Android Lollipop ΠΈ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ благодаря ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΎΠ½ΠΈ совмСстимы ΠΈ с Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΌΠΈ вСрсиями.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ для Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ²

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡƒΡ‚ΠΈ состоят ΠΈΠ· Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ созданиС Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° рисованиС. Π—Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НиТний рСгистр ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

  • M – ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ . Π­Ρ‚ΠΎ способ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, пСрСмСститС свой ΠΊΠ°Ρ€Π°Π½Π΄Π°Ρˆ Π½Π° Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ Π² прСдставлСнии. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ M 100 100 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ€Π°Π½Π΄Π°Ρˆ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ 100, 100 Π½Π° холстС.
  • L – строка Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рисования Π»ΠΈΠ½ΠΈΠΈ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.
    ΠŸΡ€ΠΈΠΌΠ΅Ρ€: M 100 100, L 120 100 рисуСт Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ линию.
  • z β€” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для закрытия ΠΏΡƒΡ‚ΠΈ. Он рисуСт линию ΠΎΡ‚ послСднСй ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ M 100 100 L 120 100 L 120 120 L 100 120 Z создаСт ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚.
  • C β€” Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅. ПослС этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈ вторая Π±ΡƒΠ΄ΡƒΡ‚ двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.
  • A – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рисования Π΄ΡƒΠ³ΠΈ. ПослС a Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: (rx ry x-ось-Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ большая-Π΄ΡƒΠ³Π°-Ρ„Π»Π°Π³ Ρ„Π»Π°Π³ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠΈ x y).rx ry ΠΈ ось x β€” Π΄Π²Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… радиуса.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅, установив Ρ‚Π΅Π³ΠΈ ΠΏΡƒΡ‚ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° group .

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим случайный интСрСсный Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ рисунок Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Android, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ знания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Android Vector Drawable

Android Vector Drawable Code

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΠΌΠ°ΠΊΠ΅Ρ‚Π° activity_main. xml:

 



    <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_width = "32dp"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_height = "32dp"
        android:src="@drawable/ic_w" />

    <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
        Android: layout_width = "wrap_content"
        android:layout_height="wrap_content"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_margin = "8dp"
        android:src="@drawable/ic_w_fill" />

    <Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚
        Android: layout_width = "wrap_content"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_height="wrap_content">

        <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_width = "16dp"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_gravity = "center_vertical"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_height = "16dp"
            android:src="@drawable/ic_a" />


        <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
            Android: layout_width = "wrap_content"
            android:layout_height="wrap_content"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_margin = "8dp"
            android:src="@drawable/ic_c" />

    

    <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
        Android: layout_width = "wrap_content"
        android:layout_height="wrap_content"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_margin = "8dp"
        android:src="@drawable/ic_0" />

    <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
        Android: layout_width = "wrap_content"
        android:layout_height="wrap_content"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_margin = "8dp"
        android:src="@drawable/ic_jd" />


  

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Vector Drawables ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ic_rectangle.xml

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "100"
    Android: ViewPortWidth="100">

    <ΠΏΡƒΡ‚ΡŒ
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "свСт_Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"
        Android:fillColor="@color/colorPrimary"
        android:pathData="M 100,0 L 0,100 100,100 z" />

    <ΠΏΡƒΡ‚ΡŒ
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ_Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"
        Android:fillColor="@color/colorPrimaryDark"
        android:pathData="M 0,0 L 100,0 0,100 z" />


  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ.

ΠŸΡ€ΠΈ установкС этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² LinearLayout Ρ„ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ic_w.xml

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "50dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "50dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "50. 0"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportWidth="50.0">
    <Π³Ρ€ΡƒΠΏΠΏΠ° android:name="w">

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΎΠ΄ΠΈΠ½"
            android:pathData="M 25 0 L 10 40"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Π΄Π²Π°"
            android:pathData="M 25 0 L 40 40"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />


        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‚Ρ€ΠΈ"
            android:pathData="M 10 40 L 0 0 "
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅"
            android:pathData="M 40 40 L 50 0"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

    

  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ пытаСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ символ W с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΈΠ½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВмСсто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС Π² ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΡƒΡ‚ΠΈ. Π₯отя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΡƒΡ‚Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

ic_w_filled.xml
Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ z, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… Ρ†Π²Π΅Ρ‚ΠΎΠΌ:

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "50dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "50dp"
    android:viewportHeight="50.0"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportWidth="50.0">
    <Π³Ρ€ΡƒΠΏΠΏΠ° android:name="wFilled">

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΎΠ΄ΠΈΠ½"
            android:pathData="M 25 0 L 10 40 M 25 0 L 40 40"
            Android: ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚Π¦Π²Π΅Ρ‚ = "# 000"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />


        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Π΄Π²Π°"
            android:fillColor="@android:color/holo_orange_light"
            android:pathData="M 10 40 L 0 0 L 25 0 Z"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‚Ρ€ΠΈ"
            android:fillColor="@android:color/holo_orange_light"
            android:pathData="M 40 40 L 50 0 L 25 0 Z"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

    

  

ic_a. xml
Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π±ΡƒΠΊΠ²Ρƒ А, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡƒΡ‚ΠΈ.

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "50dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "50dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "50.0"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportWidth="50.0">
    <Π³Ρ€ΡƒΠΏΠΏΠ° android:name="a">

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΎΠ΄ΠΈΠ½"
            android:pathData="M 25 0 L 10 40"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "2" />

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Π΄Π²Π°"
            android:pathData="M 25 0 L 40 40"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "2" />


        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‚Ρ€ΠΈ"
            android:pathData="M 15 25 L 34 25"
            android:strokeColor="#FFF"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "2" />
    

  

ic_c.xml

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas. android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "48dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "48dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "48.0"
    Android: ΡˆΠΈΡ€ΠΈΠ½Π° ΠΎΠΊΠ½Π° просмотра = "48.0">
    <ΠΏΡƒΡ‚ΡŒ
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΊΡ€ΠΈΠ²Ρ‹Π΅"
        android:pathData="M 25 0 C -25 12,5 22 40 25 25"
        android:strokeColor="#FFF"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

  

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ рисунки Π±ΡƒΠΊΠ² A ΠΈ C выглядят Ρ‚Π°ΠΊ:

ic_0.xml

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "60dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "60dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "50"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportWidth="50">

    <ΠΏΡƒΡ‚ΡŒ
        android:fillColor="@android:color/holo_green_dark"
        android:pathData="M16,25
        А10,10 0 2,2 36,25
        A10,10 0 2,2 16,25 Z" />


  

ΠžΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ строится ΠΈΠ· Π΄Π²ΡƒΡ… Π΄ΡƒΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΡ‹ΠΊΠ°ΡŽΡ‚ΡΡ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ послСднСС. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Π·Π½Π°Ρ‡ΠΊΠ° JournalDev JD, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ рисованиС.

 

<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="https://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "48dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "48dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "48.0"
    Android: ΡˆΠΈΡ€ΠΈΠ½Π° ΠΎΠΊΠ½Π° просмотра = "48.0">
    <Π³Ρ€ΡƒΠΏΠΏΠ° android:name="thing">
        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΊΡ€ΠΈΠ²Ρ‹Π΅"
            android:pathData="M 25 10 L 12 10 M 25 10 L 25 30 M 25 30 C 20 35 15 30 12 25"
            Android: ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚Π¦Π²Π΅Ρ‚ = "# 000"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

        <ΠΏΡƒΡ‚ΡŒ
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "ΠΊΡ€ΠΈΠ²Ρ‹Π΅"
            android:pathData="M 30 10 L 30 30 M 30 10 C 45 15 45 25 30 30"
            android:strokeColor="@android:color/holo_red_dark"
            Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° Ρ…ΠΎΠ΄Π° = "1" />

    

  

НаконСц, Π²Ρ‹Π²ΠΎΠ΄ нашСго прилоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

На этом ΡƒΡ€ΠΎΠΊ заканчиваСтся.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Android VectorDrawable ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅:

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ отступы ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌΡƒ рисунку Android

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡ΠΊΠΎΠ² Π² прилоТСния для Android Π²Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ Π·Π½Π°Ρ‡ΠΊΠ°ΠΌΠΈ. НапримСр, прСвосходная встроСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠΊΠΎΠ½ΠΎΠΊ (Ρ‚Π°ΠΊΠΆΠ΅ доступна ΠΎΠ½Π»Π°ΠΉΠ½) содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ идСально ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ.

Однако ΠΈΠ½ΠΎΠ³Π΄Π° эти Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… мСстах. Π‘ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ изобраТСния Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ отступы Π»Π΅Π³ΠΊΠΎ, Π½ΠΎ Π½Π΅ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ!

Π’ этом руководствС рассказываСтся, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ отступы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π°Ρ… вашСго прилоТСния.Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π·Π½Π°Ρ‡ΠΎΠΊ β€” Π±Π΅Π»Ρ‹ΠΉ access_time , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для прСдставлСния состояния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π’ ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ StaggeredGridLayoutManager ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния Ρ‚Ρ€Π΅Ρ… постСров Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π² строкС. Π­Ρ‚ΠΈ ΠΊΠΈΠ½ΠΎΠ°Ρ„ΠΈΡˆΠΈ всСгда ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты 1:1,5.

ИспользованиС Π·Π½Π°Ρ‡ΠΊΠ°

Если ImageView ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ настроСны Π½Π° наш Π·Π½Π°Ρ‡ΠΎΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π»ΠΈΠ±ΠΎ Π² качСствС изобраТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π»ΠΈΠ±ΠΎ Π² качСствС заполнитСля Пикассо), Ρ€Π°Π·Π½ΠΈΡ†Π° Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… сразу становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ:

 <Π²Π΅ΠΊΡ‚ΠΎΡ€ android:height="24dp"
    android:viewportHeight="24. 0" android:viewportWidth="24.0"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    
 

ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° нашСго Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ

НашС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слишком малСнькоС! Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ android:height="24dp" android:width="24dp" ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π·Π½Π°Ρ‡ΠΎΠΊ, Ρ‡Ρ‚ΠΎ обСспСчиваСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.Установка для Π½ΠΈΡ… ΠΎΠ±ΠΎΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ 240dp устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°, Π½ΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1:1 ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ 1:1,5 Π½Π° постСрС Ρ„ΠΈΠ»ΡŒΠΌΠ°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ постСры Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² постоянно Ρ‚ΠΎΠ»ΠΊΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π° Π·Π½Π°Ρ‡ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

 <Π²Π΅ΠΊΡ‚ΠΎΡ€ android:height="240dp"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="240dp" xmlns:android="http://schemas.android.com/apk/res/android">
    
 

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ нашСго Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ рисунка

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ рисуСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ соотвСтствовал Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ содСрТимому. НапримСр, для ΡˆΠΈΡ€ΠΈΠ½Ρ‹ 200 потрСбуСтся высота 300. ВнСсСниС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ останавливаСт постСры Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² / Π·Π½Π°Ρ‡ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚ΠΎΠ»ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π½ΠΎ Π·Π½Π°Ρ‡ΠΎΠΊ растянулся!

 <Π²Π΅ΠΊΡ‚ΠΎΡ€ android:height="300dp"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="200dp" xmlns:android="http://schemas.android. com/apk/res/android">
    
 

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ заполнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСго рСсурса

РСшСниС состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ отступы ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌΡƒ рисунку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходноС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1:1.Π­Ρ‚ΠΎ дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ добавлСния Β Π²ΠΎΠΊΡ€ΡƒΠ³ . Π­Ρ‚Π° Π³Ρ€ΡƒΠΏΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ (фактичСский Π·Π½Π°Ρ‡ΠΎΠΊ), Π½Π΅ влияя Π½Π° ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€/ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ scaleX Β ΠΈ scaleY Β ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, для Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ΠΈΠ»ΠΈ мСньшС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ кадрирования. НапримСр, Ссли Π·Π°Π΄Π°Ρ‚ΡŒ для scaleX Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0,99 ΠΈ для scaleY Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0,66 , Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 1:1,5. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ pivotX Β ΠΈ pivotY Β Π·Π°Π΄Π°ΡŽΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π²Π°ΡˆΠΈΡ… viewpointWidth ΠΈ viewpointHeight Β (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³. 12).

 <Π²Π΅ΠΊΡ‚ΠΎΡ€ android:height="300dp"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="200dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <Π³Ρ€ΡƒΠΏΠΏΠ°
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄:ΠΌΠ°ΡΡˆΡ‚Π°Π±X="0,99"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΠΌΠ°ΡΡˆΡ‚Π°Π± Y = "0,66"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΠΏΠΈΠ²ΠΎΡ‚Π₯ = "12"
        Android: PivotY="12">
        
    
 

НаконСц-Ρ‚ΠΎ это выглядит Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ! ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ большС отступов ΠΏΠΎ Π±ΠΎΠΊΠ°ΠΌ, scaleX Β ΠΈΠ· 0,8 ΠΈ scaleY Β ΠΈΠ· 0,4 Β ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ отступы со всСх сторон.

НадССмся, Ρ‡Ρ‚ΠΎ это руководство ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± содСрТимого SVG.Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ частям SVG, Ссли Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡƒΡ‚Π΅ΠΉ!

Β 

(Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ!) ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ сообщСния

БоставлСниС Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Ρ†Π°

β€” ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

MainActivity.kt

 
ΠΏΠ°ΠΊΠ΅Ρ‚ com.cfsuman.jetpackcompose

ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.appcompat.app.AppCompatActivity
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ android.os.Bundle
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.activity.compose.setContent
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.foundation.Image
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ.основной.Ρ„ΠΎΠ½
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.foundation.layout.*
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.runtime.Composable
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.Alignment
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.Modifier
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.graphics.Color
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.graphics.ColorFilter
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.graphics.vector.ImageVector
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx. compose.ui.res.vectorResource
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.tooling.preview.Preview
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ androidx.compose.ui.unit.dp

класс MainActivity : AppCompatActivity() {
    ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ onCreate(savedInstanceState: Bundle?) {
        супСр.ΠΏΡ€ΠΈ создании (сохранСнноС состояниС экзСмпляра)

        setContent {
            ОсновноС содСрТаниС()
        }
    }


    @составной
    вСсСло MainContent () {
        Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ†(
            ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
                .fillMaxSize ()
                .background (Π¦Π²Π΅Ρ‚ (0xFFFEFEFA))
                .padding(16.dp),
            verticalArrangement = РасполоТСниС.spacedBy(32.dp)
        ) {
            Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅(
                ImageVector.vectorResource(
                    ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = R.drawable.ic_baseline_menu_book_24
                ),
                "Π›ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ описаниС",
                Ρ†Π²Π΅Ρ‚Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Π¦Π²Π΅Ρ‚Π€ΠΈΠ»ΡŒΡ‚Ρ€.ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ(Π¦Π²Π΅Ρ‚(0xFFDA1884))
            )

            Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅(
                ImageVector. vectorResource(
                    ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = R.drawable.ic_baseline_menu_book_24
                ),
                "Π›ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ описаниС",
                colorFilter = ColorFilter.tint(Π¦Π²Π΅Ρ‚(0xFF333399)),
                ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
                    .Ρ€Π°Π·ΠΌΠ΅Ρ€(150.dp)
            )

            Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅(
                ImageVector.vectorResource(
                    ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = R.drawable.ic_baseline_menu_book_24
                ),
                "Π›ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ описаниС",
                Ρ†Π²Π΅Ρ‚Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Π¦Π²Π΅Ρ‚Π€ΠΈΠ»ΡŒΡ‚Ρ€.ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ(Π¦Π²Π΅Ρ‚(0xFFED9121)),
                ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ = ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
                    .Ρ€Π°Π·ΠΌΠ΅Ρ€(250.dp, 100.dp)
                    .Ρ„ΠΎΠ½ (Π¦Π²Π΅Ρ‚ (0xFFF7E7CE)),
                Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ = Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.CenterEnd
            )
        }
    }


    @ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр
    @составной
    вСсСло ComposablePreview () {
        //ОсновноС содСрТаниС()
    }
}
  

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ простых Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… рисунков Π² Android Studio

ИспользованиС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… рисунков часто Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ растровыС изобраТСния, ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: ΠΎΠ½ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ чСткости, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для всСх плотностСй экрана.

Иногда ΠΌΠ½Π΅ каТСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ рисунки Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² Android Studio, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡƒΡ‚ΠΈ SVG.

Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π½ΠΈΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

{: .center-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π― ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, состоящий ΠΈΠ· Π΄Π²ΡƒΡ… смСТных Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

{: .center-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» для рисования

{: .center-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π¨Π°Π³ 2. УстановитС Ρ€Π°Π·ΠΌΠ΅Ρ€ для рисования

  
<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="http://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "100"
    Android: ViewPortWidth="100">

  

Бвойства android:width ΠΈ android:height ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ drawable, поэтому это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² основном, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ drawable с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ высотой wrap_content ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  <Π’ΠΈΠ΄ изобраТСния
        android:src="@drawable/ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"
        Android: layout_width = "wrap_content"
        android:layout_height="wrap_content" />  

Бвойства android:viewportWidth ΠΈ android:viewportHeight Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ для нас, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ холста для рисования Π½Π°ΡˆΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ.

Π¨Π°Π³ 3: НарисуйтС ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ нашСго ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ холста ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ, провСдя ΠΏΡƒΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹: A , B ΠΈ C .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ β€” Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» холста (0,0), Π° Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» (100,100), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ установили android:viewportWidth="100" ΠΈ android:viewportHeight ="100" .

{: .Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΡƒΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° :

  <ΠΏΡƒΡ‚ΡŒ
    android:fillColor="[ваш Ρ†Π²Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· рСсурсов ΠΈΠ»ΠΈ RGB Hex)]"
    android:pathData="[ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡƒΡ‚ΠΈ SVG]" />  

Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SVG:

  • M β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ
  • L β€” Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π΄ΠΎ
  • z β€” близкая Π΄ΠΎΡ€ΠΎΠΆΠΊΠ°

Рисунок Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° состоит ΠΈΠ·:

  1. Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· A=(0,0) : M 0,0
  2. рисованиС Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎ B=(100,0) : L 100,0
  3. рисованиС Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎ C=(0,100) : L 0,100
  4. Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ: z

ВмСсто этого ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ lineto ( l ) ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • ΠΎΡ‚ A Π΄ΠΎ B : Π» 100,0
  • ΠΎΡ‚ B Π΄ΠΎ C : Π» -100 100

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ нСсколько Ρ€Π°Π· подряд, Π±ΡƒΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° выглядит Ρ‚Π°ΠΊ: M 0,0 L 100,0 0,100 z

Π”Π°Π²Π°ΠΉΡ‚Π΅ помСстим это Π² Ρ„Π°ΠΉΠ» для рисования:

  
<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="http://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "100"
    Android: ViewPortWidth="100">

    <ΠΏΡƒΡ‚ΡŒ
        Android:fillColor="@color/triangle_red_light"
        android:pathData="M 0,0 L 100,0 0,100 z" />

  

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра:

{: .Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π¨Π°Π³ 4: НарисуйтС Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΎΡ‡Π΅Π½ΡŒ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π•Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹:

  • Π’=(100,0)
  • Π‘=(0,100)
  • Π”=(100,100)

поэтому ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡƒΡ‚ΠΈ: M 100,0 L 0,100 100,100 z

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ XML Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выглядит Ρ‚Π°ΠΊ:

   0" encoding="utf-8"?>
<Π²Π΅ΠΊΡ‚ΠΎΡ€ xmlns:android="http://schemas.android.com/apk/res/android"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: высота = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: ΡˆΠΈΡ€ΠΈΠ½Π° = "100dp"
    Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: viewportHeight = "100"
    Android: ViewPortWidth="100">

    <ΠΏΡƒΡ‚ΡŒ
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ_Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄:fillColor="@color/triangle_red_dark"
        android:pathData="M 100,0 L 0,100 100,100 z" />

    <ΠΏΡƒΡ‚ΡŒ
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: имя = "свСт_Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ"
        Android:fillColor="@color/triangle_red_light"
        android:pathData="M 0,0 L 100,0 0,100 z" />

  

Подсказка: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ·ΠΆΠ΅, Ссли ваш рисунок станСт Π±ΠΎΠ»Π΅Π΅ слоТным.

{: .center-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π¨Π°Π³ 5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рисуСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ImageView

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ drawable. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойств android:layout_width , android:layout_height ΠΈ android:scaleType .

  


    <ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ изобраТСния
        Android: layout_width = "match_parent"
        Π°Π½Π΄Ρ€ΠΎΠΈΠ΄: layout_height = "match_parent"
        Android: ScaleType = "fitXY"
        ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:srcCompat="@drawable/ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ" />

  

{: .center-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ }

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π»ΡƒΡ‡ΡˆΠΈΡ… Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для создания Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² 2022 Π³ΠΎΠ΄Ρƒ

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π² создании Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Π°ΠΌ понадобятся.Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для настройки ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ настройки Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для создания Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ±ΠΎ всСх прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ Π²Π°ΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ 5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈΠ· Π½ΠΈΡ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

Π ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π² Adobe Illustrator

Π­Ρ‚ΠΎ Π½Π΅ полноцСнная вСрсия Adobe Illustrator для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств. Π­Ρ‚ΠΎ самый простой Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ€ΠΈΡΠΎΠ²Π°Π»ΡŒΡ‰ΠΈΠΊ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ.Если Π²Ρ‹ Π½Π°Π΄Π΅Π΅Ρ‚Π΅ΡΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ создаСтС, это Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Он ΠΈΠΌΠ΅Π΅Ρ‚ бСсплатноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ объСмом 2 Π“Π‘, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС свои изобраТСния Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого прилоТСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ· прилоТСния ΠΊ своим рСсурсам, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ изобраТСния Adobe Stock, Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² Lightroom, ΠΈΠ»ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, созданныС Π² Capture.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Β«ΠŸΠ΅Ρ€ΠΎΒ» SVG

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°/ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ изобраТСния Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΡ‹ΡˆΠΈ! ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ ΠΏΠ°Π»Π΅Ρ† ΠΏΠΎ экрану, ΠΊΡ€ΠΈΠ²Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π΄Π²ΡƒΡ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² исходной ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…. Π‘ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ просто, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ΡˆΡŒΡŽ! Pen Tool SVG Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ снизил ΠΏΠΎΡ€ΠΎΠ³ Π²Ρ…ΠΎΠ΄Π° для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅, Π½ΠΎ ΠΈ прСдоставил Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ всСх ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ: Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ.

Π”Ρ€ΡƒΠ³ΠΈΠΌ простым Π² использовании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ это, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ слоТноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ с Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройкой всСго.

Π’Π΅ΠΊΡ‚ΠΎΡ€

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ просто ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ изобраТСния, Π° Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‚ΠΎ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Он ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π² создании Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² создании ΠΏΠ»Π°ΠΊΠ°Ρ‚ΠΎΠ² ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠ².

Vector идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для всСх, ΠΊΡ‚ΠΎ занимаСтся созданиСм ΠΏΠ»Π°ΠΊΠ°Ρ‚ΠΎΠ², Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈ Π²ΠΈΠ·ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ производитСля ΠΏΠ»Π°ΠΊΠ°Ρ‚ΠΎΠ², Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈ Π²ΠΈΠ·ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ. Vector позволяСт Π²Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ‹, просто загруТая Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ с вашСго устройства Π½Π° Π·Π½Π°Ρ‡ΠΎΠΊ β€” Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ΄Π΅ΠΉ! Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠ»Π°ΠΊΠ°Ρ‚Π° ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°, Π² этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ доступны ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. Vector β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒ ваш ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ дизайнСрский ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΈ изобраТСниями β€” это особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ дня Π²Π΄Π°Π»ΠΈ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола ΠΈΠ·-Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹; Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ.

Π‘ΠΊΠ΅Π΄ΠΈΠΎ

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ слоТныС рисунки, Π½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚ ΠΈΠ»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ для внСсСния ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ кисти ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты для Ρ‚ΠΎΡ‡Π½ΠΎΠΉ настройки всСго.

ВсДрав

Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ простоС Π² использовании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ. Π•Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ сэкономит, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ SVG, ΠΈ это доставит Π²Π°ΠΌ массу ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ± этих Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… прилоТСниях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для рисования Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ГалСрСя NuGet | Xamarin.Android.

Support.Animated.Vector.Drawable 28.0.0.3

ΠšΡΠ°ΠΌΠ°Ρ€ΠΈΠ½.ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠΈ Android для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Android β€” анимация-Π²Π΅ΠΊΡ‚ΠΎΡ€-рисунок

  • МоноAndroid 6.0
  • ΠœΠΎΠ½ΠΎΠΠ½Π΄Ρ€ΠΎΠΈΠ΄ 7.0
  • ΠœΠΎΠ½ΠΎΠΠ½Π΄Ρ€ΠΎΠΈΠ΄ 7.1
  • МоноAndroid 8.0
  • МоноAndroid 8.
    1
  • ΠœΠΎΠ½ΠΎΠΠ½Π΄Ρ€ΠΎΠΈΠ΄ 9.0

NuGet-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (138)

ΠŸΠΎΠΊΠ°Π·Π°Π½Ρ‹ 5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² NuGet, зависящих ΠΎΡ‚ Xamarin.Android.Support.Animated.Π’Π΅ΠΊΡ‚ΠΎΡ€. РисуСмый:

Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² GitHub (108)

ΠŸΠΎΠΊΠ°Π·Π°Π½Ρ‹ 5 самых популярных Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² GitHub, зависящих ΠΎΡ‚ Xamarin. Android.Support.Animated.Vector.Drawable:

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π—Π²Π΅Π·Π΄Ρ‹
Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс / Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс

Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Π°Ρ, компонуСмая, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ рСактивная срСда ΠΌΠΎΠ΄Π΅Π»ΠΈ-прСдставлСния-прСдставлСния для всСх .NET, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ReactiveUI позволяСт Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСняСмоС состояниС ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ идСю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ мСстС ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ вашСго прилоТСния.

ΠšΠ°Π»ΠΈΠ±ΡƒΡ€Π½-ΠœΠΈΠΊΡ€ΠΎ/Caliburn.ΠœΠΈΠΊΡ€ΠΎ

НСбольшая, Π½ΠΎ мощная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, прСдназначСнная для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… XAML.Π•Π³ΠΎ мощная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° шаблонов MV* ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ быстро ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· нСобходимости ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ качСством ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ.

ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ xamarin/monodroid

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Xamarin.ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Android.

ксамарин/ксамаринкомпонСнтс

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ для Xamarin

XLabs/Xamarin-Forms-Labs

Xamarin Forms Labs β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся прСдоставлСниС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ ΠΈ кроссплатформСнного Π½Π°Π±ΠΎΡ€Π° элСмСнтов управлСния ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ², Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Xamarin Forms.

Android.Support.Animated.Vector.Drawable»>
ВСрсия Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ПослСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
28.0.0.3 4 089 026 04.09.2019
28. 0.0.1 2 087 353 18.01.2019
28.0,0 194 949 17. 12.2018
28.0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия9 2630 13.12.2018
28. 0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия8 7496 23.11.2018
28.0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия7 4553 13. 11.2018
28.0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия6 1504 09.11.2018
28. 0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия5 2224 30.10.2018
28.0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия4 1238 26. 10.2018
28.0.0-ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия3 1790 19.10.2018
28. 0.0-ΠΏΡ€Π΅Π²ΡŒΡŽ2 1557 16.10.2018
28.0.0-ΠΏΡ€Π΅Π²ΡŒΡŽ1 1480 11. 10.2018
27.0.2.1 1 660 326 12.06.2018
27. 0,2 852 014 06.03.2018
27.0.2-ΠΏΡ€Π΅Π²ΡŒΡŽ1 18 240 12. 01.2018
26.1.0.1 643 800 31.10.2017
26. 1.0-Π±Π΅Ρ‚Π°1 1156 13.10.2017
26.0,2 369 205 13. 10.2017
26.0.2-rc1 2238 02.10.2017
26. 0,2-Π±Π΅Ρ‚Π°1 2495 18.09.2017
25.4.0.2 1 133 676 24. 08.2017
25.4.0.1 63 383 08.08.2017
25. 4.0-rc1 8728 11.07.2017
25.3.1 429 660 26. 04.2017
25.3.1-Π±Π΅Ρ‚Π°1 4341 03.04.2017
25. 2.0-Π±Π΅Ρ‚Π°1 2926 03.03.2017
25.1.1 142 190 13. 02.2017
25.1.1-Π±Π΅Ρ‚Π°1 1473 08.02.2017
25. 1,0 166 364 03.02.2017
25.1.0-Π±Π΅Ρ‚Π°2 3819 05. 01.2017
25.1.0-Π±Π΅Ρ‚Π°1 2343 22.12.2016
25. 0.1-rc1 2915 22.11.2016
24.2.1 161 121 19. 10.2016
24.2.1-rc1 1910 06.10.2016
24. 2.1-Π°Π»ΡŒΡ„Π°1 2786 23.09.2016
23.4.0.1 204 865 13. 07.2016
23.4.0 37 237 21.06.2016
23.4. 0-Π±Π΅Ρ‚Π°1 2808 13.05.2016
23.3.0 1 496 445 15. 04.2016
23.3.0-Π±Π΅Ρ‚Π°1 2226 07.04.2016
23. 2.1 33 158 04.04.2016
23.2.1-Π±Π΅Ρ‚Π°2 1783 30. 03.2016
23.2.1-Π±Π΅Ρ‚Π°1 1700 24.03.2016
23. 2.0-Π±Π΅Ρ‚Π°1 1428 01.03.2016
.