Android Custom View Instance
Last Update:2015-06-28
Source: Internet
Author: User
<span id="Label3"></p><p><p>android-related Custom View Basics can refer to Android view custom properties, This blog blogger and everyone to practice the Android custom view, we know that in the application of the most common is titlebar, they are consistent in form, generally, the left fallback button, the middle description text, the right function Button. So it is very suitable to extract as a custom view template, nonsense less, directly on the Dry.</p></p>Custom View-attrs<pre class="prettyprint"><code class="language-java hljs "><?xml version=<span class="hljs-string"><span class="hljs-string">"1.0"</span></span>encoding=<span class="hljs-string"><span class="hljs-string">"utf-8"</span></span>?><resources> <declare-styleable name=<span class="hljs-string"><span class="hljs-string">"titlebarcustom"</span></span>> <attr name=<span class="hljs-string"><span class="hljs-string">"center_text"</span></span>format=<span class="hljs-string"><span class="hljs-string">"string"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"center_size"</span></span>format=<span class="hljs-string"><span class="hljs-string">"dimension"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"center_color"</span></span>format=<span class="hljs-string"><span class="hljs-string">"color"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"center_ground"</span></span>format=<span class="hljs-string"><span class="hljs-string">"reference|color"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"left_text"</span></span>format=<span class="hljs-string"><span class="hljs-string">"string"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"left_size"</span></span>format=<span class="hljs-string"><span class="hljs-string">"dimension"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"left_color"</span></span>format=<span class="hljs-string"><span class="hljs-string">"color"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"left_ground"</span></span>format=<span class="hljs-string"><span class="hljs-string">"reference|color"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"right_text"</span></span>format=<span class="hljs-string"><span class="hljs-string">"string"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"right_size"</span></span>format=<span class="hljs-string"><span class="hljs-string">"dimension"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"right_color"</span></span>format=<span class="hljs-string"><span class="hljs-string">"color"</span></span>/> <attr name=<span class="hljs-string"><span class="hljs-string">"right_ground"</span></span>format=<span class="hljs-string"><span class="hljs-string">"reference|color"</span></span>/> </declare-styleable></resources></code></pre>Custom View class<pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.content.Context;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.content.res.TypedArray;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.graphics.drawable.Drawable;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.util.AttributeSet;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.view.View;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.widget.Button;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.widget.LinearLayout;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.widget.RelativeLayout;<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>android.widget.TextView;<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">class</span> <span class="hljs-title">titlebar</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">relativelayout</span>{</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>Button mrightbutton, mleftbutton;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>TextView mcentertextview;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>mcentercolor, mrightcolor, mleftcolor;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>drawable mcenterbackground, mrightbackground, mleftbackground;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>mcentersize, mrightsize, mleftsize;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>String mcentertext, mrighttext, mlefttext;<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Setontitlebarclicklistener</span></span>(ontitlebarclicklistener Montitlebarclicklistener) {<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>. Montitlebarclicklistener = montitlebarclicklistener; }<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>Ontitlebarclicklistener montitlebarclicklistener;<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-title"><span class="hljs-title">titlebar</span></span>(context context, AttributeSet Attrs) {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>(context, attrs);<span class="hljs-keyword"><span class="hljs-keyword">Final</span></span>TypedArray a = context.obtainstyledattributes (attrs, r.styleable.titlebarcustom);<span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>N = A.getindexcount ();<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">0</span></span>; I < N; I++) {<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>attr = A.getindex (i);<span class="hljs-keyword"><span class="hljs-keyword">Switch</span></span>(attr) {<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_center_color:mcentercolor = A.getcolor (attr,-<span class="hljs-number"><span class="hljs-number">1</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_center_size:mcentersize = A.getdimension (attr,<span class="hljs-number"><span class="hljs-number">0</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_center_text:mcentertext = a.getstring (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_center_ground:mcenterbackground = a.getdrawable (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_left_color:mleftcolor = A.getcolor (attr,-<span class="hljs-number"><span class="hljs-number">1</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_left_size:mleftsize = A.getdimension (attr,<span class="hljs-number"><span class="hljs-number">0</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_left_text:mlefttext = a.getstring (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_left_ground:mleftbackground = a.getdrawable (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_right_color:mrightcolor = A.getcolor (attr,-<span class="hljs-number"><span class="hljs-number">1</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_right_size:mrightsize = A.getdimension (attr,<span class="hljs-number"><span class="hljs-number">0</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_right_text:mrighttext = a.getstring (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>R.styleable.titlebarcustom_right_ground:mrightbackground = a.getdrawable (attr);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>; }} Mrightbutton =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Button (context); Mrightbutton.settext (mrighttext); Mrightbutton.settextsize (mrightsize); Mrightbutton.settextcolor (mrightcolor); Mrightbutton.setbackgrounddrawable (mrightbackground); Relativelayout.layoutparams Rightparams =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Relativelayout.layoutparams (layoutparams.wrap_content, LinearLayout.LayoutParams.WRAP_CONTENT); Rightparams.addrule (align_parent_right, TRUE); Rightparams.addrule (center_vertical, TRUE); Rightparams.setmargins (<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">Ten</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>); Mrightbutton.setlayoutparams (rightparams); AddView (mrightbutton); Mrightbutton.setonclicklistener (<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Onclicklistener () {<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">OnClick</span></span>(View V) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(montitlebarclicklistener! =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>) {montitlebarclicklistener.rightbuttonclick (); } } }); Mleftbutton =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Button (context); Mleftbutton.settext (mlefttext); Mleftbutton.settextsize (mleftsize); Mleftbutton.settextcolor (mleftcolor); Mleftbutton.setbackgrounddrawable (mleftbackground); Relativelayout.layoutparams Leftparams =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Relativelayout.layoutparams (layoutparams.wrap_content, LinearLayout.LayoutParams.WRAP_CONTENT); Leftparams.addrule (align_parent_left, TRUE); Leftparams.addrule (center_vertical, TRUE); Leftparams.setmargins (<span class="hljs-number"><span class="hljs-number">Ten</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>); Mleftbutton.setlayoutparams (leftparams); AddView (mleftbutton); Mleftbutton.setonclicklistener (<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Onclicklistener () {<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">OnClick</span></span>(View V) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(montitlebarclicklistener! =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>) {montitlebarclicklistener.leftbuttonclick (); } } }); Mcentertextview =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>TextView (context); Mcentertextview.settext (mcentertext); Mcentertextview.settextsize (mcentersize); Mcentertextview.settextcolor (mcentercolor); Mcentertextview.setbackgrounddrawable (mcenterbackground); Relativelayout.layoutparams Centerparams =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Relativelayout.layoutparams (layoutparams.wrap_content, LinearLayout.LayoutParams.WRAP_CONTENT); Centerparams.addrule (center_in_parent, TRUE); Leftparams.setmargins (<span class="hljs-number"><span class="hljs-number">Ten</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">Ten</span></span>,<span class="hljs-number"><span class="hljs-number">0</span></span>); Mcentertextview.setlayoutparams (centerparams); AddView (mcentertextview); A.recycle (); }<span class="hljs-annotation"><span class="hljs-annotation">@SuppressWarnings</span></span>(<span class="hljs-string"><span class="hljs-string">"unused"</span></span>)<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">setrightbuttonvisiablity</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>Isvisiable) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(mrightbutton = =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(isvisiable) {mrightbutton.setvisibility (view.visible); }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{mrightbutton.setvisibility (view.gone); } }<span class="hljs-annotation"><span class="hljs-annotation">@SuppressWarnings</span></span>(<span class="hljs-string"><span class="hljs-string">"unused"</span></span>)<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">setleftbuttonvisiablity</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>Isvisiable) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(mleftbutton = =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(isvisiable) {mleftbutton.setvisibility (view.visible); }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{mleftbutton.setvisibility (view.gone); } }<span class="hljs-annotation"><span class="hljs-annotation">@SuppressWarnings</span></span>(<span class="hljs-string"><span class="hljs-string">"unused"</span></span>)<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">setcentertextvisiablity</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>Isvisiable) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(mcentertextview = =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(isvisiable) {mcentertextview.setvisibility (view.visible); }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{mcentertextview.setvisibility (view.gone); } }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">interface</span> <span class="hljs-title">ontitlebarclicklistener</span> {</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span>Leftbuttonclick ();<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>Rightbuttonclick (); }}</code></pre>Using a custom view<p><p>first, define in the UI</p></p><pre class="prettyprint"><code class="language-xml hljs "><span class="hljs-pi"><span class="hljs-pi"><?xml version= "1.0" encoding= "utf-8"?></span></span><span class="hljs-tag"><span class="hljs-tag"><<span class="hljs-title">linearlayout</span> <span class="hljs-attribute">xmlns:android</span>=<span class="hljs-value">"http://schemas.android.com/apk/res/android"</span> <span class="hljs-attribute"> Xmlns:linroid</span>= "<span class="hljs-value">http://schemas.android.com/apk/res-auto"</span><span class="hljs-attribute">android:orientation</span>=<span class="hljs-value">" Vertical "</span><span class="hljs-attribute">android:layout_width</span>="<span class="hljs-value">match_parent "</span><span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">" Match_parent "</span>> </span></span> <span class="hljs-tag"><<span class="hljs-title"><span class="hljs-title">Studio.neulion.com.tasktest.TitleBar</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Android:layout_width</span></span>=<span class="hljs-value"><span class="hljs-value">"match_parent"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Android:layout_height</span></span>=<span class="hljs-value"><span class="hljs-value">"60dp"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:center_color</span></span>=<span class="hljs-value"><span class="hljs-value">"#FF0000"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:center_text</span></span>=<span class="hljs-value"><span class="hljs-value">"this is Title"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">linroid:center_size</span></span>=<span class="hljs-value"><span class="hljs-value">"12dp"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:center_ground</span></span>=<span class="hljs-value"><span class="hljs-value">"#00FF00"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:right_color</span></span>=<span class="hljs-value"><span class="hljs-value">"#00FF00"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:right_text</span></span>=<span class="hljs-value"><span class="hljs-value">"click"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">linroid:right_size</span></span>=<span class="hljs-value"><span class="hljs-value">"10dp"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:right_ground</span></span>=<span class="hljs-value"><span class="hljs-value">"#0000FF"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:left_color</span></span>=<span class="hljs-value"><span class="hljs-value">"#0000FF"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:left_text</span></span>=<span class="hljs-value"><span class="hljs-value">"back"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">linroid:left_size</span></span>=<span class="hljs-value"><span class="hljs-value">"10dp"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Linroid:left_ground</span></span>=<span class="hljs-value"><span class="hljs-value">"#FF0000"</span></span> <span class="hljs-attribute"><span class="hljs-attribute">Android:id</span></span>=<span class="hljs-value"><span class="hljs-value">"@+id/title_bar"</span></span>/></span><span class="hljs-tag"><span class="hljs-tag"></<span class="hljs-title">linearlayout</span>></span></span></code></pre><p><p>And then use it in your Code.</p></p><pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">class</span> <span class="hljs-title">sixactivity</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Activity</span>{</span></span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onCreate</span></span>(Bundle Savedinstancestate) {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. onCreate (savedinstancestate); Setcontentview (r.layout.activity_title); Initview (); }<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Initview</span></span>() {<span class="hljs-keyword"><span class="hljs-keyword">Final</span></span>TitleBar titlebar = (titlebar) Findviewbyid (r.id.title_bar);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(titlebar! =<span class="hljs-keyword"><span class="hljs-keyword">NULL</span></span>) {titlebar.setontitlebarclicklistener (<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Ontitlebarclicklistener () {<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Leftbuttonclick</span></span>() {toast.maketext (sixactivity.<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>,<span class="hljs-string"><span class="hljs-string">"left button click!"</span></span>, toast.length_long). show (); }<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Rightbuttonclick</span></span>() {toast.maketext (sixactivity.<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>,<span class="hljs-string"><span class="hljs-string">"right button click!"</span></span>, toast.length_long). show (); } }); } }}</code></pre><p><p>This completes the entire titlebar custom view, although very coarse, but the basic model has come out, this is a typical combination of custom view example, other custom view follow-up Update.</p></p> <p><p>Android Custom View Instance</p></p></span>