рд╡рд┐рд╖рдпреЛрдВ, рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп


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

рд╕рд╛рдордЧреНрд░реА


рдкрд░рд┐рдЪрдп
RectView рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
RectView рдХреЗ рд▓рд┐рдП рд╢реИрд▓реА
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓реА
RectView рд╕реНрдЯрд╛рдЗрд▓ рдереАрдо рд╡рд┐рд╢реЗрд╖рддрд╛
рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрддрд░ рдереАрдо
рд╡рд┐рд╖рдп рджреЗрдЦреЗрдВ
рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд╖рдп
рдкрд░рд┐рдгрд╛рдо

рдкрд░рд┐рдЪрдп


Android рдореЗрдВ рд╢реИрд▓рд┐рдпрд╛рдБ рдФрд░ рд╡рд┐рд╖рдп-рд╡рд╕реНрддреБ рдРрд╕реЗ рддрдВрддреНрд░ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ UI рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рд╡рд░рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдВрдЧ, рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░, рдЖрджрд┐) рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрд╕реНрдЯрдо рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рд╣рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдХрд╕реНрдЯрдо рджреГрд╢реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рджреГрд╢реНрдп рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╡рд╛рдВрдЫрд┐рдд рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрдд рдЦреАрдВрдЪреЗрдЧрд╛ред

class RectView @JvmOverloads constructor( context: Context, attrSet: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrSet, defStyleAttr) { private val paint = Paint().apply { color = Color.BLUE } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), paint) } } 



RectView рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ


рдЕрдм рдореИрдВ рд▓реЗрдЖрдЙрдЯ рдЖрдпрдд рдХреЗ рд░рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ attrs.xml рдЬреЛрдбрд╝реЗрдВ

 <resources> <attr name="rectColor" format="color"/> </resources> 

рдЕрдм рдХреЛрдб рдореЗрдВ рд╣рдо R.attr.rectColor рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реНрдХреНрд░реАрди рдХреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: rectColor рд╡рд┐рд╢реЗрд╖рддрд╛ред

 <org.berendeev.themes.RectView android:id="@+id/text2" android:layout_width="100dp" app:rectColor="@color/colorPrimary" android:layout_height="100dp"/> 

рд▓реЗрдХрд┐рди рд░реЗрдХреНрдЯрд╡реНрдпреВ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЖрдпрдд рдХреЗ рд▓рд┐рдП рд░рдВрдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП RectView рдХреЛ rectColor рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдПрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЬреЛрдбрд╝реЗрдВ

 <resources> <attr name="rectColor" format="color"/> <declare-styleable name="RectView"> <attr name="rectColor"/> </declare-styleable> </resources> 

рдХрдХреНрд╖рд╛ R рдореЗрдВ, 2 рдирдП рдХреНрд╖реЗрддреНрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдП:
R.styleable.RectView рдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдПрдХ рддрддреНрд╡ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ R.attr.rectColor
R.styleable.RectView_rectColor R.styleable.RectView рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЖрдИрдбреА рдЗрдВрдбреЗрдХреНрд╕ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП R.styleable.RectView [R.styleable.RectView_rectColor]

рдФрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП rectColor рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВред

 init { val typedArray = context.theme.obtainStyledAttributes( attrSet, R.styleable.RectView, 0, 0 ) try { paint.color = typedArray.getColor( R.styleable.RectView_rectColor, Color.BLUE ) } finally { typedArray.recycle() } } 

рдкреВрд░реНрдг рдХреЛрдб
 class RectView @JvmOverloads constructor( context: Context, attrSet: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrSet, defStyleAttr) { private val paint = Paint().apply { color = Color.BLUE } init { val typedArray = context.theme.obtainStyledAttributes( attrSet, R.styleable.RectView, 0, 0 ) try { paint.color = typedArray.getColor( R.styleable.RectView_rectColor, Color.BLUE ) } finally { typedArray.recycle() } } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) canvas.drawRect(0f, 0f, width.toFloat(), height.toFloat(), paint) } } 


рдЕрдм рд╣рдо рд▓реЗрдЖрдЙрдЯ рд╕реЗ рдЖрдпрдд рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:



RectView рдХреЗ рд▓рд┐рдП рд╢реИрд▓реА


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

рд╢реИрд▓реА рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдпред

 <style name="DefaultRectViewStyle"> <item name="rectColor">@color/colorAccent</item> </style> 

рдЕрдм рд╣рдо рд╢реИрд▓реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдПрдХ рд╣реА рд░реВрдк рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреГрд╢реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

 <org.berendeev.themes.RectView android:id="@+id/text2" android:layout_width="100dp" style="@style/DefaultRectViewStyle" android:layout_height="100dp"/> 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓реА


рдЕрдм рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рджреГрд╢реНрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╢реИрд▓реА рдХреЗ рд╣реЛрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо getStyledAttributes рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ:

 context.theme.obtainStyledAttributes( attrSet, R.styleable.RectView, 0, R.style.DefaultRectViewStyle ) 

рдЗрддрдирд╛ рд╣реА рдХрд╛рдлреА рд╣реИред рдЕрдм рд╣рдо рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдЬреЛ рднреА RectView рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯрд╛рдЗрд▓ DefaultRectViewStyle рд╣реЛрдЧрд╛ред

RectView рд╕реНрдЯрд╛рдЗрд▓ рдереАрдо рд╡рд┐рд╢реЗрд╖рддрд╛


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

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

 <attr name="rectViewStyle" format="reference"/> 

рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрдпрдд рд╕рд┐рдЦрд╛рдПрдВред рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ R.attr.rectViewStyle рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ GetStyledAttributes рд╡рд┐рдзрд┐ред

 context.theme.obtainStyledAttributes( attrSet, R.styleable.RectView, R.attr.rectViewStyle, R.style.DefaultRectViewStyle ) 

рдЕрдм, рдпрджрд┐ рдХреЛрдИ рдирд╛рдо rectViewStyle рдФрд░ рдкреНрд░рдХрд╛рд░ рд╢реИрд▓реА рдХрд╛ рдорд╛рди рд╡рд┐рд╖рдп рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рддреЛ рдпрд╣ рд╢реИрд▓реА рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рд╕рднреА RectView рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧреАред

рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрддрд░ рдереАрдо


рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рд╖рдп рдореЗрдВ rectViewStyle рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="rectViewStyle">@style/LocalRectViewStyle</item> </style> </resources> 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рд╡рд┐рд╖рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.berendeev.themes"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> 

рд╕рднреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ AppTheme рдереАрдо рдкрд░ рд╕реЗрдЯ рдХреА рдЬрд╛рдПрдЧреАред рд╣рдордиреЗ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП RectView рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 <activity android:name=".MainActivity" android:theme="@style/MyTheme"> 

рдпрд╣рд╛рдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рдЬрд┐рд╕ рдереАрдо рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ рдорд╛рдирдХ рдереАрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Theme.AppCompatред рдЕрдиреНрдпрдерд╛, рд╣рдо рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
java.lang.IllegalStateException: рдЖрдкрдХреЛ рдЗрд╕ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ Theme.AppCompat рд╡рд┐рд╖рдп (рдпрд╛ рд╡рдВрд╢рдЬ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд┐рд╖рдп рджреЗрдЦреЗрдВ


рджреГрд╢реНрдп рд╕реНрддрд░ рдкрд░, рд╣рдо рд╡рд┐рд╖рдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдиреЛрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рд╖рдп рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрднрд┐рднрд╛рд╡рдХ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо ThemeOverlay.AppCompat рдУрд╡рд░рд▓реЗ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╣рдо рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП MyOverlay рд╡рд┐рд╖рдп рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЗрд╕рдХреЗ рд╕рднреА рд╡рдВрд╢рдЬ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:theme="@style/MyOverlay"> <org.berendeev.themes.RectView android:layout_width="100dp" android:layout_height="100dp"/> </LinearLayout> 

рд╡рд┐рд╖рдп рдореЗрдВ, рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд┐рд╖рдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 <style name="MyOverlay"> <item name="rectViewStyle">@style/LocalRectViewStyle</item> </style> 

рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ



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

рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд╖рдп


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

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="?attr/colorPrimary"/> </shape> 

рдЕрдм рдЖрдпрдд рдХрд╛ рд░рдВрдЧ рд╡рд┐рд╖рдп рдореЗрдВ colorPrimary рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╖рдп рдореЗрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдкрд░рд┐рдгрд╛рдо


  • рд╕рдВрд╕рд╛рдзрди рд╕реНрддрд░ рдкрд░ рд╡рд┐рд╖рдп рдФрд░ рд╢реИрд▓реА рдПрдХ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
  • рдПрдХ рдереАрдо рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд░реНрде рдпрд╛ рд╢реИрд▓реАред
  • рд╢реИрд▓реА рдХреЛ рджреГрд╢реНрдп рд╕реНрддрд░ рдкрд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред LayoutInflater рд╢реИрд▓реА рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡реНрдпреВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
  • рдереАрдореНрд╕ рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдкреВрд░реНрдг рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рддрддреНрд╡ (рдФрд░ рд╡рдВрд╢) рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рдорд╛рди рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  • рди рдХреЗрд╡рд▓ рджреГрд╢реНрдп рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рднреА рдереАрдо рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рд▓реЗрдЦ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдореИрдВ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд▓реЗрдЦ рдпрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦреВрдВрдЧрд╛ред

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


All Articles