<? XML version = "1.0" encoding = "UTF-8"?> <Br/> <relativelayout <br/> xmlns: Android = "http://schemas.android.com/apk/res/android" <br/> Android: Id = "@ + ID/root" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> <linearlayout <br/> Android: orientation = "vertical" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> Android: background = "@ drawable/default_bg" <br/> <linearlayout <br/> Android: Orientation = "horizontal" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> Android: layout_weight = "6.0" <br/> <relativelayout <br/> Android: Id = "@ + ID/layout1" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "wrap_content" <br/> Android: layout_weight = "1.0" <br/> Android: layout_gravity = "center_vertical" <br/> <imageview <br/> Android: Id = "@ + ID/tab1" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: src = "@ drawable/tab1" <br/> Android: layout_centerinparent = "true" <br/> </relativelayout> <br/> <relativelayout <br/> Android: id = "@ + ID/layout2" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "wrap_content" <br/> Android: layout_weight = "1.0" <br/> Android: layout_gravity = "center_vertical" <br/> <imageview <br/> Android: id = "@ + ID/tab2" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: src = "@ drawable/tab2" <br/> Android: layout_centerinparent = "true" <br/> </relativelayout> <br/> <relativelayout <br/> Android: id = "@ + ID/layout3" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "wrap_content" <br/> Android: layout_weight = "1.0" <br/> Android: layout_gravity = "center_vertical" <br/> <imageview <br/> Android: id = "@ + ID/tab3" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: src = "@ drawable/tab3" <br/> Android: layout_centerinparent = "true" <br/> </relativelayout> <br/> </linearlayout> <br/> <relativelayout <br/> Android: orientation = "horizontal" <br/> Android: layout_width = "fill_parent" <br/> Android: layout_height = "fill_parent" <br/> Android: layout_weight = "1.0" <br/> Android: Background = "# ffffff" <br/> Android: gravity = "center" <br/> <textview <br/> Android: Id = "@ + ID/text" <br/> Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" <br/> Android: text = "" <br/> Android: textcolor = "# 000fff" <br/> Android: textsize = "20dip" <br/> Android: layout_centerinparent = "true" <br/> Android: layout_marginleft = "15dip" <br/> </relativelayout> <br/> </linearlayout> <br/> </relativelayout>
<Br/> Import android. app. activity; <br/> Import android. OS. bundle; <br/> Import android. view. view; <br/> Import android. view. view. onclicklistener; <br/> Import android. view. animation. translateanimation; <br/> Import android. widget. imageview; <br/> Import android. widget. relativelayout; <br/> Import android. widget. relativelayout. layoutparams; <br/> Import android. widget. textview; </P> <p> public class qqtabacti Extends extends activity {<br/>/** called when the activity is first created. */</P> <p> private relativelayout layout; </P> <p> private relativelayout layout1; <br/> private relativelayout layout2; <br/> private relativelayout layout3; </P> <p> private textview text; <br/> private imageview tab1; <br/> private imageview tab2; <br/> private imageview tab3; <br/> private imageview first; <br/> private int current = 1; // The first parameter is selected by default. This parameter value can be dynamically changed <br/> @ override <br/> Public void oncreate (bundle savedinstancestate) {<br/> super. oncreate (savedinstancestate); <br/> setcontentview (R. layout. main); <br/> initui (); <br/>}< br/> private void initui () {<br/> layout = (relativelayout) findviewbyid (R. id. root); <br/> layout1 = (relativelayout) findviewbyid (R. id. layout1); <br/> layout2 = (relativelayout) findviewbyid (R. ID. Layout2); <br/> layout3 = (relativelayout) findviewbyid (R. id. layout3); <br/> tab1 = (imageview) findviewbyid (R. id. tab1); <br/> tab2 = (imageview) findviewbyid (R. id. tab2); <br/> tab3 = (imageview) findviewbyid (R. id. tab3); <br/> text = (textview) findviewbyid (R. id. text); <br/> tab1.setonclicklistener (listener); <br/> tab2.setonclicklistener (listener); <br/> tab3.setonclicklistener (listener); <br/> Relativelayout. layoutparams RL = new relativelayout. layoutparams (layoutparams. wrap_content, layoutparams. wrap_content); <br/> RL. addrule (relativelayout. center_in_parent, relativelayout. true); <br/> first = new imageview (this); <br/> first. settag ("first"); <br/> first. setimageresource (R. drawable. topbar_select); <br/> switch (current) {<br/> case 1: <br/> layout1.addview (first, rl); <br/> current = R. id. Tab1; <br/> text. settext ("recent contact"); <br/> break; <br/> case 2: <br/> layout2.addview (first, rl); <br/> current = R. id. tab2; <br/> text. settext ("My contacts"); <br/> break; <br/> case 3: <br/> layout3.addview (first, rl ); <br/> current = R. id. tab3; <br/> text. settext ("My QQ group contact"); <br/> break; </P> <p> default: <br/> break; <br/>}< br/> private Boolean isadd = false; // whether top_select has been added <br/> private int select_width; // Top_select_width <br/> private int select_height; // top_select_height <br/> private int firstleft; // left margin after the first addition ***** <br/> private int startleft; // left margin after the first addition <br/> // Add a view, remove a view <br/> private void Replace () {<br/> switch (current) {<br/> case R. id. tab1: <br/> changetop (layout1); <br/> break; <br/> case R. id. tab2: <br/> changetop (layout2); <br/> break; <br/> case R. id. tab3: <br/> changetop (layou T3); <br/> break; <br/> default: <br/> break; <br/>}< br/> private void changetop (relativelayout) {<br/> imageview old = (imageview) relativelayout. findviewwithtag ("first"); <br/> select_width = old. getwidth (); <br/> select_height = old. getheight (); <br/> relativelayout. layoutparams RL = new relativelayout. layoutparams (select_width, select_height); <br/> RL. leftmargin = old. getl EFT () + (relativelayout) Old. getparent ()). getleft (); <br/> RL. topmargin = old. gettop () + (relativelayout) Old. getparent ()). gettop (); <br/> // get start position <br/> firstleft = old. getleft () + (relativelayout) Old. getparent ()). getleft (); <br/> imageview IV = new imageview (this); <br/> IV. settag ("move"); <br/> IV. setimageresource (R. drawable. topbar_select); <br/> layout. addview (IV, rl); <br/> relativelayout. removevi EW (old); <br/>}< br/> private onclicklistener listener = new onclicklistener () {</P> <p> @ override <br/> Public void onclick (view V) {<br/> // todo auto-generated method stub <br/> If (! Isadd) {<br/> Replace (); // use remove old for the first time to add a new top_select as used by relativelayout <br/> isadd = true; <br/>}< br/> imageview top_select = (imageview) layout. findviewwithtag ("move"); <br/> int tableft = 0; <br/> int endleft = 0; <br/> Boolean run = false; <br/> switch (v. GETID () {<br/> case R. id. tab1: <br/> If (current! = R. id. tab1) <br/> {// center location <br/> tableft = (relativelayout) tab1.getparent ()). getleft () + tab1.getleft () + tab1.getwidth ()/2; <br/> // final position <br/> endleft = tabLeft-select_width/2; <br/> current = R. id. tab1; <br/> run = true; <br/> text. settext ("recent contact"); <br/>}< br/> break; <br/> case R. id. tab2: <br/> If (current! = R. id. tab2) {<br/> // central location <br/> tableft = (relativelayout) tab2.getparent ()). getleft () + tab2.getleft () + tab2.getwidth ()/2; <br/> // final position <br/> endleft = tabLeft-select_width/2; <br/> current = R. id. tab2; <br/> run = true; <br/> text. settext ("My contacts"); <br/>}< br/> break; <br/> case R. id. tab3: <br/> If (current! = R. id. tab3) {<br/> // central location <br/> tableft = (relativelayout) tab3.getparent ()). getleft () + tab3.getleft () + tab3.getwidth ()/2; <br/> // final position <br/> endleft = tabLeft-select_width/2; <br/> current = R. id. tab3; <br/> run = true; <br/> text. settext ("My QQ group contact"); <br/>}< br/> break; <br/> default: <br/> break; <br/>}< br/> If (run) {<br/> translateanimation animation = new translateanimation (startleft, endleft-firstleft, 0, 0 ); // move horizontally <br/> startleft = endleft-firstleft; // reset the starting position <br/> animation. setduration (400); <br/> animation. setfillafter (true); <br/> top_select.bringtofront (); <br/> top_select.startanimation (animation); <br/>}< br/> }; <br/>}