Android рдпреВрдЖрдИ рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдмрдЯрди рдмрдирд╛рдирд╛

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реНрдЯрд╛рдЗрд▓ рдмрдЯрди рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЕрдкрдиреА рд╢реИрд▓реА рдмрдирд╛рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╢реИрд▓реА рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдореВрдирд╛ рдХреЛрдб github рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рддреЛ рдЖрдк рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


Android SDK рдЕрдкрдиреА рд╢реИрд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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



рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред

<Button android:id="@+id/button_primary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/default_margin" android:background="@drawable/button_primary_selector" android:text="Button" android:textColor="@android:color/white" /> 


Res / drawable рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдмрдЯрди_primary_selector.xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/button_primary_selected"/> <item android:state_pressed="true" android:drawable="@drawable/button_primary_pressed"/> <item android:state_focused="true" android:drawable="@drawable/button_primary_focused"/> <item android:drawable="@drawable/button_primary_normal"/> </selector> 


рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрдЯрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реЗрдбреНрдпреВрд▓ рдХрд╛ рдорд╛рд░реНрдЧ рдмрдирд╛рддреА рд╣реИред
рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЬреЛрдбрд╝реЗрдВред рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдмрдЯрди рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИред

рдиреМ-рдкреИрдЪ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рддрддреНрд╡реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрдЯрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рджрдмрд╛рдП рдЧрдП рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдХрдо рд╕реЗ рдХрдо рджреЛ рдкреАрдПрдирдЬреА рдлрд╛рдЗрд▓реЗрдВ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рд╛рдердорд┐рдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд░рд╛рдЬреНрдп рдЧреНрд░рд╛рдл

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


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

рдЖрдХрд╛рд░ рдХреА рдУрд░ рдЦреАрдВрдЪрдиреЗ рдпреЛрдЧреНрдп

рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк XML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <gradient android:startColor="#002A80" android:endColor="#04C" android:angle="270" /> <stroke android:width="1dp" android:color="#04C" /> <corners android:radius="4dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#006DCC" android:endColor="#04C" android:angle="270" /> <stroke android:width="1dp" android:color="#04C" /> <corners android:radius="4dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

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

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕реА рдЧреБрдг рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЕрдиреНрдп рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдпрдирд┐рдд рдХреЗ рд▓рд┐рдП
 ... android:state_selected="true" ... 

рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд╛рдЬреНрдп рд╡рд┐рд╡рд░рдг рднреА рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрдмрд╛рдП рдЧрдП рдмрдЯрди рдХреЛ рдмрдЯрди_primary_pressed.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:startColor="#04C" android:endColor="#006DCC" android:angle="270" /> <stroke android:width="1dp" android:color="#04C" /> <corners android:radius="4dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

рдЪрдпрдирдХрд░реНрддрд╛ рдореЗрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди (.xml) рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

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

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list> 


рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ


StateList рдФрд░ Shape Drawable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрдЯрди рд╢реИрд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ android-custom-style-ui рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles