android-仿QQtab

來源:互聯網
上載者:User

<?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 />><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 />><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 />><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 />><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 />/><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 />><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 />/><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 />><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 />/><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 />><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 />/><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 QQTabActivity 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; // 預設選中第一個,可以動態改變此參數值<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("最近連絡人");<br />break;<br />case 2:<br />layout2.addView(first,rl);<br />current = R.id.tab2;<br />text.setText("我的連絡人");<br />break;<br />case 3:<br />layout3.addView(first,rl);<br />current = R.id.tab3;<br />text.setText("我的QQ群連絡人");<br />break;</p><p>default:<br />break;<br />}<br /> }<br /> private boolean isAdd = false;// 是否添加過 top_select<br /> private int select_width; // top_select_width<br /> private int select_height; // top_select_height<br /> private int firstLeft; // 第一次添加後的左邊距*****<br /> private int startLeft; // 起始左邊距<br /> // 添加一個view,移除一個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(layout3);<br />break;<br />default:<br />break;<br />}<br /> }<br /> private void changeTop(RelativeLayout 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.getLeft()+((RelativeLayout)old.getParent()).getLeft();<br /> rl.topMargin = old.getTop()+((RelativeLayout)old.getParent()).getTop();<br /> // 擷取起始位置<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.removeView(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();// // 初次使用移除old 添加新的top_select為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 />{// 中心位置<br />tabLeft = ((RelativeLayout)tab1.getParent()).getLeft()+tab1.getLeft()+tab1.getWidth()/2;<br />// 最終位置<br />endLeft = tabLeft-select_width/2;<br />current = R.id.tab1;<br />run = true;<br />text.setText("最近連絡人");<br />}<br />break;<br />case R.id.tab2:<br />if(current!=R.id.tab2){<br />// 中心位置<br />tabLeft = ((RelativeLayout)tab2.getParent()).getLeft()+tab2.getLeft()+tab2.getWidth()/2;<br />// 最終位置<br />endLeft = tabLeft-select_width/2;<br />current = R.id.tab2;<br />run = true;<br />text.setText("我的連絡人");<br />}<br />break;<br />case R.id.tab3:<br />if(current!=R.id.tab3){<br />// 中心位置<br />tabLeft = ((RelativeLayout)tab3.getParent()).getLeft()+tab3.getLeft()+tab3.getWidth()/2;<br />// 最終位置<br />endLeft = tabLeft-select_width/2;<br />current = R.id.tab3;<br />run = true;<br />text.setText("我的QQ群連絡人");<br />}<br />break;<br />default:<br />break;<br />}<br />if(run){<br />TranslateAnimation animation = new TranslateAnimation(startLeft, endLeft-firstLeft, 0, 0);//水平移動<br />startLeft = endLeft -firstLeft;//// 重新設定起始位置<br />animation.setDuration(400);<br />animation.setFillAfter(true);<br />top_select.bringToFront();<br />top_select.startAnimation(animation);<br />}<br />}<br />};<br />}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.