рдорд╛рдирдХ
рдкреНрд░реЛрдЧрд░рдмрд╛рд░ , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓рдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрдХреНрд╕рд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рддрддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдореВрд▓реНрдп рдХреЛ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рдПрдХ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЯреЗрдХреНрд╕реНрдЯ () рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдПрдХ рдорд╛рдирдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрддрд╛ рдмрд╛рд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, рдЬрд╣рд╛рдВ рдкреЗрдЬ рд▓реЛрдбрд┐рдВрдЧ рдХреА рдкреНрд░рдЧрддрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП, URI рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреА рдкрдЯреНрдЯреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд - рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред
рддреЛ, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрдерди: рдПрдХ рддрддреНрд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рд╢реИрд▓реА (рд╢реИрд▓реА = "@ android: style / Widget.ProgressBar.Hor рдХреНрд╖реИрддрд┐рдЬ") рдХреЗ рд╕рд╛рде рдПрдХ ProgressBar рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╕реНрд╡рдпрдВ рдХреЗ рдКрдкрд░ рдкрд╛рда рдХреЛ рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд░рдЦрддрд╛ рд╣реИред
рд▓рдШреБ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛:
- рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдПрдмреЗрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрдирд╛рдПрдВред
- рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ TextView рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рд▓рд┐рдЦрддрд╛ рд╣реИред
- рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЖрдЗрдЯрдо рдХреЛ рдПрдореНрдмреЗрдб рдХрд░реЗрдВред
- рдХрд┐рд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдПрдБ
рд╣рдореЗрдВ рдПрдХ рджреЛ-рдкрд░рдд рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рддрддреНрд╡ рдХреА рдЧреНрд░рд╛рдлрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
Res / drawable рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ background.xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/bar_background"> <shape> <corners android:radius="2dp" /> <gradient android:startColor="#666666" android:centerColor="#111111" android:endColor="#555555" android:centerY="0.75" android:angle="270" /> </shape> </item> <item android:id="@+id/bar_value"> <clip> <shape> <corners android:radius="2dp" /> <gradient android:startColor="#cfb73f" android:centerColor="#635a30" android:endColor="#918030" android:centerY="0.75" android:angle="270" /> </shape> </clip> </item> </layer-list>
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рджреЛ рдкрд░рддреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдорд╛рдиреЗ рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдкреИрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдореВрд▓реНрдп рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдЧрд╛ред рджреЛрдиреЛрдВ рдПрдХ рдЧреНрд░реЗ рдФрд░ рдкреАрд▓реЗ рд░рдВрдЧ рдХреА рдврд╛рд▓ рдХреЗ рд╕рд╛рде рднрд░реЗ рд╣реБрдП рдЖрдпрддрд╛рдХрд╛рд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рджреВрд╕рд░реА рдЖрдХреГрддрд┐ рдХреНрд▓рд┐рдк рдЯреИрдЧ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рднрд╛рдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рдг
рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреА рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо ProgressBar рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди TextView рд╡рд░реНрдЧред рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдИ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд▓реЗрдмрд▓ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
public class AdvancedTextView extends TextView {
SetValue () рд╡рд┐рдзрд┐ рдорд╛рдирдХ рд╕реЗрдЯрдЯреЗрдХреНрд╕реНрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЗ рд▓реЗрдмрд▓ рдкрд╛рда рдХреЛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ рдХреЛ рдирдП рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, setLvel () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ 0 рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрдХреЗрд▓ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ) рд╕реЗ 10000 (рд╕реНрдХреЗрд▓ 100% рдХрдВрдЯреЗрдирд░ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ)ред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, setMaxValue () рд╡рд┐рдзрд┐ рднреА рд╡рд░реНрдЧ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреВрд░реНрдг рдкреИрдорд╛рдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдПрдбрд┐рдЯрд┐рдВрдЧ рд▓реЗрдЖрдЙрдЯ
рд░реЗрд╕ / рд▓реЗрдЖрдЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, main.xml рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="wrap_content"> <ru.habrahabr.widgets.AdvancedTextView android:id="@+id/advanced_text_view" android:layout_width="160dp" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/background" android:layout_margin="4dp" /> </LinearLayout>
рдпрд╣рд╛рдВ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рддрддреНрд╡ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣рдо рдирд╛рдо рдХреА рдкреГрд╖реНрдарднреВрдорд┐ (рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд) рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдбреНрд░рд╛рдмрд▓ рд╣реЛрдЧреА, рдареАрдХ рд╣реИ, рдЙрд╕ рдЖрдИрдбреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдЦреЛрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрди рдирд╛рдореЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдЬрд┐рдирдореЗрдВ AdvancedTextView рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ ru.habrahabr.widgets рд╣реИред
рдХрд┐рд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рддрддреНрд╡ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЙрдкрдпреЛрдЧ рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИ:
AdvancedTextView advancedTextView = (AdvancedTextView) findViewById(R.id.advanced_text_view); advancedTextView.setValue(42);
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рддрддреНрд╡ рд╣реЛрдЧрд╛:

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