Π Π°Π·Π½ΠΎΠ΅

Android studio красивыС ΠΊΠ½ΠΎΠΏΠΊΠΈ: Π”Π΅Π»Π°Π΅ΠΌ красивыС ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Android

09.06.2019

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ #2: Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽΡΡ Π² Ρ„ΠΎΡ€ΠΌΡƒ | by Vitaly Veldyasov

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ https://android.jlelse.eu/make-your-app-shine-2-how-to-make-a-button-morph-into-a-form-81d2f0e6bf4a

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, это вторая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ· сСрии, Π³Π΄Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простыС, Π½ΠΎ красивыС ΠΌΠΈΠΊΡ€ΠΎ взаимодСйствия. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ здСсь ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ здСсь. ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь:

https://github.com/leandroBorgesFerreira/buttonMorphToFormAndroid

ВзаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ UI (views) Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ усилий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это выглядСло Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ это Ρ‚Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΎ Ρ†Π΅Π½Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, которая ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ нравится:

β€œΠ•ΡΠ»ΠΈ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½ это Π΄ΠΎΡ€ΠΎΠ³ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.” –Ralf Speth

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Ρ‡Ρ‚ΠΎΠ±Ρ‹ β€œΠ²Ρ‹Π»ΠΈΠ·Π°Ρ‚ΡŒβ€ ваш UI β€” ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅ΠΉ (Волько Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ Π²Π°ΡˆΠΈΡ… Π΄ΠΈΠ΄Π»Π°ΠΉΠ½Π°Ρ…, ΠΎΠΊ?). Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ сами Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹.

Π’Π°ΠΊ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ наш layout с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим XML, для нашСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΎ наша ΠΊΠ½ΠΎΠΏΠΊΠ°:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: β€œΠ­Ρ‚ΠΎ всё Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΡƒ?? o.O”. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС view Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ этот layout:

1 β€” CardView ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°). Он позволяСт ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΡƒΠ³Π»Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹. Π­Ρ‚ΠΎ view, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

2 β€” Кнопка с id = login_btn Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° событиС click.

3 β€” LinearLayout содСрТит всС views Ρ„ΠΎΡ€ΠΌΡ‹.

4 β€” ВсС views Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ сво-Π²ΠΎ visibility = GONE (скрыты). БСйчас наша Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ просто ΠΊΠ½ΠΎΠΏΠΊΠ°.

Когда views Ρ„ΠΎΡ€ΠΌΡ‹ скрыты, это выглядит Ρ‚Π°ΠΊ:

Но Ссли ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ всС view, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Π£Ρ€ΠΎΠΊ 3.

РСсурсы ΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ экрана прилоТСния, ConstraintLayout Π² Android Studio β€” Fandroid.info

Π­Ρ‚ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ основам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ дошли Π΄ΠΎ собствСнно программирования Π½Π° языкС Kotlin, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ – это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим рСсурсы прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ создадим ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ для экранов прилоТСния. ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ конструкции Π½Π° языкС Kotlin ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экран Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Android связан с ΠΎΠ΄Π½ΠΈΠΌ классом Java ΠΈΠ»ΠΈ Kotlin, извСстным ΠΊΠ°ΠΊ Activity.  Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ,  Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°. ЕдинствСнный экран с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΌ Β«Hello WorldΒ» создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ  MainActivity.

kt. Π­Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ Π±Ρ‹Π»ΠΎ создано  ΡΡ€Π΅Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создали свой Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠšΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Android ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ. Android Studio ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹.

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

1 . Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΠΊΠ΅Ρ‚Π° Π² Android Studio

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ прСдставляСт собой view, ΠΈΠ»ΠΈ прСдставлСниС. Π’ этой Π·Π°Π΄Π°Ρ‡Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ интСрфСйс Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Android Studio ΠΈ разбСрСмся, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния свойств для view.

Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅
  • Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ значСния свойств.
  • Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строковыС рСсурсы.
  • Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΠΊΠ΅Ρ‚Π°

  1. НайдитС ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся всС ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹ res/layout.
  2. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Π° экрана activity_main
    .xml.ПанСль справа, называСмая Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² , ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ содСрТимоС этого Ρ„Π°ΠΉΠ»Π°.
  3. Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ: Β« Π”ΠΈΠ·Π°ΠΉΠ½ ΠΈ Ρ‚Скст» . ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ «ВСкст».XML-ΠΊΠΎΠ΄, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚, отобраТаСтся Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст».
  4. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.
  5. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΌΠ°ΠΊΠ΅Ρ‚Π° Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ + ΠΈ β€” Π΄Π»Ρ увСличСния ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эти ΠΊΠ½ΠΎΠΏΠΊΠΈ для настройки Π²ΠΈΠ΄Π° ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Zoom to Fit Screen (справа ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ соотвСтствовали Π²Π°ΡˆΠ΅ΠΌΡƒ экрану.
    На этом ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΡΠ»Π΅Π²Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ появляСтся Π½Π° устройствС. Π‘Ρ…Π΅ΠΌΠ° Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ° , показанная справа, прСдставляСт собой схСматичСский Π²ΠΈΠ΄ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.
  6. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π·Π½Π°Ρ‡ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ  Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Π΄ΠΈΠ·Π°ΠΉΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π²ΠΈΠ΄ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ ΠΎΠ±Π° Π²ΠΈΠ΄Π° вмСстС.
  7. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.
  8. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ мСню Π²Ρ‹Π±ΠΎΡ€Π° устройства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π°Π½Π΄Ρ€ΠΎΠΈΠ΄-устройствах.

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ 

Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  1. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β».
    На этой ΠΏΠ°Π½Π΅Π»ΠΈ отобраТаСтся иСрархия прСдставлСний view Π² вашСм ΠΌΠ°ΠΊΠ΅Ρ‚Π΅.
  2. ΠžΡ‚Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ стороны ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС Π² Π”Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  3. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Β«Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ панСль» Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².ПанСль Component Tree закрываСтся.
  4. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ панСль Component Tree, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅ Β«Π”Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²Β» слСва. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ панСль Component Tree, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ прСдставлСний view.

Π˜ΡΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ прСдставлСний view
  1. Π’ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ прСдставлСний view прСдставляСт собой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ConstraintLayout.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ view, содСрТащий всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ view. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ view всСгда прСдставляСт собой Π³Ρ€ΡƒΠΏΠΏΡƒ прСдставлСний ViewGroup, которая прСдставляСт собой view, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ view. ConstraintLayout β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π³Ρ€ΡƒΠΏΠΏΡ‹ прСдставлСний ViewGroup. Π•Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ содСрТит слово constraint – ограничСния, ΠΈ это ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ взаимодСйствия элСмСнтов, добавляСмых Π² этот ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ view. ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌΠΈ элСмСнтами Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ RelativeLayout, LinearLayout ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкам Π² описании Π²ΠΈΠ΄Π΅ΠΎ.  /linearlayout-i-relativelayout-osobennosti-maketov-ekranov-android/

Π”Π°Π»Π΅Π΅ Π² этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ с ConstraintLayout Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

  1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ConstraintLayout содСрТит TextView.
  2. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ XML-ΠΊΠΎΠ΄ для ΠΌΠ°ΠΊΠ΅Ρ‚Π°, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β« Π’Скст Β» Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β».
  3. Π’ ΠΊΠΎΠ΄Π΅ XML ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт <android.support.constraint.ConstraintLayout>. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт содСрТит ΠΎΠ΄ΠΈΠ½ <TextView> элСмСнт.

<android.support.constraint.ConstraintLayout … > <TextView … /> </android.support.constraint.ConstraintLayout>

<android.support.constraint.ConstraintLayout

  β€¦ >

 

   <TextView

      β€¦  />

 

</android.support.constraint.ConstraintLayout>

ИзмСнСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств
  1. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ свойства элСмСнта TextView.Пока Ρ‡Ρ‚ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ инструмСнтах ΠΈ свойствах ΠΌΠ°ΠΊΠ΅Ρ‚Π° – ΠΌΡ‹ рассмотрим ΠΈΡ… ΠΏΠΎΠ·ΠΆΠ΅.

<TextView    android:layout_width=Β»wrap_contentΒ»    android:layout_height=Β»wrap_contentΒ»    android:text=Β»Hello World!Β»    … />

<TextView

 

   android:layout_width=Β»wrap_contentΒ»

 

   android:layout_height=Β»wrap_contentΒ»

 

   android:text=Β»Hello World!Β»

 

   … />

  1. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° text Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… Π½Π° любоС.
  2. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β».
  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ TextView Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² .
  1. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° панСль «Бвойства» справа.

УстранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ этого шага :
  • Если панСль «Бвойства» Π½Π΅ отобраТаСтся, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ Β« Π‘войства» Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ.
  • Если панСль свойств отличаСтся ΠΎΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Β« ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС свойства»,Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ прСдставлСниС.
  1. Π’ тСкстовом ΠΏΠΎΠ»Π΅ TextView Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» снова ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ тСкста ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β« Π’Π²ΠΎΠ΄Β»,Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€
  2. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ «ВСкст», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСкст Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² XML.
  3. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

ИзмСнСниС свойств отобраТСния тСкста
  1. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π΅ textAppearance Π΄Π»Ρ TextView.
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства тСкста. ΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ. (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ потрСбуСтся ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ панСль, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС поля.)
  3. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ тСкста. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π² ΠΏΠΎΠ»Π΅ textColor ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π±ΡƒΠΊΠ²Ρƒ g.ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ мСню с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ значСниями Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π­Ρ‚ΠΎΡ‚ список содСрТит ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°. ΠŸΠΎΠ·ΠΆΠ΅ разбСрСмся, ΠΊΠ°ΠΊ быстро ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свои собствСнныС Ρ†Π²Π΅Ρ‚Π°.
  4. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ @android:color/darker_gray ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter .
  5. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» просмотритС XML для TextView. Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ свойства Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹.

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Hardcoded string should use @string resource,Β» Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, Π²Ρ‹ скоро ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это.

  1. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅Ρ‰Π΅ Ρ€Π°Π·.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС свойства
  1. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β». Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Β« ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС свойства» . Π•сли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… свойств, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ TextView всС Π΅Ρ‰Π΅ Π²Ρ‹Π±Ρ€Π°Π½ Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².ПанСль «Бвойства» обновляСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС свойства TextView.
  2. ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ список, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎ свойствах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для TextView.

2. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ строковых ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… рСсурсов

РазбСрСмся, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ рСсурсы. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ рСсурсов позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ значСния ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ значСния Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, созданный рСсурс Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² любом мСстС прилоТСния, Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСсурса Π² мСстС хранСния измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅
  • Как ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ значСния свойств Π² рСсурсы.
  • Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ рСсурсы.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ использованиС Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… рСсурсов.
  • Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ измСнСния высоты ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ 

рСсурсов
  1. На ΠΏΠ°Π½Π΅Π»ΠΈ Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Β» слСва ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅  res /values Ρ„Π°ΠΉΠ» строковых рСсурсов strings.xml .Π€Π°ΠΉΠ» strings.xml открываСтся Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, Ссли ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ².Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ <resources>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, содСрТит ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ <string>, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ имя прилоТСния.
  2. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΌΠ°ΠΊΠ΅Ρ‚Π° activity_main.xml. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст». ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ свойство text Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ.
  3. НаТмитС Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π‘Π»Π΅Π²Π° появляСтся Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠ°.
  4. НаТмитС Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΡƒ. Π’ появившСмся мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β« Π˜Π·Π²Π»Π΅Ρ‡ΡŒ строковый рСсурс» .
  5. Π’ появившСмся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ имя рСсурса ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строки. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя рСсурса Π½Π° hello_world_text ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β« ΠžΠšΒ» .
  6. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства android:text измСнилось Π½Π° @string/hello_world_text.
  7. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„Π°ΠΉΠ» strings.xml. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ появился Π½ΠΎΠ²Ρ‹ΠΉ строковый рСсурс  hello_world_text. 
  8. Π’ Ρ„Π°ΠΉΠ»Π΅ strings.xml ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСсурса строки hello_world_text Π½Π° Hello Universe (ΠΈΠ»ΠΈ Π½Π° тСкст ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ).
  9. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ activity_main.xml. Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства text остаСтся @string/hello_world_text .
  10. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСкст отобраТаСтся Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ написали.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ строковыС рСсурсы, извлСкая ΠΈΡ… ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ рСсурсы Π² Ρ„Π°ΠΉΠ» strings. xml Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы

Π’Π΅ΠΏΠ΅Ρ€ΡŒ разбСрСмся, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы.

ИзмСнСниС Ρ†Π²Π΅Ρ‚Π° тСкста ΠΈ Ρ„ΠΎΠ½Π° TextView
  1. На ΠΏΠ°Π½Π΅Π»ΠΈ Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Β» слСва Π² ΠΏΠ°ΠΏΠΊΠ΅ res/values  ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… рСсурсов colors.xml.Π€Π°ΠΉΠ» colors.xml открываСтся Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. Π’ Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚Ρ€ΠΈ Ρ†Π²Π΅Ρ‚Π°. Π­Ρ‚ΠΎ основныС Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы для оформлСния прилоТСния Π² стилС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° смотритС ΠΏΠΎ ссылкС. /urok-1-kak-obnovlyat-vashi-prilozheniya-do-osobennostej-material-design/
  2. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ Activity_main.xml Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ XML-ΠΊΠΎΠ΄ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ свойство Π² TextView ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ android: background ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ @color .ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ мСню, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы:
  4. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ @ colorPrimaryDark.
  5. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ свойство android: textColor ΠΈ Π΄Π°ΠΉΡ‚Π΅ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ @android:color/white .Android Studio опрСдСляСт Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ†Π²Π΅Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±Π΅Π»Ρ‹ΠΉ, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.
  6. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» Π² Activity_main.xml. Π‘ΠΊΡ€ΠΎΠΉΡ‚Π΅ панСль «Бвойства», Ссли ΠΎΠ½Π° Π·Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π°Π΅Ρ‚ вашС прСдставлСниС view.Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ TextView Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅ΠΌΠ½ΠΎ-синий Ρ„ΠΎΠ½, Π° тСкст отобраТаСтся Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ для использования Π² качСствС Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π° экрана
  1. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² colors.xml, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ рСсурс:

color name = Β«screenBackgroundΒ» > #FFEE58 </color >

Π­Ρ‚ΠΎΡ‚ Ρ†Π²Π΅Ρ‚ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ.

  1. Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» Π² Activity_main.xml. Π’ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ConstraintLayout.
  2. На ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ всС свойства. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎ Background ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter .  Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Β«cΒ» Π² появившСмся ΠΏΠΎΠ»Π΅.
  3. Π’ появившСмся мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ†Π²Π΅Ρ‚ @color/screenBackground . ΠΠ°ΠΆΠΌΠΈΡ‚Π΅ Β« Enter Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€.
  4. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΎΠΊ слСва ΠΎΡ‚ значСния Ρ†Π²Π΅Ρ‚Π° Π² ΠΏΠΎΠ»Π΅ Background.ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ страница Β«Π¦Π²Π΅Ρ‚Π°Β» Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ рСсурсов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ отобраТаСтся список Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†Π²Π΅Ρ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Android. ΠžΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π°.
  5. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° screenBackground , Π½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ отличаСтся ΠΎΡ‚ colorPrimary ΠΈ colorPrimaryDark.

Π˜ΡΡΠ»Π΅Π΄ΡƒΠΉΡ‚Π΅ свойства ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° экрана, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для изучСния эффСктов измСнСния свойств ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты view.

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» для Activity_main.xml. Π’ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ConstraintLayout.
  2. На ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» отобраТаСтся ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ свойств.  ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π·Π½Π°Ρ‡ΠΎΠΊ Β« ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС свойства», Π΅ΡΠ»ΠΈ Π½ΡƒΠΆΠ½ΠΎ. Π—начСния Layout_width ΠΈ layout_height  установлСны Π² match_parent . ConstraintLayout являСтся ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ прСдставлСниСм, поэтому Ρ€Π°Π·ΠΌΠ΅Ρ€ Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎΒ» ΠΌΠ°ΠΊΠ΅Ρ‚Π° фактичСски являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ экрана Π½Π° устройствС. ConstraintLayout Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту, Ρ‡Ρ‚ΠΎ ΠΈ экран.

Π‘ΠΎΠ²Π΅Ρ‚. Π’сС прСдставлСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° layout_width ΠΈ layout_height .

  1. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ вСсь Ρ„ΠΎΠ½ экрана ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†Π²Π΅Ρ‚ ΡΠΊΡ€Π°Π½Π° .
  2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ TextView ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту Π½Π° match_parent .TextView заполняСт вСсь экран, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ConstraintLayout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, заполняСт вСсь экран.
  3. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΡˆΠΈΡ€ΠΈΠ½Π° match_parent, Π° высота β€” wrap_content ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  4. УстановитС ΠΊΠ°ΠΊ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, Ρ‚Π°ΠΊ ΠΈ высоту TextView ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² wrap_content .

3. Π”ΠΎΠ±Π°Π²ΠΈΠΌ views ΠΈ  constraints (ограничСния)

Π’ этой Π·Π°Π΄Π°Ρ‡Π΅ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² свой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь.

Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅
  • Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ view  Π² ΠΌΠ°ΠΊΠ΅Ρ‚.
  • Как ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ прСдставлСния Π΄Ρ€ΡƒΠ³ΠΈΠΌ view.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ свойств ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

  1. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» просмотритС свойства ограничСния для TextView.Π­Ρ‚ΠΈ свойства ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ TextView. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΈΡ… Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ, ниТнюю, Π»Π΅Π²ΡƒΡŽ ΠΈ ΠΏΡ€Π°Π²ΡƒΡŽ стороны свСрху, снизу, слСва ΠΈ справа ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… view. Π’ этом случаС СдинствСнноС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ view β€” это ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ  ConstraintLayout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ элСмСнтом этого TextView.
  2. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ TextView Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ посмотритС Π½Π° Inspector Constraint Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства».КаТдая ΠΈΠ· синих Ρ‚ΠΎΡ‡Π΅ΠΊ прСдставляСт собой constrain β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅.
  3. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² прСдставлСнии Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°  Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ограничСния ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ view. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ курсор Π½Π°Π΄ прСдставлСниСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ ограничСния.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ограничСния для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ view Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΌΠ°ΠΊΠ΅Ρ‚.

  1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ стороны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ элСмСнты Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅.
  2. ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ пСрСчислСнныС элСмСнты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступно.
  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ , которая находится рядом с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ, ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Π΅Π΅ Π½Π° ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, помСстив Π΅Π΅ ΠΏΠΎΠ΄ TextView.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​в Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄ ConstraintLayout.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎ Π½ΠΈΠΆΠ½Π΅ΠΉ части TextView.

  1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ курсор ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ Π² сСрСдинС Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  2. ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠ½ΠΈΡ‚Π΅ ΠΊΡ€ΡƒΠ³ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΊΡ€ΡƒΠ³ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части TextView.Кнопка пСрСмСщаСтся Π²Π²Π΅Ρ€Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ TextView. Π’Срхняя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ TextView.
  1. ВзглянитС Π½Π° инспСктора ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства». ΠžΠ½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  2. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ XML для ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠžΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΎ Π½ΠΈΠΆΠ½Π΅ΠΉ части TextView, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ отступ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ автоматичСски.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ
  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΈ помСститС Π΅Π΅ ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ. (НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, Ссли ΠΎΠ½Π° ΡƒΠ»Π΅Ρ‚ΠΈΡ‚ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅)
  2. Π˜Π³Ρ€Π°ΠΉΡ‚Π΅ с позициями ΠΈ ограничСниями Π΄Π²ΡƒΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ограничСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅:

  • Π’ прСдставлСнии Β«Π”ΠΈΠ·Π°ΠΉΠ½Β» пСрСмСститС курсор ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ для ограничСния, ΠΏΠΎΠΊΠ° ΠΊΡ€ΡƒΠ³ Π½Π΅ станСт красным, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΌΡƒ.
  • Или Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» пСрСмСститС курсор ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ для ограничСния, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ x, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Π½Π΅ΠΌΡƒ.

Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ дСйствиС ΠΈΠ»ΠΈ создайтС Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅.

  1. Когда Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ограничСния, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ограничСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΈΡ… ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π›Π΅Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ слСва, Π° правая ΠΊΠ½ΠΎΠΏΠΊΠ° β€” справа Π½Π° экранС. Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ TextView ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ экрана (см. Рисунок Π½ΠΈΠΆΠ΅).Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ограничСния Π½Π° Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ соблюдались условия:
  • вСрхняя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ стороной TextView.
  • ниТняя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ стороной экрана.
  • лСвая Ρ‡Π°ΡΡ‚ΡŒ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π»Π΅Π²ΠΎΠΉ стороной экрана.
  • правая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΡ€Π°Π²ΠΎΠΉ стороной экрана.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ.

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ.
  2. Π‘Π΄Π²ΠΈΠ½ΡŒΡ‚Π΅ Π»Π΅Π²ΡƒΡŽ ΠΈ ΠΏΡ€Π°Π²ΡƒΡŽ стороны Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° сосСдниС ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  3. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΈ ниТнюю части Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, вСрхняя Ρ‡Π°ΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ стороной TextView. ΠΠΈΠ· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π½ΠΈΠΆΠ½Π΅ΠΉ стороной экрана.
  4. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ XML-ΠΊΠΎΠ΄ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст». Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚: app:layout_constraintVertical_bias
    ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ «смСщСния» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ view Π½Π° большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сторонС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π΅ стороны ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… направлСниях . ΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли вСрхняя ΠΈ ниТняя стороны view ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΏΠΎ Π²Π΅Ρ€Ρ…Ρƒ ΠΈ Π½ΠΈΠ·Ρƒ экрана, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ смСщСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ view Π±Π»ΠΈΠΆΠ΅ ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ, Ρ‡Π΅ΠΌ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана.
  5. Код XML для Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, скорСС всСго, появится Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π° Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Ρ„Π°ΠΉΠ»Π΅ XML. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ для Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ находился ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ порядок ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Ρ„Π°ΠΉΠ»Π΅ XML ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ порядок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅.  Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ влияСт Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ внСшний Π²ΠΈΠ΄ ΠΌΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ прСдставлСния Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» с прСдставлСниями Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β».

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ XML для ΠΌΠ°ΠΊΠ΅Ρ‚Π°. Π’ вашСм ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Π’ΠΎΡ‡Π½Ρ‹Π΅ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² для внСшнСго Π²ΠΈΠ΄Π° TextView Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Ρƒ вас.

<?xml version=Β»1.0β€³ encoding=Β»utf-8β€³?> <android.support.constraint.ConstraintLayout xmlns:android=Β»http://schemas.android.com/apk/res/androidΒ» xmlns:app=Β»http://schemas.android.com/apk/res-autoΒ» xmlns:tools=Β»http://schemas.android.com/toolsΒ» android:layout_width=Β»match_parentΒ» android:layout_height=Β»match_parentΒ» android:background=Β»@color/screenBackgroundΒ» tools:context=Β»com.example.android.myfirstapp.MainActivityΒ»> <TextView android:id=Β»@+id/textViewΒ» android:layout_width=Β»wrap_contentΒ» android:layout_height=Β»wrap_contentΒ» android:background=Β»@color/colorPrimaryDarkΒ» android:fontFamily=Β»sans-serifΒ» android:text=Β»@string/hello_world_textΒ» android:textAlignment=Β»centerΒ» android:textColor=Β»@android:color/whiteΒ» android:textSize=Β»30spΒ» android:textStyle=Β»boldΒ» app:layout_constraintBottom_toBottomOf=Β»parentΒ» app:layout_constraintLeft_toLeftOf=Β»parentΒ» app:layout_constraintRight_toRightOf=Β»parentΒ» app:layout_constraintTop_toTopOf=Β»parentΒ» /> <Button android:id=Β»@+id/buttonΒ» android:layout_width=Β»wrap_contentΒ» android:layout_height=Β»wrap_contentΒ» android:text=Β»ButtonΒ» android:layout_marginLeft=Β»8dpΒ» app:layout_constraintLeft_toLeftOf=Β»parentΒ» app:layout_constraintBottom_toBottomOf=Β»parentΒ» android:layout_marginBottom=Β»8dpΒ» android:layout_marginTop=Β»8dpΒ» app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ» /> <Button android:id=Β»@+id/button3β€³ android:layout_width=Β»wrap_contentΒ» android:layout_height=Β»wrap_contentΒ» android:text=Β»ButtonΒ» app:layout_constraintBottom_toBottomOf=Β»parentΒ» android:layout_marginBottom=Β»8dpΒ» android:layout_marginTop=Β»8dpΒ» app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ» app:layout_constraintRight_toLeftOf=Β»@+id/button2β€³ android:layout_marginRight=Β»8dpΒ» app:layout_constraintLeft_toRightOf=Β»@+id/buttonΒ» android:layout_marginLeft=Β»8dpΒ» /> <Button android:id=Β»@+id/button2β€³ android:layout_width=Β»wrap_contentΒ» android:layout_height=Β»wrap_contentΒ» android:text=Β»ButtonΒ» android:layout_marginRight=Β»8dpΒ» app:layout_constraintRight_toRightOf=Β»parentΒ» app:layout_constraintBottom_toBottomOf=Β»parentΒ» android:layout_marginBottom=Β»8dpΒ» android:layout_marginTop=Β»8dpΒ» app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ» /> </android. support.constraint.ConstraintLayout>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

<?xml version=Β»1.0β€³ encoding=Β»utf-8β€³?>

<android.support.constraint.ConstraintLayout xmlns:android=Β»http://schemas.android.com/apk/res/androidΒ»

   xmlns:app=Β»http://schemas.android.com/apk/res-autoΒ»

   xmlns:tools=Β»http://schemas.android.com/toolsΒ»

   android:layout_width=Β»match_parentΒ»

   android:layout_height=Β»match_parentΒ»

   android:background=Β»@color/screenBackgroundΒ»

   tools:context=Β»com. example.android.myfirstapp.MainActivityΒ»>

 

   <TextView

       android:id=Β»@+id/textViewΒ»

       android:layout_width=Β»wrap_contentΒ»

       android:layout_height=Β»wrap_contentΒ»

        android:background=Β»@color/colorPrimaryDarkΒ»

       android:fontFamily=Β»sans-serifΒ»

       android:text=Β»@string/hello_world_textΒ»

       android:textAlignment=Β»centerΒ»

       android:textColor=Β»@android:color/whiteΒ»

       android:textSize=Β»30spΒ»

       android:textStyle=Β»boldΒ»

       app:layout_constraintBottom_toBottomOf=Β»parentΒ»

       app:layout_constraintLeft_toLeftOf=Β»parentΒ»

       app:layout_constraintRight_toRightOf=Β»parentΒ»

       app:layout_constraintTop_toTopOf=Β»parentΒ»

    />

 

   <Button

       android:id=Β»@+id/buttonΒ»

       android:layout_width=Β»wrap_contentΒ»

       android:layout_height=Β»wrap_contentΒ»

       android:text=Β»ButtonΒ»

       android:layout_marginLeft=Β»8dpΒ»

       app:layout_constraintLeft_toLeftOf=Β»parentΒ»

       app:layout_constraintBottom_toBottomOf=Β»parentΒ»

       android:layout_marginBottom=Β»8dpΒ»

       android:layout_marginTop=Β»8dpΒ»

       app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ» />

 

   <Button

       android:id=Β»@+id/button3β€³

       android:layout_width=Β»wrap_contentΒ»

       android:layout_height=Β»wrap_contentΒ»

       android:text=Β»ButtonΒ»

       app:layout_constraintBottom_toBottomOf=Β»parentΒ»

       android:layout_marginBottom=Β»8dpΒ»

       android:layout_marginTop=Β»8dpΒ»

       app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ»

       app:layout_constraintRight_toLeftOf=Β»@+id/button2β€³

       android:layout_marginRight=Β»8dpΒ»

       app:layout_constraintLeft_toRightOf=Β»@+id/buttonΒ»

       android:layout_marginLeft=Β»8dpΒ» />

 

   <Button

       android:id=Β»@+id/button2β€³

       android:layout_width=Β»wrap_contentΒ»

       android:layout_height=Β»wrap_contentΒ»

       android:text=Β»ButtonΒ»

       android:layout_marginRight=Β»8dpΒ»

       app:layout_constraintRight_toRightOf=Β»parentΒ»

       app:layout_constraintBottom_toBottomOf=Β»parentΒ»

       android:layout_marginBottom=Β»8dpΒ»

       android:layout_marginTop=Β»8dpΒ»

       app:layout_constraintTop_toBottomOf=Β»@+id/textViewΒ» />

 

</android. support.constraint.ConstraintLayout>

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° β€” Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ дСйствиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

  1. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ тСкст TextView, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ 0 (ноль).
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ тСкст ΠΈ id ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML-ΠΊΠΎΠ΄ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «ВСкст» ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ значСния свойств Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства» Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ тСкст ΠΈ, id ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠšΠ½ΠΎΠΏΠΊΠ°Π’Π΅ΠΊΡΡ‚Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€
ЛСвая ΠΊΠ½ΠΎΠΏΠΊΠ°Toast@+id/toast_button
БрСдняя ΠΊΠ½ΠΎΠΏΠΊΠ°Count@+id/count_button
ΠŸΡ€Π°Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°Random@+id/random_button

ΠŸΡ€ΠΈ нСобходимости ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки

Если Π²Ρ‹ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ XML для ΠΌΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΠ΄ XML для срСднСй ΠΊΠ½ΠΎΠΏΠΊΠΈ, которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Count , ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки.  Π’Π°ΠΊΠΆΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚ испорчСн Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β».
Ошибки Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ слСва ΠΈ справа ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡ… id.

  1. Если Ρƒ вас Π΅ΡΡ‚ΡŒ эти ошибки, ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΈΡ…, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² id ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ограничСниях, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹Ρ… красным.

app:layout_constraintRight_toLeftOf=Β»@+id/toast_buttonΒ» app:layout_constraintLeft_toRightOf=Β»@+id/random_buttonΒ»

app:layout_constraintRight_toLeftOf=Β»@+id/toast_buttonΒ»

app:layout_constraintLeft_toRightOf=Β»@+id/random_buttonΒ»

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ внСшний Π²ΠΈΠ΄ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ TextView

ΠœΠ°ΠΊΠ΅Ρ‚ вашСго прилоТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² основном Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Π½ΠΎ Π΅Π³ΠΎ внСшний Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ нСсколькими нСбольшими измСнСниями.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы

  1. Π’ Ρ„Π°ΠΉΠ»Π΅ colors.xml ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ screenBackground Π½Π° #2196F3, Ρ‡Ρ‚ΠΎ являСтся синим ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠΌ Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ Material Design .
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«buttonBackgroundΒ».  Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ #BBDEFB, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π±ΠΎΠ»Π΅Π΅ свСтлым ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠΌ Π² синСй ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅.

<color name=Β»buttonBackgroundΒ»>#BBDEFB</color>

<color name=Β»buttonBackgroundΒ»>#BBDEFB</color>

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° для ΠΊΠ½ΠΎΠΏΠΎΠΊ

  1. Π’ ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ. (Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ панСль «Бвойства», Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅.)

android:background=Β»@color/buttonBackgroundΒ»

android:background=Β»@color/buttonBackgroundΒ»

ИзмСнСниС ΠΏΠΎΠ»Π΅ΠΉ Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ

  1. Π”Π°ΠΉΡ‚Π΅ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π»Π΅Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉ 24dp ΠΈ Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉ 24dp.

android:layout_marginLeft=Β»24dpΒ»android:layout_marginRight=Β»24dpΒ»

android:layout_marginLeft=Β»24dpΒ»android:layout_marginRight=Β»24dpΒ»

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ внСшний Π²ΠΈΠ΄ TextView

  1. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ TextView, Π»ΠΈΠ±ΠΎ очистив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «Бвойства», Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ android:background ΠΈΠ· ΠΊΠΎΠ΄Π° XML. ПослС этого, Ρ„ΠΎΠ½ прСдставлСния станСт ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ.
  2. Π£Π²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста TextView Π΄ΠΎ 72sp.
  1. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² TextView Π½Π° sans-serif .
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎ app:layout_constraintVertical_bias Π² TextView, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСн ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π½Π° экранС. ΠΠ΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ограничСния ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. (Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«Π”ΠΈΠ·Π°ΠΉΠ½Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядит ΠΌΠ°ΠΊΠ΅Ρ‚).

app:layout_constraintVertical_bias=Β»0.3β€³

app:layout_constraintVertical_bias=Β»0.3β€³

Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния dp ΠΈ sp – это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² экранных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ тСкста Π² Android Studio. Благодаря ΠΈΡ… использованию экранныС элСмСнты выглядят ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π° экранах Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

Π‘ΠΎΠ²Π΅Ρ‚ . ИспользованиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° смСщСния вмСсто ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ отступов ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… экрана ΠΈ ориСнтациях.

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

ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Если Π²Ρ‹ внСсСтС всС обновлСния, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π•сли Π²Ρ‹ использовали Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ нСсколько ΠΈΠ½Π°Ρ‡Π΅.

Π’Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° Π³Π»Π°Π²Π½Ρ‹ΠΉ экран вашСго прилоТСния, Π½ΠΎ Π² настоящСС врСмя ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° наТатия. ΠœΡ‹ исправим это Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ 

Π”ΠΎ встрСчи Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅, всСм Π΄ΠΎΠ±Ρ€Π°.

Π£Ρ€ΠΎΠΊ 4. Kotlin. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ взаимодСйствиС с view Π² android

java β€” Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ± ΠΊΠ½ΠΎΠΏΠΊΠ° Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»Π° Π½Π° наТатия?

Π― знаю Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ selector ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ наТатия. Но вСдь стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ сСйчас ΠΎΡ‡Π΅Π½ΡŒ красиво ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅. Мой вопрос Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° я создаю просто ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² пустом Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ ΠΈ наТимаю Π½Π° Π½Π΅Π΅, Ρ‚ΠΎ ΠΎΠ½Π° красиво Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ»Π½Ρƒ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ касания ΠΈ дальшС ΠΏΠΎ всСй ΠΊΠ½ΠΎΠΏΠΊΠ΅, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я добавляю ΠΊΠ½ΠΎΠΏΠΊΠ΅ свой

android:background="@drawable/stylecapturebutton"
                android:src="@drawable/photocamera"

Ρ‚ΠΎ ΠΎΠ½Π° пСрСстаСт Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒβ€¦

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠ΅ΠΉ ImageButton :

<ImageButton
                android:id="@+id/bPicture"
                android:onClick="bPicture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/stylecapturebutton"
                android:src="@drawable/photocamera"
                android:padding = "10dp" />

МоТно Π»ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Π±Π΅ΠΊΠ³Ρ€Π°ΡƒΠ½Π΄ ΠΈ рСсурс, Ρ‡Ρ‚ΠΎΠ± ΠΏΡ€ΠΈ этом ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ наТатия?

Π’ΠΎΡ‚ такая ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ

<?xml version="1. 0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <!--<solid android:color="@color/myColor" />-->
        <stroke
            android:width="1dp"
            android:color="@color/color_white" />
        <size
            android:width="18dp"
            android:height="18dp" />
    </shape>
</item>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/button"
        android:state_focused="true"
        android:state_pressed="false" />
    <item
        android:drawable="@drawable/button"
        android:state_focused="true"
        android:state_pressed="true" />
    <item
        android:drawable="@drawable/button_pressed"
        android:state_focused="false"
        android:state_pressed="true" />
    <item android:drawable="@drawable/button" />
</selector>
</layer-list>

Π›ΡƒΡ‡ΡˆΠΈΠ΅ WordPress ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ.

HTML / CSS – это Π½Π΅ Ρ‚Π΅ языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ WordPress. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ графичСский интСрфСйс для настройки своих Ρ‚Π΅ΠΌ, страниц ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Π₯отя Π²Ρ‹, бСзусловно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свои страницы, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ красивыС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄, Π½ΠΎ это Π½Π΅ СдинствСнный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. Один ΠΈΠ· способов создания красивых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ для ΠΏΡ€ΠΈΠ·Ρ‹Π²ΠΎΠ² ΠΊ дСйствиям ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ страницам – использованиС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².

WordPress ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΉ для добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. Однако сущСствуСт мноТСство бСсплатных ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для создания ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… страницах, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Ρ… ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ? Π•ΡΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ WordPress для ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ этом постС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Π·Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эти ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ WordPress для ΠΈΡ… получСния.

КакиС основныС Ρ‚ΠΈΠΏΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ?

Π’ основном смыслС ΠΊΠ½ΠΎΠΏΠΊΠΈ пСрСносят посСтитСлСй с ΠΎΠ΄Π½ΠΎΠ³ΠΎ адрСса Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Они ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ ссылок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π΄Π²Π΅ страницы ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΎΠ΄Π½ΠΎΠΉ страницы Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Кнопки ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ:

  • Бсылки : Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… вмСсто ссылок. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ всС ссылки Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ.
  • ОбмСн ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ : ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡΒ» Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылкой Π½Π° страницу Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти.
  • CTA : ΠŸΡ€ΠΈΠ·Ρ‹Π² ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ (CTA) – это Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ психологичСски ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для привлСчСния внимания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ вопрос: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½Ρ‹?

Π—Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ?

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π»ΠΈΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… аспСктов ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π° являСтся Π΄ΠΈΠ·Π°ΠΉΠ½ сайта. Π’ΠΎ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½ ΠΈ прост Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ваш сайт Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… уровнях, опрСдСляСт ваш коэффициСнт конвСрсии. ИсслСдования ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ страницы с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ убСдят посСтитСлСй Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ свой адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ΄Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π²Ρ‹ всСгда ΠΏΡ€ΠΎΠ΄Π°Π΅Ρ‚Π΅.

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

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ красивыми ΠΈ с высокой конвСрсиСй Π½Π° Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… страницах. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…, я скоро Π½Π°ΠΏΠΈΡˆΡƒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ пост ΠΎ Landing Page.

Бпособы добавлСния красивых ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² WordPress

БущСствуСт Π΄Π²Π° способа добавлСния ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² WordPress:

  • Код : Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTML ΠΈ CSS для создания ΠΊΠ½ΠΎΠΏΠΎΠΊ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ эти языки.
  • ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ : просто установитС ΠΏΠ»Π°Π³ΠΈΠ½ WordPress для добавлСния ΠΊΠ½ΠΎΠΏΠΎΠΊ. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, это самый простой способ.

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ для добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² WordPress

Плагин кнопки WordPress MaxButtons

Плагин WordPress для ΠΊΠ½ΠΎΠΏΠΎΠΊ MaxButtons – это бСсплатный ΠΏΠ»Π°Π³ΠΈΠ½ для WordPress, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ красивыС ΠΈ элСгантныС ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ красивыС ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° основС CSS3 Π² Π²Π°ΡˆΠΈΡ… сообщСниях ΠΈ страницах. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 70 000 Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… установок ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ настраиваСмых ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для ΠΊΠ½ΠΎΠΏΠΎΠΊ WordPress.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:
  • ΠžΠ±Ρ‰Π°Ρ настройка : Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² сообщСниях ΠΈ страницах с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ. Π¦Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста, радиус Ρ€Π°ΠΌΠΊΠΈ, ΡΡ‚ΠΈΠ»ΡŒ Ρ€Π°ΠΌΠΊΠΈ ΠΈ дюТина Π΄Ρ€ΡƒΠ³ΠΈΡ… свойств стиля ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹.
  • ΠžΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ : ΠΊΠ½ΠΎΠΏΠΊΠΈ, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ»Π°Π³ΠΈΠ½Π°, Ρ…ΠΎΡ€ΠΎΡˆΠΎ смотрятся ΠΊΠ°ΠΊ Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ПК, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… устройствах.
  • Кнопки Π² стилС Π·Π½Π°Ρ‡ΠΊΠΎΠ² : Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΊΠΈ ΠΊ своим ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… располоТСниС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π‘ΠΎΠ»Π΅Π΅ 35 000 ΠΈΠΊΠΎΠ½ΠΎΠΊ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Google Fonts . Одно ΠΈΠ· прСимущСств этого ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Google Fonts.
  • ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия : Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· описанных ΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅ΠΌΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΠ»Π°Π³ΠΈΠ½Π°, которая стоит 19 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ².

Кнопки ΡˆΠΎΡ€Ρ‚ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚

Кнопки Shortcode ΠΈ Widget – Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ бСсплатноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для создания ΠΊΠ½ΠΎΠΏΠΎΠΊ с высокой конвСрсиСй. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ простой Π² использовании интСрфСйс.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:
  • ΠžΠ±Ρ‰Π°Ρ настройка : тСкст ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π½Π°Ρ‡ΠΎΠΊ, Ρ„ΠΎΡ€ΠΌΠ°, Ρ†Π²Π΅Ρ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Ρ†Π²Π΅Ρ‚ Ρ€Π°ΠΌΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ. Π–ΠΈΠ²ΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр Ρ‚Π°ΠΌ Ρ‚ΠΎΠΆΠ΅.
  • ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ трСбуСтся : этот ΠΏΠ»Π°Π³ΠΈΠ½ избавляСт ΠΎΡ‚ нСобходимости Π·Π½Π°Ρ‚ΡŒ CSS ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  • ИспользованиС Π²Π΅Π·Π΄Π΅ : позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² сообщСниях, страницах, Π±ΠΎΠΊΠΎΠ²Ρ‹Ρ… панСлях ΠΈ Π΄Π°ΠΆΠ΅ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Ρ‚Π΅ΠΌ. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π»Π°Π³ΠΈΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ стили . КаТдая ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс CSS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для добавлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… стилСй. Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ экзСмпляру ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ класс CSS для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ стиля.

Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π΅ΠΌΠΈΡƒΠΌ-Π²Π΅Ρ€ΡΠΈΡŽ, Π² Ρ‚ΠΎΠΌ числС ΠΊΡƒΡ‡Ρƒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Плагин БоздатСля Кнопок

Button Maker Plugin – Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ простой Π² использовании ΠΏΠ»Π°Π³ΠΈΠ½ для создания ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² WordPress. Π₯отя ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1000+ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… установок. 

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ : Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ сохраняйтС ΠΈΡ… для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования. Π˜Ρ… Ρ†Π²Π΅Ρ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ‚.Π΄. Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹.
  • Π£Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ : позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Ρ‹ ΠΈ ΠΊΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.
  • ΠŸΠ»Π°Ρ‚Π½Π°Ρ вСрсия : Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности этого ΠΏΠ»Π°Π³ΠΈΠ½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ приобрСсти Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΌΠΈΡƒΠΌ-Π²Π΅Ρ€ΡΠΈΡŽ. Π’ Button Maker Pro Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния многострочного тСкста Π² ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй для WordPress

Easy Social Share Buttons для WordPress – это ΠΏΠ»Π°Π³ΠΈΠ½ для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй. Π­Ρ‚ΠΎ комплСксноС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ активности Π½Π° вашСм сайтС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² этом спискС, ΠΎΠ½ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Π‘ΠΊΠΎΡ€Π΅Π΅, ΠΎΠ½ фокусируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°.

  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики: ΠΏΠ»Π°Π³ΠΈΠ½ поставляСтся с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 45 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСтями, ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 48 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… шаблонов ΠΈ большой Π½Π°Π±ΠΎΡ€ настроСк ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.
  • БовмСстноС использованиС ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° . Плагин ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ счСтчики Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ посСтитСлСй ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ ваши ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях. Π’ ΠΎΠ±Ρ‰Π΅ΠΉ слоТности 123 способа отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² подсчСта.
  • Настройка шаблона : Ρ‚Π°ΠΊΠΈΠ΅ настройки, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблона настройки.
  • БовмСстим с : Плагин Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с BuddyPress, WooCommerce, bbPress ΠΈ Easy Digital Downloads.

Button Pro – CSS3 ΠΊΠ½ΠΎΠΏΠΊΠΈ

Button Pro – ΠΊΠ½ΠΎΠΏΠΊΠΈ CSS3 – это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт CodeCanyon, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ этот список. Он стоит всСго 4 Π΄ΠΎΠ»Π»Π°Ρ€Π° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 1100 ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Плагин ΠΈΠΌΠ΅Π΅Ρ‚ простой Π² использовании Π½Π°Π±ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° основС CSS3 ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. Но это Π½Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ WP. Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ довольно быстро, Ссли Π²Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ Π² CSS.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:
  • ΠžΠ±Ρ‰Π°Ρ настройка : Π½Π° Π²Ρ‹Π±ΠΎΡ€ доступны 3 Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ 11 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ†Π²Π΅Ρ‚Π°. Π’Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ класс CSS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½.
  • ДокумСнтация: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ докумСнтация поставляСтся с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅.
  • Настройка состояний . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° находится Π½Π°Π΄ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии.
  • Адаптивный : ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстро для основных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΡ… вСрсиях Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π’Ρ‹Π²ΠΎΠ΄

Кнопки – это, Π² основном, малСнькиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ страницы. Однако влияниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½ вашСго сайта, довольно Π²Π΅Π»ΠΈΠΊΠΎ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠ½ΠΎΠΏΠΊΠΈ WordPress.

Какой Ρ‚Π²ΠΎΠΉ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ WordPress ΠΈΠ· списка? Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим Π² коммСнтариях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ записи: https://wplift.com

ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠ΅ эффСкты для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ

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

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ эффСктов для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅:

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ

Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° эту Ρ‚Π΅ΠΌΡƒ:

HTML

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π³Π°ΠΌΠΈ <head> </head> ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ стили (normalize. css, Font Awesome, demo.css, component.css):

HTML ΠšΠžΠ”

1
2
3
4
<link rel="stylesheet" type="text/css" href="css/normalize.css" />
<link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.3.0/css/font-awesome.min.css" />
<link rel="stylesheet" type="text/css" href="css/demo.css" />
<link rel="stylesheet" type="text/css" href="css/component.css" />

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ эффСкт BORIS. НачнСм со HTML структуры ΠΊΠ½ΠΎΠΏΠΎΠΊ:

HTML ΠšΠžΠ”

1
2
3
4
<button>
    <i></i>
    <span>Backward</span>
</button>

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ <button> <button> Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠ°.

CSS

Π₯отя ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» стилСй component. css, я всё ΠΆΠ΅ Ρ…ΠΎΡ‡Ρƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ содСрТимоС.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ стили для ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π΅ΠΌΠΎ:

CSS ΠšΠžΠ”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
.cbutton {
    position: relative;
    display: inline-block;
    margin: 1em;
    padding: 0;
    border: none;
    background: none;
    color: #286aab;
    font-size: 1.4em;
    overflow: visible;
    -webkit-transition: color 0.7s;
    transition: color 0.7s;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
 
.cbutton.cbutton--click,
.cbutton:focus {
    outline: none;
    color: #3c8ddc;
}
 
.cbutton__icon {
    display: block;
}
 
.cbutton__text {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
 
.cbutton::after {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -35px 0 0 -35px;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    content: '';
    opacity: 0;
    pointer-events: none;
}
 
. cbutton--box {
    width: 24px;
    height: 24px;
    border: 4px solid rgb(22, 35, 47);
}
 
.cbutton--box-color-1 {
    background: #ff8b00;
}
 
.cbutton--box-color-2 {
    background: #b61854;
}
 
.cbutton--box-color-3 {
    background: #1d5cab;
}
 
.cbutton--box-color-4 {
    background: #f2438c;
}
 
.cbutton--box-color-5 {
    background: #ff6414;
}
 
.cbutton--box-color-6 {
    background: #5ed500;
}
 
.cbutton--box-color-7 {
    background: #0077ff;
}
 
.cbutton--box-color-8 {
    background: #7bff00;
}
 
.cbutton--box-color-9 {
    background: #fff;
}

А сСйчас я ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ стили ΡƒΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для эффСкта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассматриваСм Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

CSS ΠšΠžΠ”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
.cbutton--effect-boris::after {
    background: rgba(111,148,182,0.1);
}
 
.cbutton--effect-boris.cbutton--click::after {
    -webkit-animation: anim-effect-boris 0. 3s forwards;
    animation: anim-effect-boris 0.3s forwards;
}
 
@-webkit-keyframes anim-effect-boris {
    0% {
        -webkit-transform: scale3d(0.3, 0.3, 1);
        transform: scale3d(0.3, 0.3, 1);
    }
    25%, 50% {
        opacity: 1;
    }
    to {
        opacity: 0;
        -webkit-transform: scale3d(1.2, 1.2, 1);
        transform: scale3d(1.2, 1.2, 1);
    }
}
 
@keyframes anim-effect-boris {
    0% {
        -webkit-transform: scale3d(0.3, 0.3, 1);
        transform: scale3d(0.3, 0.3, 1);
    }
    25%, 50% {
        opacity: 1;
    }
    to {
        opacity: 0;
        -webkit-transform: scale3d(1.2, 1.2, 1);
        transform: scale3d(1.2, 1.2, 1);
    }
}

Анимация Β«Ρ€Π°Π·Π²ΠΎΠ΄ΠΎΠ²Β» ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… эффСктов для ΠΊΠ½ΠΎΠΏΠΊΠΈ послС наТатия создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стали доступны Π² CSS3.

Javascript

Но это Π΅Ρ‰Π΅ Π½Π΅ всё. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ послС ΠΊΠ»ΠΈΠΊΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ стили ΠΊΠ½ΠΎΠΏΠΊΠ΅ послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°. Π›ΡƒΡ‡ΡˆΠΈΠΌ способом это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jQuery.

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ(modernizr.custom.js ΠΈ classie.js):

HTML&JS ΠšΠžΠ”

1
2
<script src="js/modernizr.custom.js"></script>
<script src="js/classie.js"></script>

ПослС Ρ‡Π΅Π³ΠΎ добавляСм нСбольшой ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс нашСй ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° Π½Π΅Π΅:

HTML&JS ΠšΠžΠ”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(function() {
    function mobilecheck() {
        var check = false;
        (function(a){if(/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\. (browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\. b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
        return check;
    }
 
    var support = { animations : Modernizr.cssanimations },
        animEndEventNames = { 'WebkitAnimation' : 'webkitAnimationEnd', 'OAnimation' : 'oAnimationEnd', 'msAnimation' : 'MSAnimationEnd', 'animation' : 'animationend' },
        animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ],
        onEndAnimation = function( el, callback ) {
            var onEndCallbackFn = function( ev ) {
                if( support.animations ) {
                    if( ev.target != this ) return;
                    this.removeEventListener( animEndEventName, onEndCallbackFn );
	            }
                if( callback && typeof callback === 'function' ) { callback.call(); }
            };
            if( support. animations ) {
                el.addEventListener( animEndEventName, onEndCallbackFn );
            }
            else {
                onEndCallbackFn();
            }
        },
        eventtype = mobilecheck() ? 'touchstart' : 'click';
 
        [].slice.call( document.querySelectorAll( '.cbutton' ) ).forEach( function( el ) {
            el.addEventListener( eventtype, function( ev ) {
                classie.add( el, 'cbutton--click' );
                onEndAnimation( classie.has( el, 'cbutton--complex' ) ? el.querySelector( '.cbutton__helper' ) : el, function() {
                    classie.remove( el, 'cbutton--click' );
                } );
            } );
        } );
})();

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! НСкоторыС ΠΈΠ· эффСктов ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² соврСмСнных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ….

УспСхов!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»

Π‘ Π£Π²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π‘Ρ‹ΡˆΠΊΠΈΠ½ ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½

30 ΡˆΠΈΠΊΠ°Ρ€Π½Ρ‹Ρ… инструмСнтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ Android ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈ

НиТС пСрСчислСны инструмСнты, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ, Π° сами прилоТСния β€” Π±ΠΎΠ»Π΅Π΅ качСствСнными. Π‘ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΈΠ· этого ΠΌΡ‹ Π΄Π°Π²Π½ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹, ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ β€” ΠΈ послС прочтСния ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ πŸ™‚ НадССмся, для вас эта ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° окаТСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ интСрСсной ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, ΠΊΠ°ΠΊ для нас.

FlowUp

ΠŸΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ продуктивности, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ FPS (frames per second β€” ΠΊΠ°Π΄Ρ€Ρ‹ Π² сСкунду), использованиС памяти, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора, использованиС диска ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ прилоТСния.

UPD По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° Ρ„Π΅Π²Ρ€Π°Π»ΡŒ 2019 Π³ΠΎΠ΄Π° сСрвис Π½Π΅ доступСн.


Stetho

ΠœΠΎΡ‰Π½Π°Ρ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android, разработанная Facebook. Π­Ρ‚ΠΎΡ‚ инструмСнт Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ простой, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π²Π΅Π±-страниц с использованиСм Chrome Developer Tools, ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ View, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite, ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.


JRebel для Android

ВсС ΠΌΡ‹ довольно сильно расстраиваСмся, глядя Π½Π° экран, ΠΊΠ°ΠΊ Π΄ΡƒΡ€Π°ΠΊΠΈ, Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ спустя Π²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ Gradle всС ΠΆΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Но этот ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт ΠΎΡ‚ JRebel спасаСт ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сокращая врСмя сборки ΠΈ практичСски пСрСводя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android Π² Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.


Gradle Please

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Gradle Π² качСствС систСмы сборки Π² Android Studio, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ всСго лишь ΠΎΠ΄Π½ΠΎΠΉ строкой ΠΊΠΎΠ΄Π°. Но ΠΊΠ°ΠΊ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эту строку быстро ΠΈ просто? Π’ΠΎΡ‚ здСсь-Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ этот ΠΌΠΈΠ»Ρ‹ΠΉ малСнький инструмСнт.


Android Asset Studio

Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ коллСкция простых Π² использовании инструмСнтов для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠΊΠΎΠ½ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понадобятся Π²Π°ΠΌ ΠΏΡ€ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


LeakCanary

 

ΠœΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для обнаруТСния ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Square. УстановлСнный ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ, присылая Π²Π°ΠΌ увСдомлСния ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ отслСТиваниСм стСка.


DryRun

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² тСстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π»ΡŽΠ±ΡƒΡŽ Android-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΡƒΡŽ ΠΎΠ½Π»Π°ΠΉΠ½, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° нСсколько сСкунд. Π­Ρ‚ΠΎΡ‚ инструмСнт нСвСроятно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь практичСски Π±Π΅Π·ΠΎ всякого Ρ‚Ρ€ΡƒΠ΄Π°.


Slides Code Highlighter

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ довольно часто Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² конфСрСнциях ΠΈΠ»ΠΈ ΠΆΠ΅ просто ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ симпатичный кусок ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ инструмСнт ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ ваши скучныС части ΠΊΠΎΠ΄Π° Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ с красивой подсвСткой синтаксиса.


InstaBug

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


Takt

 

НСбольшая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ FPS прилоТСния Π²ΠΎ врСмя Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ВсСгда Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π°Π³ΠΈ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»Π°Π³ΠΈ Π½Π° Ρ„Π°Π·Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ своим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ шанс ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΎΠΏΡ‹Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.


Android Debug Database

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ ваш способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… настроСк вашСго прилоТСния ΠΏΠΎΠ΄ Android. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ SQL-запросы Π² чистом ΠΈ красивом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС.


Source Tree

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ, понятный ΠΈ красивый инструмСнт, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Git Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ наглядно Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ваши измСнСния, ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π²Π΅Ρ‚ΠΊΠΈ Π±Π΅Π· нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½Ρƒ-Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для всСх Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π² Π±Π»Π°Π³ΠΎΠ³ΠΎΠ²Π΅ΠΉΠ½Ρ‹ΠΉ ступор ΠΏΠ΅Ρ€Π΅Π΄ просторами Git.


GenyMotion

Когда-Ρ‚ΠΎ Π΄Π°Π²Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Android-эмулятор Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΡƒΠ»ΠΈΡ‚ΠΊΠΈ, GenyMotion Π±Ρ‹Π» СдинствСнным Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ для Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Однако со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ довольно сущСствСнно Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΡΡ ΠΈ прСвратился ΠΈΠ· простого эмулятора Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования ΠΈ развСртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


Android Wifi ADB

Π‘ этим малСньким, Π½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΡŒΠΊΠΈΠΌ инструмСнтом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Android Studio Π½Π° дСвайсС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ WiFi. Для этого Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дСвайс ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°Π±Π΅Π»Π΅ΠΌ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ бСспроводной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


FindBugs

Π­Ρ‚ΠΎΡ‚ нСбольшой ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² поискС Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… для Java Π±Π°Π³ΠΎΠ² прямо Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Бобирая большиС прилоТСния, ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, сами Ρ‚ΠΎΠ³ΠΎ Π½Π΅ зная, пропускаСм Ρ‚ΠΎ Ρ‚ΡƒΡ‚, Ρ‚ΠΎ Ρ‚Π°ΠΌ Π±Π°Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ вылазят Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, вызывая суматоху.


Drawable Optimizer

Π’ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько рСсурсов с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вносит вСсомый Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€ APK. Но этот классный Gradle-ΠΏΠ»Π°Π³ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ APK.


Scalpel

Π­Ρ‚ΠΎΡ‚ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ инструмСнт прСдоставляСт Π²Π°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ 3D-ΠΌΠ°ΠΊΠ΅Ρ‚Π° всСго прилоТСния Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Новичкам это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ особСнно Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΠ²ΡƒΡŽ пСрспСктиву восприятия своих ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ².


BlockCanary

 

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° мощная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π°Ρ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ самый ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса вашСго прилоТСния блокируСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎΠ»Π³ΠΎ ΠΈ заставляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π·Π±ΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ просто, Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ LeakCanary.


NimbleDroid

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для тСстирования вашСго прилоТСния Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈ критичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄ΠΎ Π΅Π³ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Play Market. Он довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ автоматичСски провСряСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ сцСнарии Π½Π° вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, находя мСста ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ΠΈ критичСскиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ внимания.


Methods Count

ΠšΡ‚ΠΎ ΠΆΠ΅ Π½Π΅ Π»ΡŽΠ±ΠΈΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ вкусных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ² Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Однако ΠΏΡ€ΠΈ этом всС врСмя приходится Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ прСсловутой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π΅Π»Π° количСства ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² 65536. Для этого ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ этот чудСсный инструмСнт, Π΄Π°ΡŽΡ‰ΠΈΠΉ ясноС прСдставлСниС ΠΎ количСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ каТдая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° привносит Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

UPD По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° Ρ„Π΅Π²Ρ€Π°Π»ΡŒ 2019 Π³ΠΎΠ΄Π° сСрвис Π½Π΅ доступСн.


Android Tool for Mac


Если Π²Ρ‹ β€” Android-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Mac, Ρ‚ΠΎ этот малСнький инструмСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹, видСозаписи прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, ΠΎΠ΄Π½ΠΈΠΌ-СдинствСнным ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.


DevKnox

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


JSONSchema2POJO

ВсС ΠΌΡ‹ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ случаями, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ JSON ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ довольно скучно ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ Π²Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ этот ΠΊΡ€ΡƒΡ‚ΠΎΠΉ инструмСнт. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ваш JSON, ΠΈ инструмСнт автоматичСски сгСнСрируСт Π²Π°ΠΌ всС POJO-классы.


ADB IDEA

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


Key Promoter

 

ΠœΡ‹ всС Π·Π½Π°Π΅ΠΌ, насколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ быстры ΡˆΠΎΡ€Ρ‚ΠΊΠ°Ρ‚Ρ‹, Π½ΠΎ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ большого количСства дСйствий, Ρ‡Ρ‚ΠΎ ΠΈΡ… всС Ρ‚Π°ΠΊ слоТно Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒβ€¦ ИмСнно Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π° сцСну Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ этот прСкрасный ΠΏΠ»Π°Π³ΠΈΠ½, дСлая ΠΈΠ³Ρ€Ρƒ с сочСтаниями клавиш Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ возвращая Π² Π½Π΅Π΅ вСсь Ρ„Π°Π½.


Fabric

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


ClassyShark

Π‘ ClassyShark Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ любой Ρ„Π°ΠΉΠ» Android APK ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π² Π½Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, классы, рСсурсы, манифСст, зависимости, количСство dex-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ даст прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния.


APK DeGuard

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самый Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ дСобфускатор для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ Android. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ, Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.


Codota

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто ΠΌΡ‹ встрСчаСм прСпятствия, разрабатывая Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ нСсколько быстрых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π° Π½Π° Stack Overflow ΠΈΠ»ΠΈ GitHub. Π­Ρ‚ΠΎΡ‚ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π½Π΅ покидая IDE.


Material Design Icon Generator

Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ для Android Studio позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌ Material Design ΠΈ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ прямо Π² вашСй IDE, экономя ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.


Π—Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅ΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Noveo.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«30+ Kickass Tools to Develop Android Apps Like a ProΒ»

10 Ρ‚Ρ€Π°Π±Π»ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ β€” Β«Π₯Π°ΠΊΠ΅Ρ€Β»

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для Android Π² контСкстС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ инструмСнтов. ΠœΡ‹ избавимся ΠΎΡ‚ нСобходимости ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ смартфон с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ кабСля Π²ΠΎ врСмя тСстирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π° устройствС, расщСпим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° вСрсии Lite ΠΈ Pro, встроим Π² Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ отсылки Π½Π° сСрвСр ΠΊΡ€Π°Ρˆ-Ρ€Π΅ΠΏΠΎΡ€Ρ‚ΠΎΠ², Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ тСстированиС, обфусцируСм ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚ создадим для прилоТСния ΠΈΠΊΠΎΠ½ΠΊΡƒ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСсурсы. ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ.

 

1. ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ эмулятор

Π˜Ρ‚Π°ΠΊ, Ρ‚Ρ‹ набросал своС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΡ€Π° Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ. Для этого Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ Android SDK Π΅ΡΡ‚ΡŒ эмулятор. Π”ΠΎΠ»Π³ΠΎΠ΅ врСмя Π΅Π³ΠΎ ΡƒΠΏΡ€Π΅ΠΊΠ°Π»ΠΈ Π·Π° ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ с выпуском Android Studio 2.0 ситуация Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π°ΡΡŒ β€” x86-вСрсия эмулятора ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Ρ…Π°Ρ€Π΄Π²Π°Ρ€Π½ΠΎΠ΅ ускорСниС, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройств. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ появился ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ графичСский интСрфСйс, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π²ΠΎΠ½ΠΊΠΈ, БМБ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ GPS ΠΈ сбои Π² сСти, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всС, для Ρ‡Π΅Π³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρ‚Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ обновился, Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ с Eclipse. И ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ x86-Π²Π΅Ρ€ΡΠΈΡŽ эмулятора Π² AVD manager, ARM-вСрсия Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ…Π°Ρ€Π΄Π²Π°Ρ€Π½ΠΎΠ΅ ускорСниС.

Новый эмулятор Android Studio 2.0

 

2. Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ Π½Π° ΠΏΠΎΠ²ΠΎΠ΄ΠΊΠ΅

Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап β€” тСстированиС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ устройствС. Π—Π΄Π΅ΡΡŒ всС просто: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΡˆΡŒ смартфон ΠΏΠΎ USB, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡˆΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΡˆΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² настройках для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², послС Ρ‡Π΅Π³ΠΎ дСвайс появляСтся Π² спискС доступных для установки прилоТСния (рядом с эмулятором). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС устройство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ ПК с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ кабСля, Π° Ссли это Ρ‚Π²ΠΎΠΉ основной смартфон, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π·Π²ΠΎΠ½ΠΊΠΈ ΠΈ сообщСния, Ρ‚ΠΎ ΠΎΠ± удобствС Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ приходится.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Android Studio (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ADB, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для связи с устройством) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ сСти. Но Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Если Ρƒ тСбя Ρ€ΡƒΡ‚ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ смартфон, Ρ‚ΠΎ Ρ‚Π΅Π±Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ: Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΠΎ сСти ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прилоТСния WiFi ADB. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий:

  1. УстанавливаСм WiFi ADB, запускаСм, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ сСтСвой Ρ€Π΅ΠΆΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ IP-адрСс.
  2. ЗапускаСм Android Studio.
  3. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с установлСнным SDK, Π΄Π°Π»Π΅Π΅ Π² platform-tools ΠΈ запускаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

    $ adb connect IP-адрСс

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡˆΡŒ Π² спискС устройств Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ свой смартфон. Π’Π΅, Ρƒ ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚ root, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ADB Π² сСтСвом Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π΅Π³ΠΎ ΠΊΠ°Π±Π΅Π»Π΅ΠΌ. ДСлаСтся это Ρ‚Π°ΠΊ:

  1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ смартфон ΠΈ устанавливаСм Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹.
  2. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² настройках для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².
  3. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ консоль, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ SDK/platform-tools ΠΈ запускаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

    $ adb tcpip 5555

  4. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ смартфону ΠΏΠΎ сСти:

    $ adb connect IP-адрСс

IP-адрСс ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· настройки: «О Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ (О ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π΅) β†’ ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния», ΠΏΡƒΠ½ΠΊΡ‚ Β«IP-адрСс».

 

3. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ОкСй, Ρ‚Π²ΠΎΠΉ Π½Π°ΠΊΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Π·Π° полчаса ΠΎΠ³Ρ€Ρ‹Π·ΠΎΠΊ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ настало врСмя ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² настоящСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с красивым интСрфСйсом ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ для Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола. На этом этапС Ρ‚Π΅Π±Π΅ навСрняка понадобятся внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ интСрфСйса, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ программирования ΠΈ связь с внСшними сСрвисами. И Ссли с послСдними всС ясно (Π½ΡƒΠΆΠ΅Π½ SDK для Dropbox β€” ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΡˆΡŒ ΠΏΠΎΡ€Ρ‚Π°Π» для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΡΠ»Π΅Π΄ΡƒΠ΅ΡˆΡŒ инструкциям), Ρ‚ΠΎ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡƒΠΆΠ΅ слоТнСС. Π“Π΄Π΅ ΠΈΡ… ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π»ΡƒΡ‡ΡˆΠ΅?

НаиболСС ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ β€” это Android Arsenal. Π’Π°ΠΌ Ρ‚Ρ‹ найдСшь практичСски всС, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ. Доступны ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ поиск ΠΈ сортировка ΠΏΠΎ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ инструкция, ΠΊΠ°ΠΊ Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ своСму ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π² Ρ‚ΠΎΠΌ числС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартной для Android систСмы сборки Gradle: достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² Ρ„Π°ΠΉΠ» build.gradle ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π² спискС зависимостСй.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ инструкция ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ список must have Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚Ρ‹ найдСшь Π½Π° этой страницС. ΠžΡ‚ сСбя добавлю, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… этапах стоит сразу ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Dagger 2, RxJava ΠΈ Retrofit. Π‘Ρ‚Π°Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ, Ρ‚Ρ‹ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈΠ΄Π΅ΡˆΡŒ ΠΊ использованию этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

 

4. Иконки ΠΈ ΠΊΠ»ΠΈΠΏΠ°Ρ€Ρ‚

НаконСц, спустя Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ Ρƒ тСбя Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ графичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π΅Ρ‚ Π΄ΠΎ сих ΠΏΠΎΡ€: ΠΈΠΊΠΎΠ½ΠΊΠ° стандартная, Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π°, вмСсто ΠΊΠ»ΠΈΠΏΠ°Ρ€Ρ‚Π° β€” Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π±Π΅Π· Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Ρ‹ бСссмыслСнно, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° ΠΈΠΊΠΎΠ½ΠΊΡƒ для своСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прилоТСния Ρ‚ΠΎΠΆΠ΅ Π³Π»ΡƒΠΏΠΎ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

На самом Π΄Π΅Π»Π΅ ΠΈΠΊΠΎΠ½ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π•ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅Π±-сСрвис Android Asset Studio, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° ΠΏΠ°Ρ€Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΈΠΊΠΎΠ½ΠΊΡƒ Π²ΠΎ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…. Π’ качСствС основы ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΠ±ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСкст ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всСго, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· прСдоставлСнного сСрвисом ΠΊΠ»ΠΈΠΏΠ°Ρ€Ρ‚Π°. Π’Π°ΠΊΠΆΠ΅ Ρ‚Ρ‹ смоТСшь Π·Π°Π΄Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ (круглая, квадратная, Π² стилС iOS. ..), Ρ†Π²Π΅Ρ‚, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π΅Π½ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² Ρ‚Π²ΠΎΠ΅ΠΌ распоряТСнии появится Π°Ρ€Ρ…ΠΈΠ² ic_launcher.zip, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ AndroidstudioProjects/ИМЯ_ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π―/app/src/main/res. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ создай Π²Π΅Π±-ΠΈΠΊΠΎΠ½ΠΊΡƒ, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Generate web iconΒ». Она Ρ‚Π΅Π±Π΅ понадобится.

НС Π·Π°Π±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎ Π²Π΅Π±-ΠΈΠΊΠΎΠ½ΠΊΡƒ

Π’ΠΎΡ‚ ΠΆΠ΅ сСрвис позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ для ActionBar’а ΠΈ строки состояния. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅, скаТу лишь, Ρ‡Ρ‚ΠΎ Π² строкС состояния Π»ΡƒΡ‡ΡˆΠ΅ всСго смотрятся ΠΈΠΊΠΎΠ½ΠΊΠΈ с отступом ΠΎΡ‚ ΠΊΡ€Π°Π΅Π² 15%.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π΅Π±Π΅ понадобится Ρ‚Π°ΠΊ называСмая Feature Image. Π­Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Play Market ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² качСствС плашки Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части экрана (ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΡˆΡŒ страницу прилоТСния Π½Π° смартфонС). Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ сСрвиса. Для оформлСния ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвис ΠΎΡ‚ Google. Он создаСт Π²ΠΎΠΊΡ€ΡƒΠ³ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° Ρ€Π°ΠΌΠΊΡƒ смартфона.

 

5. ΠšΡ€Π°Ρˆ-Ρ€Π΅ΠΏΠΎΡ€Ρ‚Ρ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, ΠΈΠΊΠΎΠ½ΠΊΠ° Π΅ΡΡ‚ΡŒ, интСрфСйс ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ, ΠΊΠΎΠ΄ качСствСнный. Настало врСмя тСстирования, ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ дСлаСшь, β€” Ρ€Π°ΡΡΡ‹Π»Π°Π΅ΡˆΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ. Но Π²ΠΎΡ‚ Π½Π΅Π·Π°Π΄Π°Ρ‡Π°: Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°Π΅Ρ‚, Π° Ρƒ тСбя всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ дСйствия, ΠΏΡ€ΠΈΠ²Π΅Π΄ΡˆΠΈΠ΅ ΠΊ падСнию, Ρ‚Ρ‹ Π½Π΅ моТСшь. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ·Π΅ΠΉ ΠΏΡ€ΠΈΡΡ‹Π»Π°Ρ‚ΡŒ Ρ‚Π΅Π±Π΅ листинг logcat?

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

Одна ΠΈΠ· самых популярных Ρ‚Π°ΠΊΠΈΡ… систСм β€” Fabric, ΠΎΠ΄Π½Π°ΠΊΠΎ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² сторону Splunk MINT: ΠΎΠ½ бСсплатный, простой ΠΈ Π»Π΅Π³ΠΊΠΎ интСгрируСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ всСго ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π°). Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ SDK, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Gradle. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» build. gradle (Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ относится ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π° Π½Π΅ ΠΊΠΎ всСму ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ) ΠΈ добавляСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

repositories {
    maven { url "https://mint.splunk.com/gradle/" }
}

dependencies {
    compile "com.splunk.mint:mint:5.0.0"
}

Π”Π°Π»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Π±-страницу Splunk MINT, рСгистрируСмся ΠΈ добавляСм Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· панСль управлСния (add app):

ПослС этого Splunk MINT ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅Π±Π΅ строку ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄:

Π›ΡƒΡ‡ΡˆΠ΅Π΅ мСсто для этой строки β€” основная Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π²ΠΎΠ΅Π³ΠΎ прилоТСния (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ носит имя MainActivity.java), самоС Π½Π°Ρ‡Π°Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onCreate(). Однако Ссли Ρ‚Ρ‹ пишСшь сСрвисноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· интСрфСйса ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, Ρ‚ΠΎ строку слСдуСт Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄ сСрвиса, Ρ‚ΠΎΠΆΠ΅ Π² Π½Π°Ρ‡Π°Π»ΠΎ onCreate().

ПослС сборки прилоТСния ΠΈ установки Π½Π° устройство Splunk MINT Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ доступ ΠΊ статистикС (количСство установок, ΡŽΠ·Π΅Ρ€ΠΎΠ², ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, вСрсии Android, использованиС сСти ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅):

Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, статистика ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ΠΈ стСктрСйсы:

Π­Ρ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²ΠΏΠΎΠ»Π½Π΅ достаточно для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

 

6. ВСстированиС

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π²ΠΎΠΈΡ… Π΄Ρ€ΡƒΠ·Π΅ΠΉ, ΠΈ ΠΎΠ½ΠΎ ΠΈΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ. Π§Ρ‚ΠΎ дальшС? Π’Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚? НСт, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· систСму автоматичСского тСстирования ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… тСстСров.

НавСрноС, Π»ΡƒΡ‡ΡˆΠΈΠΉ сСрвис автоматичСского тСстирования β€” это Xamarin. Он позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²ΡƒΡ… тысячах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… устройств, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (Ρ‚Π°ΠΏΡ‹, ТСсты, смахивания, наТатия физичСских ΠΊΠ½ΠΎΠΏΠΎΠΊ), ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ смартфона, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ статистику потрСблСния памяти, процСссора ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Xamarin Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ тСсты придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ самому, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Calabash, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎ сути, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π° Ruby ΠΈΠ»ΠΈ C#) для тСстирования ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ. Π‘Π°ΠΌ сСрвис, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ. Π’Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ составляСт 30 Π΄Π½Π΅ΠΉ, послС Ρ‡Π΅Π³ΠΎ придСтся ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ 100 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² мСсяц. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, сам Calabash β€” это open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ всС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ Π½Π° локальной машинС.

Π‘ тСстированиСм Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ людьми всС нСсколько ΠΏΡ€ΠΎΡ‰Π΅. Достаточно ΠΈΠΌΠ΅Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ описаниС Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ чСловСчСском языкС, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΎΡ‚ тСстировщика. Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅ΠΌ подходящий сСрвис, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, трСбования ΠΈ ΠΆΠ΄Π΅ΠΌ. Какой сСрвис Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ? Π˜Ρ… ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Ubertesters. Π£ Π½ΠΈΡ… вСсьма Π΄Π΅ΠΌΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅Π½Ρ‹, плюс Π² Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ Π°Π½Π°Π»ΠΎΠ³ Splunk MINT Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатно. Один час тСстирования стоит ΠΎΡ‚ 25 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Ubertesters

 

7. ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ ΠΈ оптимизация

ОкСй, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ протСстировано со всСх сторон, ΠΈ ΠΏΠΎΡ€Π° Π΅Π³ΠΎ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚. Но спСрва Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ смог ΡƒΠΊΡ€Π°ΡΡ‚ΡŒ Ρ‚Π²ΠΎΡŽ ΡΡƒΠΏΠ΅Ρ€ΠΈΠ΄Π΅ΡŽ, β€” всС-Ρ‚Π°ΠΊΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Dalvik вСсьма прост, ΠΈ Π΅Π³ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ послС дизассСмблирования, Π½ΠΎ ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Π½Π°Ρ‚ΡŒ Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ исходный ΠΊΠΎΠ΄ Java. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ самого Android Studio Π±Π΅Π· всяких сторонних инструмСнтов.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ для нас, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ рСвСрсСров ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” слабаки, нСспособныС Ρ€Π°ΡΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒ ΠΊΠΎΠ΄ послС примСнСния ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ обфускатора. И Ρ‚Π°ΠΊΠΎΠΉ обфускатор Π΅ΡΡ‚ΡŒ Π² составС Android Studio. Он носит имя ProGuard ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ простой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ minifyEnabled true Π² Ρ„Π°ΠΉΠ»Π΅ build.gradle прилоТСния:

buildTypes {
    release {
        debuggable false
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ProGuard довольно прост: ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° всСх классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ (MainActivity.class становится A.class, onCreate() прСвращаСтся Π² b() ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ удаляСт всю ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, выполняСт ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄-1 состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк, ΠΌΠ΅Ρ‚ΠΎΠ΄-2 Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ мноТСство Ρ€Π°Π·, Ρ€Π°Π·ΡƒΠΌΠ½Π΅Π΅ пСрСнСсти ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-1 Π² ΠΌΠ΅Ρ‚ΠΎΠ΄-2). ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅, быстрСС, Π° ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π½Π΅ΠΌΡƒ послС дСкомпиляции слоТнСС.

Для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ReDex ΠΎΡ‚ Facebook. Как ΠΈ ProGuard, ΠΎΠ½ выполняСт ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³, удаляСт ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄, Π° ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ feedback-directed optimization (FDO), которая позволяСт Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ стартС прилоТСния, Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°. Из Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй: ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ интСрфСйсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ классом, ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° этапС сборки, ΠΈ ссылки Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ исходных тСкстов).

По словам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ReDex Π½Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ProGuard, Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΡƒΠΆΠ΅ послС Π½Π΅Π³ΠΎ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ старта ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ комплСксного прилоТСния удастся ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 25% (это информация Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²). ЕдинствСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° инструмСнта Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для macOS ΠΈ Linux. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΅Π³ΠΎ Π½Π΅Ρ‚, придСтся ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ Linux этот процСсс выглядит Ρ‚Π°ΠΊ:

$ git clone https://github.com/facebook/redex.git
$ cd redex
$ autoreconf -ivf && ./configure && make
$ sudo make install

Π”Π°Π»Π΅Π΅ слСдуСт Π½Π°Ρ‚Ρ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

$ export ANDROID_SDK=/ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ/SDK
$ redex --sign -s /ΠΏΡƒΡ‚ΡŒ/Π΄ΠΎ/Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°/ΠΊΠ»ΡŽΡ‡Π΅ΠΉ -a имя_ΠΊΠ»ΡŽΡ‡Π° -s ΠΏΠ°Ρ€ΠΎΠ»ΡŒ app-release.apk -o app-release-optimzied.apk

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠ»ΡŽΡ‡ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта информация Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для сборки Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠΉ вСрсии Ρ‚Π²ΠΎΠ΅Π³ΠΎ прилоТСния.

ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Π°Ρ€Ρ‚ΠΈΠ»Π»Π΅Ρ€ΠΈΡŽ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ обфускаторы Π²Ρ€ΠΎΠ΄Π΅ AppSolid ΠΈ DexProtector. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π΅ просто ΠΎΠ±Ρ„ΡƒΡΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ прилоТСния, Π½ΠΎ ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ строки, классы, ΠΊΠΎΠ΄ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, рСсурсы ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ. Бтоят ΠΎΠ½ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎ, ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΈΡ… Π·Π°Ρ‰ΠΈΡ‚Π° Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ совсСм Π½Π΅Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΌ способом.

INFO


Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ рСсурсы, слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π±Π»ΠΎΠΊ buildTypes β†’ release Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ shrinkResources true.

 

8. Lite- ΠΈ Pro-вСрсии

Ну всС, ΠΏΠΎΡ€Π° Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² Play Market. Π₯отя Π½Π΅Ρ‚, стоп! Π’Ρ‹ ΠΆΠ΅ Π½Π΅ просто Ρ‚Π°ΠΊ сидСл ΠΈ писал Π½ΠΎΡ‡Π°ΠΌΠΈ ΠΊΠΎΠ΄, Π° ΠΏΠΎΡ‚ΠΎΠΌ, зСвая, шСл Π½Π° ΡƒΡ‡Π΅Π±Ρƒ. НС зря ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π» ΠΊΡƒΡ‡Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚Π΅Ρ€Π·Π°Π» людСй Π³Π»ΡƒΠΏΡ‹ΠΌΠΈ вопросами Π½Π° Stack Overflow. Π’Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π΅ просто Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π° Ρ€Π°Π·Π±ΠΎΠ³Π°Ρ‚Π΅Ρ‚ΡŒ! ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствий.

  1. Π’Ρ‹ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΡˆΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Play Market ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΡˆΡŒ Π·Π° Π½Π΅Π³ΠΎ Ρ†Π΅Π½Ρƒ. НСдостаток: людСй придСтся ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ±Π΅ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° это Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
  2. Π’Ρ‹ добавляСшь Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ. НСдостаток: Π½Π° Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅ Ρ‚Ρ‹ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΡˆΡŒ максимум Π½Π° ΠΏΠΈΠ²ΠΎ, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½Π° сильно Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚ людСй.
  3. Π’Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΡˆΡŒ систСму in-app purchaise, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ даСшь Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΠ² прямо ΠΈΠ· прилоТСния. НСдостаток: in-app purchaise ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ завязан Π½Π° Google Play Services, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π»ΠΈΠ±ΠΎ нСдоступСн Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Π°Ρ…, Π»ΠΈΠ±ΠΎ рСализуСтся Ρ‚Π°ΠΌ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии.
  4. Π’Ρ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΡˆΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° вСрсии Lite ΠΈ Pro, сохраняя Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Ρ‹, Π² Ρ‚ΠΎΠΌ числС китайскиС β€” ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ сСрвисам Google. НСдостаток: Pro-Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΡ‚Π°Ρ‰ΠΈΡ‚ΡŒ.

Π˜Ρ‚ΠΎΠ³ΠΎ Π΄Π²Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: 3 ΠΈ 4. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ (придСтся Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ структуру, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ), Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой ΠΈΠ΄Π΅ΠΈ Π² систСмС сборки Gradle Π΅ΡΡ‚ΡŒ функция Flavors. Она позволяСт ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² прилоТСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ВсС, Ρ‡Ρ‚ΠΎ трСбуСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² build.gradle прилоТСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

productFlavors {
    lite {
        packageName = 'com.example.app'
    }
    pro {
        packageName = 'com.example.app.pro'
    }
}

ПослС этого Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ BuildConfig. FLAVOR. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ прилоТСния Π² зависимости ΠΎΡ‚ Π΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

if (BuildConfig.FLAVOR.equals("pro") {
    // ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ-ΠΊΠΎΠ΄
} else {
    // Код для Π±Π΅Π΄Π½Ρ‹Ρ…
}

Однако Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ изъян β€” ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя вСсь ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Lite-Π²Π΅Ρ€ΡΠΈΡŽ Π² Pro ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΎΠ΄Π½ΠΎΠΉ строки Π² дизассСмблированном ΠΊΠΎΠ΄Π΅. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ исходники, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… прилоТСния. Для этого достаточно рядом с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ main Π²Π½ΡƒΡ‚Ρ€ΠΈ app/src ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Lite ΠΈ Pro), Π° Π² Π½ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ java/com/example/app, Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ исходники, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² случаС с классом Premium структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

 

9. Вонкости Google Play

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, ΠΏΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ! Но Π½Π° этом твоя эпопСя Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, Google Play Π½Π΅ Ρ‚Π°ΠΊ прост, ΠΊΠ°ΠΊ каТСтся. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½Ρ‹ 25 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ². Π‘Π΅Π· Π½ΠΈΡ… Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ Π½Π΅ пустят. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сразу послС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния Π² Developers Console Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° английский (ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ β†’ Π‘ΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ):

Π˜Π½Π°Ρ‡Π΅ всС, Ρƒ ΠΊΠΎΠ³ΠΎ смартфон настроСн Π½Π° использованиС ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ русского языка, всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ описаниС Π½Π° русском. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, само описаниС Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ±ΠΎΠΈΡ… языках (Ссли Π½Π΅ знаСшь английский β€” попроси Π΄Ρ€ΡƒΠ³Π°), Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ просто, достаточно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ язык Π² настройках смартфона ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ дСйствия.

Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ тСбя ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡ΠΎΠΊ Π² высоком Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΈ Π·Π½Π°Ρ‡ΠΎΠΊ для Ρ€Π°Π·Π΄Π΅Π»Π° Β«Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅Β». Если Ρ‚Ρ‹ слСдовал инструкциям ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΠ½ΠΈ Ρƒ тСбя ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ β€” это Ρ‚Π΅ самыС Π²Π΅Π±-ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΈ Feature Image.

Ну Π° Π΄Π°Π»Π΅Π΅ всС просто: Ρ‚ΠΈΠΏ прилоТСния, катСгория, возрастная Π³Ρ€ΡƒΠΏΠΏΠ°, Π²Π΅Π±-сайт, email. Когда Ρ‚Ρ‹ заполнишь всС поля ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ сСртификат IARC Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ возрастной Π³Ρ€ΡƒΠΏΠΏΡ‹ (ΠΎΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° email), останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» Π²Π²Π΅Ρ€Ρ…Ρƒ страницы ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ пСрвая публикация Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² срСднСм час ΠΈΠ»ΠΈ Π΄Π²Π°. ОбновлСниС β€” ΠΎΠΊΠΎΠ»ΠΎ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈ ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π»ΠΈ Ρ‚Ρ‹ само ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ исправил ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ Π² описании.

 

10. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Ρ‹

ВСбя ΠΌΠΎΠΆΠ΅Ρ‚ это ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ, Π½ΠΎ ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· нСдСлю послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Play Market Ρ‚Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²ΡΠΏΠ»Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ AppsZoom ΠΈ 1Mobile. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π·Π½Π°ΠΊ, ΠΈ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ, Π»ΡƒΡ‡ΡˆΠ΅ самому ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ дальнСйшиС шаги для размСщСния своСго прилоТСния Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚Π°Ρ….

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Overscan появилось Π½Π° AppZoom ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· нСдСлю послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Play Market

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅Π±Π΅ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ, Π²ΠΎΡ‚ список Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ пСрспСктивных:

  • Amazon App Store β€” извСстный ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ ΠΎΡ‚ Amazon, прСдустанавливаСмый Π½Π° ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Ρ‹ Kindle.
  • GetJar β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Богласно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ 2015 Π³ΠΎΠ΄Π°, содСрТит 849 036 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java ME, BlackBerry, Symbian, Windows Mobile ΠΈ Android.
  • SlideMe β€” извСстный ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΈΡ‚Π°ΠΉΡ†Ρ‹ часто ΠΏΡ€Π΅Π΄ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π½Π° свои устройства вмСсто Google Play.
  • Xiaomi App Store β€” ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ китайского «производитСля всСго ΠΈ вся» β€” Xiaomi.
  • Baidu App Store β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… китайских ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • Samsung Galaxy Apps β€” ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Samsung. ΠžΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ‚ΠΎΡˆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • XDA Labs β€” ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ„ΠΎΡ€ΡƒΠΌΠ° XDA Developers. Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ систСмных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Π²ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… root, ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Xposed.

Ну ΠΈ Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ„ΠΎΡ€ΡƒΠΌ 4pda.ru. Π’Π°ΠΌ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ фидбэк ΠΎΡ‚ ΡŽΠ·Π΅Ρ€ΠΎΠ².

 

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния для Android с нуля β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³. Π’Π΅Π±Π΅ придСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… вопросов, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… Π²Π»ΠΈΠ²Π°Π½ΠΈΠΉ. Но, ΠΊΠ°ΠΊ ΠΌΡ‹ выяснили, ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ½Π΄ΠΈ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ бСсплатными инструмСнтами.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ красивой ΠΊΠ½ΠΎΠΏΠΊΠΈ: Android | Овайс Π˜Π΄Ρ€ΠΈΡ | AndroidPub

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ настраиваСмой ΠΊΠ½ΠΎΠΏΠΊΠΈ с нуля.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ быстрой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ эффСктивно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Android. ΠœΡ‹ сдСлаСм это ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ xmls Π½Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. НачнСм, Π½Π΅ тСряя Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

GitHub: https://github.com/owaistnt/andoridbuttonexample

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС

Π’Ρ‹Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚ΠΎΠ²

Checkout material.io для Ρ†Π²Π΅Ρ‚ΠΎΠ²

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²

ΠœΡ‹ создадим 2 Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°: ΠΎΠ΄ΠΈΠ½ для стандартного ΠΈ ΠΎΠ΄ΠΈΠ½ для Π½Π°ΠΆΠ°Ρ‚ΠΎΠ³ΠΎ состояния.Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

button_gradient_1 для состояния Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ / ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Android StudioReversing gradient

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСлСктора

Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ вашС Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ состояниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

button_selector.xml

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ для ΠΊΠ½ΠΎΠΏΠΊΠΈ

ОбъявлСниС Π² стилях Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ пСрСтаскиваСм ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈΠ· ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², это Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ наша ΠΊΠ½ΠΎΠΏΠΊΠ°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ наш прогрСсс.

style.xml

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ !!

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π±Π΅Π· запуска нашСго прилоТСния.Нам Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ отступы ΠΈ тСкст ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Ρ‹Π»ΠΈ Π±Π΅Π»Ρ‹ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ быстро ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ это Π² стилях.

Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² activity_main.xmlОбновлСниС Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ StyleButton Π² дСйствии

Π­Ρ‚ΠΎ большой прогрСсс. Наша ΠΊΠ½ΠΎΠΏΠΊΠ° поддСрТиваСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² с API KitKat ΠΈ Π²Ρ‹ΡˆΠ΅ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π±Ρ‹Π» самый Π½ΠΈΠ·ΠΊΠΈΠΉ API, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°).

А ΠΊΠ°ΠΊ насчСт Ripple?

Рябь β€” это соврСмСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ добавляСт большС сладкого эффСкта ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ ΠΎΠ±Π΅Ρ€Π½Π΅ΠΌ Π½Π°ΡˆΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Ρ€ΡΠ±ΡŒΡŽ, Π° ΠΏΡ€ΠΈ появлСнии запроса ΠΎΠ± ошибкС ΠΌΡ‹ создадим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ button_selector для API v21 ΠΈ Π²Ρ‹ΡˆΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала создадим Ρ†Π²Π΅Ρ‚ ряби.

УмСньшСниС Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π»Π° для ripplev21 button_selector.xmlΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ.

НаконСц-Ρ‚ΠΎ ΠΌΡ‹ подошли ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΌΡƒ этапу Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ доступный способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅. Π’Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ β€” это слишком? Π§Ρ‚ΠΎ ΠΆ, стоит ΠΈΠ½Π²Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ такая ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΈ объявлСна ​​в стилС, Π»ΡŽΠ±ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€ΠΈ создании ΠΌΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ придСтся Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ стилизации ΠΊΠ½ΠΎΠΏΠΊΠΈ. А пСрСтаскиваСмая ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π― сказал Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ XML Π±ΡƒΠ΄Π΅Ρ‚ мСньшС. Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ€ΡƒΠΊΠΈ ΠΈ Π²Ρ‹ создали ΠΏΠ°Ρ€Ρƒ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько xmls, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ·Π°Π΄ΠΈ.

ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ XML: button_selector.xml

Π”ΠΈΠ·Π°ΠΉΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android, ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠšΡ€ΡƒΠ³Π»Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π¦Π²Π΅Ρ‚

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

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ повСдСния для Ρ€Π°Π·Π½Ρ‹Ρ… состояний ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояния Π²Ρ‹Π²ΠΎΠ΄Π°?

КаТдоС ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий прСдставлСния (ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ прСдставлСния) являСтся Ρ‚ΠΈΠΏΠΎΠΌ состояния:

  • state_pressed
  • state_selected
  • state_focused
  • state_enabled

state_focused β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅ курсор Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ .ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° эмуляторах.

state_selected ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π±ΠΎΡ€Π° прСдставлСния. НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с RadioButtons.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для ΠΊΠ½ΠΎΠΏΠΊΠΈ сущСствуСт всСго Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Ρ… состояния: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅, Π½Π°ΠΆΠ°Ρ‚ΠΎΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния сСлСктора ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рисования / Ρ†Π²Π΅Ρ‚ / Ρ„ΠΎΡ€ΠΌΡƒ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Android Studio.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· доступных для рисования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π¦Π²Π΅Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ colors.xml:

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» xml, созданный Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ для рисования.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π°.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» сСлСктора btn_bg_selector.xml содСрТит ΠΊΠΎΠ΄ для установки Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… состояний.

 


    
    
    

  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· состояний прСдставлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π° элСмСнта. Π’Π΅Π³ сСлСктора Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if β€” else if. Он провСряСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ условиС свСрху Π²Π½ΠΈΠ·. Когда условиС совпадаСт, ΠΎΠ½ΠΎ устанавливаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² элСмСнта.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Π΅Π³ элСмСнта являСтся Ρ‚Π΅Π³ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ напослСдок. Если ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ, Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Π³Π° элСмСнта Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

ΠœΡ‹ устанавливаСм ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Π°ΠΉΠ» сСлСктора с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² activity_main.xml ΠΊΠ°ΠΊ:

 
<Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ устанавливаСтся Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСлСктор btn_bg_selector_disabled.xml ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠ½ΠΎΠΏΠΊΠΈ, которая Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π°.

 

 android.com/apk/res/android">
    
    
    

  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ сСлСктор Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ android: enabled ΠΊΠ°ΠΊ false.

 
<Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Π² зависимости ΠΎΡ‚ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Код сСлСктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ это, присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ btn_drawable_selector. xml

 


    
    
    
    


  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. БостояниС фокуса Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° смартфонах.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рисованныС изобраТСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ссли ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Π° / высота большС, Ρ‡Π΅ΠΌ Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ / высоту ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² соотвСтствии с нарисованным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ТСсткого кодирования Π² xml, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, доступныС для рисования, ΠΈ установив ΠΈΡ… Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Для удобства ΠΌΡ‹ сдСлали ΠΏΠ΅Ρ€Π²ΠΎΠ΅ здСсь:

 
<Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />
  

ImageButton β€” это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для рисования Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
ImageButton поставляСтся с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ android: scale для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния.

 

  

Π¦Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² зависимости ΠΎΡ‚ состояния Π² сСлСкторС.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ· btn_txt_selector.xml Π΄Π΅Π»Π°Π΅Ρ‚ это. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ android: color вмСсто android: drawable .

 


    
    
    

  

Кнопка Π² раскладкС:

 
<Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />

  

Π€ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Π³ xml .
Π­Ρ‚ΠΈ XML-Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования.
Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов .

Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна ​​на ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), ΠΎΠ²Π°Π» , ΠΊΠΎΠ»ΡŒΡ†ΠΎ , линия .

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° Ρ„ΠΎΡ€ΠΌΡ‹:

  • <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚> β€” Установка Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вмСстС с Ρ‚ΠΈΠΏΠΎΠΌ (радиус, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ°)
  • β€” Установка Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π°
  • β€” Установка сплошного Ρ†Π²Π΅Ρ‚Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅
  • β€” Установка радиуса

Android Round Corner Button

Код xml для btn_shape_round.xml ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

 


    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "1dp"
        android: color = "@ android: color / black" />
    

  

Как ΠΈ Π² сСлСкторах, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ это Π² Ρ‚Π΅Π³Π΅ android: background Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² нашСм xml-ΠΌΠ°ΠΊΠ΅Ρ‚Π΅.

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android с Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ btn_shape_gradient.xml, ΠΌΡ‹ установили Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ . ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ gradient_radius.

 



    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: endColor = "@ Ρ†Π²Π΅Ρ‚ / Π·Π΅Π»Π΅Π½Ρ‹ΠΉ"
        android: gradientRadius = "30dp"
        android: type = "Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ"
        android: startColor = "@ color / yellow" />

    

    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "4dp"
        android: color = "@ android: color / black" />


  

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android ΠΈ сСлСктор вмСстС

Π€Π°ΠΉΠ» btn_selector_shape.xml содСрТит сСлСктор. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

 

 android.com/apk/res/android">
    

        
            
            <ΡƒΠ³Π»Ρ‹ android: radius = "20dp" />
            
        

    

    
        
            
            
            
        

    

  

УстановитС это Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΈ Ρ„ΠΎΡ€ΠΌΠ° измСнится с ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° ΠΎΠ²Π°Π» ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ³ΠΎΠ», ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ 45, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой.

Установка Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ капсулы
btn_shape_capsule. xml β€” это мСсто, Π³Π΄Π΅ ΠΌΡ‹ устанавливаСм Ρ„ΠΎΡ€ΠΌΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов Π² Π²ΠΈΠ΄Π΅ капсулы.

 



    
        

            
            

        

    
    
        
            
            
        

    


  

Код для MainActivity.Класс java, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ всС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

 




    


        


        <Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />

        <Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />

        <Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />

        

        <Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    


    

        

        <Кнопка
            android: id = "@ + id / btnRoundShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_round"
            android: padding = "8dp"
            android: text = "ΠšΠ Π£Π“Π›ΠΠ― ЀОРМА" />

        <Кнопка
            android: id = "@ + id / btnBgShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: background = "@ drawable / btn_shape_gradient"
            android: padding = "8dp"
            android: text = "ЀОРМА Π‘ Π“Π ΠΠ”Π˜Π•ΠΠ’ΠžΠœ" />


        <Кнопка
            android: id = "@ + id / btnSelectorShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_selector_shape"
            android: padding = "8dp"
            android: text = "ЀОРМА Π’Π«Π‘ΠžΠ Π" />


        

        <Кнопка
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_capsule"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    



  

Π’Ρ‹Π²ΠΎΠ΄ прилоТСния Android Custom Button Design

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

На этом ΠΌΡ‹ подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΡƒΡ€ΠΎΠΊΠ° ΠΏΠΎ сСлСкторам ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ студии Android ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android, ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠšΡ€ΡƒΠ³Π»Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π¦Π²Π΅Ρ‚

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

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ повСдСния для Ρ€Π°Π·Π½Ρ‹Ρ… состояний ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояния Π²Ρ‹Π²ΠΎΠ΄Π°?

КаТдоС ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий прСдставлСния (ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ прСдставлСния) являСтся Ρ‚ΠΈΠΏΠΎΠΌ состояния:

  • state_pressed
  • state_selected
  • state_focused
  • state_enabled

state_focused β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅ курсор Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° эмуляторах.

state_selected ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π±ΠΎΡ€Π° прСдставлСния. НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с RadioButtons.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для ΠΊΠ½ΠΎΠΏΠΊΠΈ сущСствуСт всСго Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Ρ… состояния: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅, Π½Π°ΠΆΠ°Ρ‚ΠΎΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния сСлСктора ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рисования / Ρ†Π²Π΅Ρ‚ / Ρ„ΠΎΡ€ΠΌΡƒ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Android Studio.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· доступных для рисования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ.

Π¦Π²Π΅Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ colors.xml:

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» xml, созданный Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ для рисования.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π°.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» сСлСктора btn_bg_selector.xml содСрТит ΠΊΠΎΠ΄ для установки Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… состояний.

 


    
    
    

  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· состояний прСдставлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π° элСмСнта. Π’Π΅Π³ сСлСктора Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if β€” else if. Он провСряСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ условиС свСрху Π²Π½ΠΈΠ·. Когда условиС совпадаСт, ΠΎΠ½ΠΎ устанавливаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² элСмСнта.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Π΅Π³ элСмСнта являСтся Ρ‚Π΅Π³ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ напослСдок. Если ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ, Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Π³Π° элСмСнта Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

ΠœΡ‹ устанавливаСм ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Π°ΠΉΠ» сСлСктора с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования Π½Π° Π½Π°ΡˆΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² activity_main.xml ΠΊΠ°ΠΊ:

 
<Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ устанавливаСтся Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСлСктор btn_bg_selector_disabled. xml ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠ½ΠΎΠΏΠΊΠΈ, которая Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π°.

 


    
    
    

  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ сСлСктор Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ android: enabled ΠΊΠ°ΠΊ false.

 
<Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Π² зависимости ΠΎΡ‚ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Код сСлСктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ это, присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ btn_drawable_selector.xml

 


    
    
    
    


  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. БостояниС фокуса Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° смартфонах.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рисованныС изобраТСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ссли ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Π° / высота большС, Ρ‡Π΅ΠΌ Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ / высоту ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² соотвСтствии с нарисованным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ТСсткого кодирования Π² xml, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, доступныС для рисования, ΠΈ установив ΠΈΡ… Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Для удобства ΠΌΡ‹ сдСлали ΠΏΠ΅Ρ€Π²ΠΎΠ΅ здСсь:

 
<Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />
  

ImageButton β€” это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для рисования Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
ImageButton поставляСтся с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ android: scale для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния.

 

  

Π¦Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² зависимости ΠΎΡ‚ состояния Π² сСлСкторС.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ· btn_txt_selector.xml Π΄Π΅Π»Π°Π΅Ρ‚ это. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ android: color вмСсто android: drawable .

 


    
    
    

  

Кнопка Π² раскладкС:

 
<Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />

  

Π€ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Π³ xml .
Π­Ρ‚ΠΈ XML-Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования.
Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов .

Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна ​​на ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), ΠΎΠ²Π°Π» , ΠΊΠΎΠ»ΡŒΡ†ΠΎ , линия .

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° Ρ„ΠΎΡ€ΠΌΡ‹:

  • <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚> β€” Установка Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вмСстС с Ρ‚ΠΈΠΏΠΎΠΌ (радиус, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ°)
  • β€” Установка Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π°
  • β€” Установка сплошного Ρ†Π²Π΅Ρ‚Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅
  • β€” Установка радиуса

Android Round Corner Button

Код xml для btn_shape_round.xml ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

 


    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "1dp"
        android: color = "@ android: color / black" />
    

  

Как ΠΈ Π² сСлСкторах, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ это Π² Ρ‚Π΅Π³Π΅ android: background Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² нашСм xml-ΠΌΠ°ΠΊΠ΅Ρ‚Π΅.

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android с Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ btn_shape_gradient.xml, ΠΌΡ‹ установили Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ . ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ gradient_radius.

 



    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: endColor = "@ Ρ†Π²Π΅Ρ‚ / Π·Π΅Π»Π΅Π½Ρ‹ΠΉ"
        android: gradientRadius = "30dp"
        android: type = "Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ"
        android: startColor = "@ color / yellow" />

    

    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "4dp"
        android: color = "@ android: color / black" />


  

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android ΠΈ сСлСктор вмСстС

Π€Π°ΠΉΠ» btn_selector_shape.xml содСрТит сСлСктор. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

 

 android.com/apk/res/android">
    

        
            
            <ΡƒΠ³Π»Ρ‹ android: radius = "20dp" />
            
        

    

    
        
            
            
            
        

    

  

УстановитС это Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΈ Ρ„ΠΎΡ€ΠΌΠ° измСнится с ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° ΠΎΠ²Π°Π» ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ³ΠΎΠ», ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ 45, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой.

Установка Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ капсулы
btn_shape_capsule. xml β€” это мСсто, Π³Π΄Π΅ ΠΌΡ‹ устанавливаСм Ρ„ΠΎΡ€ΠΌΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов Π² Π²ΠΈΠ΄Π΅ капсулы.

 



    
        

            
            

        

    
    
        
            
            
        

    


  

Код для MainActivity.Класс java, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ всС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

 




    


        


        <Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />

        <Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />

        <Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />

        

        <Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    


    

        

        <Кнопка
            android: id = "@ + id / btnRoundShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_round"
            android: padding = "8dp"
            android: text = "ΠšΠ Π£Π“Π›ΠΠ― ЀОРМА" />

        <Кнопка
            android: id = "@ + id / btnBgShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: background = "@ drawable / btn_shape_gradient"
            android: padding = "8dp"
            android: text = "ЀОРМА Π‘ Π“Π ΠΠ”Π˜Π•ΠΠ’ΠžΠœ" />


        <Кнопка
            android: id = "@ + id / btnSelectorShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_selector_shape"
            android: padding = "8dp"
            android: text = "ЀОРМА Π’Π«Π‘ΠžΠ Π" />


        

        <Кнопка
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_capsule"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    



  

Π’Ρ‹Π²ΠΎΠ΄ прилоТСния Android Custom Button Design

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

На этом ΠΌΡ‹ подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΡƒΡ€ΠΎΠΊΠ° ΠΏΠΎ сСлСкторам ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ студии Android ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android, ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠšΡ€ΡƒΠ³Π»Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π¦Π²Π΅Ρ‚

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

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ повСдСния для Ρ€Π°Π·Π½Ρ‹Ρ… состояний ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояния Π²Ρ‹Π²ΠΎΠ΄Π°?

КаТдоС ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий прСдставлСния (ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ прСдставлСния) являСтся Ρ‚ΠΈΠΏΠΎΠΌ состояния:

  • state_pressed
  • state_selected
  • state_focused
  • state_enabled

state_focused β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅ курсор Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° эмуляторах.

state_selected ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π±ΠΎΡ€Π° прСдставлСния. НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с RadioButtons.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для ΠΊΠ½ΠΎΠΏΠΊΠΈ сущСствуСт всСго Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Ρ… состояния: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅, Π½Π°ΠΆΠ°Ρ‚ΠΎΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния сСлСктора ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рисования / Ρ†Π²Π΅Ρ‚ / Ρ„ΠΎΡ€ΠΌΡƒ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Android Studio.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· доступных для рисования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π¦Π²Π΅Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ colors.xml:

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» xml, созданный Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ для рисования.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π°.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» сСлСктора btn_bg_selector.xml содСрТит ΠΊΠΎΠ΄ для установки Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… состояний.

 


    
    
    

  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· состояний прСдставлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π° элСмСнта. Π’Π΅Π³ сСлСктора Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if β€” else if. Он провСряСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ условиС свСрху Π²Π½ΠΈΠ·. Когда условиС совпадаСт, ΠΎΠ½ΠΎ устанавливаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² элСмСнта.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Π΅Π³ элСмСнта являСтся Ρ‚Π΅Π³ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ напослСдок. Если ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ, Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Π³Π° элСмСнта Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

ΠœΡ‹ устанавливаСм ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Π°ΠΉΠ» сСлСктора с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования Π½Π° Π½Π°ΡˆΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² activity_main.xml ΠΊΠ°ΠΊ:

 
<Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ устанавливаСтся Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСлСктор btn_bg_selector_disabled. xml ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠ½ΠΎΠΏΠΊΠΈ, которая Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π°.

 


    
    
    

  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ сСлСктор Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ android: enabled ΠΊΠ°ΠΊ false.

 
<Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Π² зависимости ΠΎΡ‚ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Код сСлСктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ это, присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ btn_drawable_selector.xml

 


    
    
    
    


  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. БостояниС фокуса Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° смартфонах.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рисованныС изобраТСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ссли ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Π° / высота большС, Ρ‡Π΅ΠΌ Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ / высоту ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² соотвСтствии с нарисованным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ТСсткого кодирования Π² xml, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, доступныС для рисования, ΠΈ установив ΠΈΡ… Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Для удобства ΠΌΡ‹ сдСлали ΠΏΠ΅Ρ€Π²ΠΎΠ΅ здСсь:

 
<Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />
  

ImageButton β€” это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для рисования Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
ImageButton поставляСтся с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ android: scale для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния.

 

  

Π¦Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² зависимости ΠΎΡ‚ состояния Π² сСлСкторС.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ· btn_txt_selector.xml Π΄Π΅Π»Π°Π΅Ρ‚ это. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ android: color вмСсто android: drawable .

 


    
    
    

  

Кнопка Π² раскладкС:

 
<Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />

  

Π€ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Π³ xml .
Π­Ρ‚ΠΈ XML-Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования.
Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов .

Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна ​​на ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), ΠΎΠ²Π°Π» , ΠΊΠΎΠ»ΡŒΡ†ΠΎ , линия .

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° Ρ„ΠΎΡ€ΠΌΡ‹:

  • <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚> β€” Установка Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вмСстС с Ρ‚ΠΈΠΏΠΎΠΌ (радиус, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ°)
  • β€” Установка Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π°
  • β€” Установка сплошного Ρ†Π²Π΅Ρ‚Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅
  • β€” Установка радиуса

Android Round Corner Button

Код xml для btn_shape_round.xml ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

 


    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "1dp"
        android: color = "@ android: color / black" />
    

  

Как ΠΈ Π² сСлСкторах, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ это Π² Ρ‚Π΅Π³Π΅ android: background Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² нашСм xml-ΠΌΠ°ΠΊΠ΅Ρ‚Π΅.

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android с Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ btn_shape_gradient.xml, ΠΌΡ‹ установили Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ . ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ gradient_radius.

 



    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: endColor = "@ Ρ†Π²Π΅Ρ‚ / Π·Π΅Π»Π΅Π½Ρ‹ΠΉ"
        android: gradientRadius = "30dp"
        android: type = "Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ"
        android: startColor = "@ color / yellow" />

    

    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "4dp"
        android: color = "@ android: color / black" />


  

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android ΠΈ сСлСктор вмСстС

Π€Π°ΠΉΠ» btn_selector_shape.xml содСрТит сСлСктор. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

 

 android.com/apk/res/android">
    

        
            
            <ΡƒΠ³Π»Ρ‹ android: radius = "20dp" />
            
        

    

    
        
            
            
            
        

    

  

УстановитС это Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΈ Ρ„ΠΎΡ€ΠΌΠ° измСнится с ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° ΠΎΠ²Π°Π» ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ³ΠΎΠ», ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ 45, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой.

Установка Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ капсулы
btn_shape_capsule. xml β€” это мСсто, Π³Π΄Π΅ ΠΌΡ‹ устанавливаСм Ρ„ΠΎΡ€ΠΌΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов Π² Π²ΠΈΠ΄Π΅ капсулы.

 



    
        

            
            

        

    
    
        
            
            
        

    


  

Код для MainActivity.Класс java, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ всС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

 




    


        


        <Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />

        <Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />

        <Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />

        

        <Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    


    

        

        <Кнопка
            android: id = "@ + id / btnRoundShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_round"
            android: padding = "8dp"
            android: text = "ΠšΠ Π£Π“Π›ΠΠ― ЀОРМА" />

        <Кнопка
            android: id = "@ + id / btnBgShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: background = "@ drawable / btn_shape_gradient"
            android: padding = "8dp"
            android: text = "ЀОРМА Π‘ Π“Π ΠΠ”Π˜Π•ΠΠ’ΠžΠœ" />


        <Кнопка
            android: id = "@ + id / btnSelectorShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_selector_shape"
            android: padding = "8dp"
            android: text = "ЀОРМА Π’Π«Π‘ΠžΠ Π" />


        

        <Кнопка
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_capsule"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    



  

Π’Ρ‹Π²ΠΎΠ΄ прилоТСния Android Custom Button Design

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

На этом ΠΌΡ‹ подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΡƒΡ€ΠΎΠΊΠ° ΠΏΠΎ сСлСкторам ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ студии Android ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android, ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠšΡ€ΡƒΠ³Π»Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π¦Π²Π΅Ρ‚

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

Π”ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ повСдСния для Ρ€Π°Π·Π½Ρ‹Ρ… состояний ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояния Π²Ρ‹Π²ΠΎΠ΄Π°?

КаТдоС ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий прСдставлСния (ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ прСдставлСния) являСтся Ρ‚ΠΈΠΏΠΎΠΌ состояния:

  • state_pressed
  • state_selected
  • state_focused
  • state_enabled

state_focused β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅ курсор Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ . ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° эмуляторах.

state_selected ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π±ΠΎΡ€Π° прСдставлСния. НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с RadioButtons.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для ΠΊΠ½ΠΎΠΏΠΊΠΈ сущСствуСт всСго Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Ρ… состояния: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅, Π½Π°ΠΆΠ°Ρ‚ΠΎΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния сСлСктора ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рисования / Ρ†Π²Π΅Ρ‚ / Ρ„ΠΎΡ€ΠΌΡƒ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Android Studio.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· доступных для рисования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π¦Π²Π΅Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ colors.xml:

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» xml, созданный Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΏΠΊΠΈ для рисования.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π°.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» сСлСктора btn_bg_selector.xml содСрТит ΠΊΠΎΠ΄ для установки Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ„ΠΎΠ½Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ для Ρ€Π°Π·Π½Ρ‹Ρ… состояний.

 


    
    
    

  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· состояний прСдставлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π° элСмСнта. Π’Π΅Π³ сСлСктора Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if β€” else if. Он провСряСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ условиС свСрху Π²Π½ΠΈΠ·. Когда условиС совпадаСт, ΠΎΠ½ΠΎ устанавливаСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² элСмСнта.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Π΅Π³ элСмСнта являСтся Ρ‚Π΅Π³ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ напослСдок. Если ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ, Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Π³Π° элСмСнта Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

ΠœΡ‹ устанавливаСм ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Π°ΠΉΠ» сСлСктора с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования Π½Π° Π½Π°ΡˆΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² activity_main.xml ΠΊΠ°ΠΊ:

 
<Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ устанавливаСтся Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСлСктор btn_bg_selector_disabled. xml ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠ½ΠΎΠΏΠΊΠΈ, которая Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π°.

 


    
    
    

  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ сСлСктор Ρ€Π°Π±ΠΎΡ‚Π°Π», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ android: enabled ΠΊΠ°ΠΊ false.

 
<Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />
  

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран Π² зависимости ΠΎΡ‚ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Код сСлСктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ это, присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ btn_drawable_selector.xml

 


    
    
    
    


  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. БостояниС фокуса Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° смартфонах.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рисованныС изобраТСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ссли ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Π° / высота большС, Ρ‡Π΅ΠΌ Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ / высоту ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² соотвСтствии с нарисованным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ТСсткого кодирования Π² xml, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, доступныС для рисования, ΠΈ установив ΠΈΡ… Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Для удобства ΠΌΡ‹ сдСлали ΠΏΠ΅Ρ€Π²ΠΎΠ΅ здСсь:

 
<Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />
  

ImageButton β€” это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для рисования Π² качСствС Ρ„ΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
ImageButton поставляСтся с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ android: scale для измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния.

 

  

Π¦Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² зависимости ΠΎΡ‚ состояния Π² сСлСкторС.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ· btn_txt_selector.xml Π΄Π΅Π»Π°Π΅Ρ‚ это. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ android: color вмСсто android: drawable .

 


    
    
    

  

Кнопка Π² раскладкС:

 
<Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />

  

Π€ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ для нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Π³ xml .
Π­Ρ‚ΠΈ XML-Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рисования.
Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов .

Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСна ​​на ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), ΠΎΠ²Π°Π» , ΠΊΠΎΠ»ΡŒΡ†ΠΎ , линия .

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° Ρ„ΠΎΡ€ΠΌΡ‹:

  • <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚> β€” Установка Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вмСстС с Ρ‚ΠΈΠΏΠΎΠΌ (радиус, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠ°)
  • β€” Установка Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π°
  • β€” Установка сплошного Ρ†Π²Π΅Ρ‚Π° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅
  • β€” Установка радиуса

Android Round Corner Button

Код xml для btn_shape_round.xml ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

 


    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "1dp"
        android: color = "@ android: color / black" />
    

  

Как ΠΈ Π² сСлСкторах, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ это Π² Ρ‚Π΅Π³Π΅ android: background Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² нашСм xml-ΠΌΠ°ΠΊΠ΅Ρ‚Π΅.

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android с Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»Π΅ btn_shape_gradient.xml, ΠΌΡ‹ установили Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ . ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ gradient_radius.

 



    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: endColor = "@ Ρ†Π²Π΅Ρ‚ / Π·Π΅Π»Π΅Π½Ρ‹ΠΉ"
        android: gradientRadius = "30dp"
        android: type = "Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ"
        android: startColor = "@ color / yellow" />

    

    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "4dp"
        android: color = "@ android: color / black" />


  

Π€ΠΎΡ€ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ Android ΠΈ сСлСктор вмСстС

Π€Π°ΠΉΠ» btn_selector_shape.xml содСрТит сСлСктор. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

 

 android.com/apk/res/android">
    

        
            
            <ΡƒΠ³Π»Ρ‹ android: radius = "20dp" />
            
        

    

    
        
            
            
            
        

    

  

УстановитС это Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΈ Ρ„ΠΎΡ€ΠΌΠ° измСнится с ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° ΠΎΠ²Π°Π» ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ³ΠΎΠ», ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΉ 45, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сбой.

Установка Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ капсулы
btn_shape_capsule. xml β€” это мСсто, Π³Π΄Π΅ ΠΌΡ‹ устанавливаСм Ρ„ΠΎΡ€ΠΌΡƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСлСкторов Π² Π²ΠΈΠ΄Π΅ капсулы.

 



    
        

            
            

        

    
    
        
            
            
        

    


  

Код для MainActivity.Класс java, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ всС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

 




    


        


        <Кнопка
            android: id = "@ + id / btnBgSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector"
            android: padding = "8dp"
            android: text = "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ сСлСктор" />

        <Кнопка
            android: id = "@ + id / btnBgSelectorDisabled"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_bg_selector_disabled"
            android: enabled = "лоТь"
            android: padding = "8dp"
            android: text = "Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½" />

        <Кнопка
            android: id = "@ + id / btnDrawableSelector"
            android: layout_width = "48dp"
            android: layout_height = "48dp"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_drawable_selector"
            android: padding = "16dp" />

        

        <Кнопка
            android: id = "@ + id / btnTxtSelector"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    


    

        

        <Кнопка
            android: id = "@ + id / btnRoundShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_round"
            android: padding = "8dp"
            android: text = "ΠšΠ Π£Π“Π›ΠΠ― ЀОРМА" />

        <Кнопка
            android: id = "@ + id / btnBgShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: background = "@ drawable / btn_shape_gradient"
            android: padding = "8dp"
            android: text = "ЀОРМА Π‘ Π“Π ΠΠ”Π˜Π•ΠΠ’ΠžΠœ" />


        <Кнопка
            android: id = "@ + id / btnSelectorShape"
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_selector_shape"
            android: padding = "8dp"
            android: text = "ЀОРМА Π’Π«Π‘ΠžΠ Π" />


        

        <Кнопка
            android: layout_width = "wrap_content"
            android: layout_height = "wrap_content"
            android: layout_margin = "8dp"
            android: background = "@ drawable / btn_shape_capsule"
            android: padding = "8dp"
            android: text = "Π’Ρ‹Π±ΠΎΡ€ тСкста"
            android: textColor = "@ drawable / btn_txt_selector" />


    



  

Π’Ρ‹Π²ΠΎΠ΄ прилоТСния Android Custom Button Design

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

На этом ΠΌΡ‹ подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΡƒΡ€ΠΎΠΊΠ° ΠΏΠΎ сСлСкторам ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ студии Android ΠΏΠΎ ссылкС Π½ΠΈΠΆΠ΅.

Π‘Ρ‚ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Android

Π― добавлю свой ΠΎΡ‚Π²Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСдоставлСнныС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ v7 всС стили фактичСски ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, для стандартных ΠΊΠ½ΠΎΠΏΠΎΠΊ доступны всС эти стили:

  style = "@ style / Π’ΠΈΠ΄ΠΆΠ΅Ρ‚.AppCompat.Button "
style = "@ style / Widget.AppCompat.Button.Colored"
style = "@ style / Widget.AppCompat.Button.Borderless"
style = "@ style / Widget.AppCompat.Button.Borderless.Colored"
  

Widget.AppCompat.Button :

Widget.AppCompat.Button.Colored :

Widget.AppCompat.Button.Borderless

Widget.AppCompat.Button.Borderless.Colored :


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ

  <Кнопка
. ......
.......
.......
android: text = "Button" />
  

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚

Для всСго прилоТСния:

Π¦Π²Π΅Ρ‚ всСх элСмСнтов управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΌ дСйствиСм, Ρ„Π»Π°ΠΆΠΊΠΎΠ² ΠΈ Ρ‚. Π”.) УправляСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ colorAccent , ΠΊΠ°ΠΊ описано здСсь. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΡΡ‚ΠΈΠ»ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ свой собствСнный Ρ†Π²Π΅Ρ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΌΡ‹:

  
  

Для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ:

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, унаслСдовав ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… стилСй, описанных Π²Ρ‹ΡˆΠ΅. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°:

  
  

Π—Π°Ρ‚Π΅ΠΌ Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

  android: theme = "@ style / AppTheme. Кнопка"
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ эту строку Π² Ρ‚Π΅ΠΌΡƒ styles.xml:

   @ style / btn 
  

, Π³Π΄Π΅ @ style / btn β€” Ρ‚Π΅ΠΌΠ° вашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ. УстанавливаСт ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ для всСх ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Android с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стилСй XML

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ· Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°, написанного «Адрианом Π‘Π°Π½Ρ‚Π°Π»Π»ΠΎΠΉΒ» Π½Π° androidcookbook.ΠΊΠΎΠΌ: https://www.androidcookbook.com/Recipe.seam?recipeId=3307

1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ XML-Ρ„Π°ΠΉΠ», ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ состояния ΠΊΠ½ΠΎΠΏΠΎΠΊ

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ XML-Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«button.xmlΒ» для рисования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ:

  


    <элСмСнт
        android: state_enabled = "лоТь"
        android: drawable = "@ drawable / button_disabled" />
    <элСмСнт
        android: state_pressed = "ΠΏΡ€Π°Π²Π΄Π°"
        android: state_enabled = "ΠΏΡ€Π°Π²Π΄Π°"
        android: drawable = "@ drawable / button_pressed" />
    <элСмСнт
        android: state_focused = "true"
        android: state_enabled = "ΠΏΡ€Π°Π²Π΄Π°"
        android: drawable = "@ drawable / button_focused" />
    <элСмСнт
        android: state_enabled = "ΠΏΡ€Π°Π²Π΄Π°"
        android: drawable = "@ drawable / button_enabled" />

  

2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» XML, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ XML-Ρ„Π°ΠΉΠ»Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… состояний ΠΊΠ½ΠΎΠΏΠΊΠΈ. ВсС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ прослСдим ΠΈΠΌΠ΅Π½Π°, установлСнныС Π² Ρ„Π°ΠΉΠ»Π΅ button.xml.

button_enabled.xml:

  


    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: startColor = "# 00CCFF"
        android: centerColor = "# 0000CC"
        android: endColor = "# 00CCFF"
        android: angle = "90" />
    
    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "2dip"
        android: color = "# FFFFFF" />
    

  

button_focused.xml:

  

 android.com/apk/res/android" android: shape = "rectangle">
    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: startColor = "# F7D358"
        android: centerColor = "# DF7401"
        android: endColor = "# F7D358"
        android: angle = "90" />
    
    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "2dip"
        android: color = "# FFFFFF" />
    

  

button_pressed.xml:

  
    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: startColor = "# 0000CC"
        android: centerColor = "# 00CCFF"
        android: endColor = "# 0000CC"
        android: angle = "90" />
    
    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "2dip"
        android: color = "# FFFFFF" />
    

  

button_disabled. xml:

  


    <Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚
        android: startColor = "# F2F2F2"
        android: centerColor = "# A4A4A4"
        android: endColor = "# F2F2F2"
        android: angle = "90" />
    
    <ΠΈΠ½ΡΡƒΠ»ΡŒΡ‚
        android: width = "2dip"
        android: color = "# FFFFFF" />
    

  

3.Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» XML, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ создали Ρ„Π°ΠΉΠ»Ρ‹, упомянутыС Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΡ€Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ прилоТСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ XML-Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ styles.xml (Ссли Ρƒ вас Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ большС настраиваСмых стилСй, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ de values.

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ вашСго прилоТСния. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стиля ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ„ΠΎΠ½ вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна ​​со ссылкой Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ (button.xml) drawable, созданный Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС. Для обозначСния Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ содСрТимоС Ρ„Π°ΠΉΠ»Π° styles.xml:

  <рСсурсы>
    

  

4. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ XML с собствСнной Ρ‚Π΅ΠΌΠΎΠΉ прилоТСния

НаконСц, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ Android ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.Для этого Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ XML-Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ themes.xml (Ссли Ρƒ вас Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Android ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° themes.xml:

  <рСсурсы>
    

  

НадСюсь, Π²Π°ΠΌ, рСбята, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π·Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½Π΅, ΠΊΠΎΠ³Π΄Π° я искал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ.ΠΠ°ΡΠ»Π°ΠΆΠ΄Π°Ρ‚ΡŒΡΡ.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *