9 Main.xml <?xml <LinearLayout <TabHost <LinearLayout <FrameLayout </FrameLayout> <TabWidget <RelativeLayout <RadioGroup <RadioButton <RadioButton <RadioButton <RadioButton <RadioButton </RadioGroup> </RelativeLayout> </LinearLayout> </TabHost> </LinearLayout> package com.and.netease; import com.and.netease.utils.MoveBg; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TabHost; public class MainActivity extends TabActivity { TabHost tabHost; TabHost.TabSpec tabSpec; RadioGroup radioGroup; RelativeLayout b OTTom_layout; ImageView img; int startLeft; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bottom_layout = (RelativeLayout) findViewById(R.id.layout_bottom); tabHost = getTabHost(); tabHost.addTab(tabHost.newTabSpec("news").setIndicator("News").setContent(new Intent(this, TabNewsActivity.class))); tabHost.addTab(tabHost.newTabSpec("topic").setIndicator("Topic").setContent(new Intent(this, TabTopicActivity.class))); tabHost.addTab(tabHost.newTabSpec("picture").setIndicator("Picture").setContent(new Intent(this, TabPicActivity.class))); tabHost.addTab(tabHost.newTabSpec("follow").setIndicator("Follow").setContent(new Intent(this, TabFollowActivity.class))); tabHost.addTab(tabHost.newTabSpec("vote").setIndicator("Vote").setContent(new Intent(this, TabVoteActivity.class))); radioGroup = (RadioGroup) findViewById(R.id.radiogroup); radioGroup.setOnCheckedChangeListener(checkedChangeListener); img = new ImageView(this); img.setImageResource(R.drawable.tab_front_bg); bottom_layout.addView(img); } private OnCheckedChangeListener checkedChangeListener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.radio_news: tabHost.setCurrentTabByTag("news"); // moveFrontBg(img, startLeft, 0, 0, 0); MoveBg.moveFrontBg(img, startLeft, 0, 0, 0); startLeft = 0; break; case R.id.radio_topic: tabHost.setCurrentTabByTag("topic"); MoveBg.moveFrontBg(img, startLeft, img.getWidth(), 0, 0); startLeft = img.getWidth(); break; case R.id.radio_pic: tabHost.setCurrentTabByTag("picture"); MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 2, 0, 0); startLeft = img.getWidth() * 2; break; case R.id.radio_follow: tabHost.setCurrentTabByTag("follow"); MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 3, 0, 0); startLeft = img.getWidth() * 3; break; case R.id.radio_vote: tabHost.setCurrentTabByTag("vote"); MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 4, 0, 0); startLeft = img.getWidth() * 4; break; default: break; } } }; } package com.and.netease.utils; import android.view.View; import android.view.animation.TranslateAnimation; public class MoveBg { /** * 移動(dòng)方法 * * @param v * 需要移動(dòng)的View * @param startX * 起始x坐標(biāo) * @param toX * 終止x坐標(biāo) * @param startY * 起始y坐標(biāo) * @param toY * 終止y坐標(biāo) */ public static void moveFrontBg(View view, int startX, int toX, int startY, int toY) { TranslateAnimation anim = new TranslateAnimation(startX, toX, startY, toY); anim.setDuration(200); anim.setFillAfter(true); view.startAnimation(anim); } } <?xml <LinearLayout <RelativeLayout <ImageView <TextView <ImageView </RelativeLayout> <RelativeLayout <LinearLayout <RelativeLayout <TextView </RelativeLayout> <RelativeLayout <TextView </RelativeLayout> <RelativeLayout <TextView </RelativeLayout> <RelativeLayout <TextView </RelativeLayout> <RelativeLayout <TextView </RelativeLayout> <RelativeLayout <TextView </RelativeLayout> </LinearLayout> </RelativeLayout> </LinearLayout> package com.and.netease; import com.and.netease.utils.MoveBg; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; import android.widget.TextView; public class TabNewsActivity extends Activity { RelativeLayout layout; TextView tv_front;//需要移動(dòng)的View TextView tv_bar_news; TextView tv_bar_sport; TextView tv_bar_play; TextView tv_bar_finance; TextView tv_bar_science; TextView tv_bar_more; int avg_width = 0;// 用于記錄平均每個(gè)標(biāo)簽的寬度,移動(dòng)的時(shí)候需要 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_news); initViews(); } private void initViews() { layout = (RelativeLayout) findViewById(R.id.layout_title_bar); tv_bar_news = (TextView) findViewById(R.id.tv_title_bar_news); tv_bar_sport = (TextView) findViewById(R.id.tv_title_bar_sport); tv_bar_play = (TextView) findViewById(R.id.tv_title_bar_play); tv_bar_finance = (TextView) findViewById(R.id.tv_title_bar_finance); tv_bar_science = (TextView) findViewById(R.id.tv_title_bar_science); tv_bar_more = (TextView) findViewById(R.id.tv_title_bar_more); tv_bar_news.setOnClickListener(onClickListener); tv_bar_sport.setOnClickListener(onClickListener); tv_bar_play.setOnClickListener(onClickListener); tv_bar_finance.setOnClickListener(onClickListener); tv_bar_science.setOnClickListener(onClickListener); tv_bar_more.setOnClickListener(onClickListener); tv_front = new TextView(this); tv_front.setBackgroundResource(R.drawable.slidebar); tv_front.setTextColor(Color.WHITE); tv_front.setText("頭條"); tv_front.setGravity(Gravity.CENTER); RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); param.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); layout.addView(tv_front, param); } private OnClickListener onClickListener = new OnClickListener() { int startX;//移動(dòng)的起始位置 @Override public void onClick(View v) { avg_width = findViewById(R.id.layout).getWidth(); switch (v.getId()) { case R.id.tv_title_bar_news: MoveBg.moveFrontBg(tv_front, startX, 0, 0, 0); startX = 0; tv_front.setText(R.string.title_news_category_tops); break; case R.id.tv_title_bar_sport: MoveBg.moveFrontBg(tv_front, startX, avg_width, 0, 0); startX = avg_width; tv_front.setText(R.string.title_news_category_sport); break; case R.id.tv_title_bar_play: MoveBg.moveFrontBg(tv_front, startX, avg_width * 2, 0, 0); startX = avg_width * 2; tv_front.setText(R.string.title_news_category_play); break; case R.id.tv_title_bar_finance: MoveBg.moveFrontBg(tv_front, startX, avg_width * 3, 0, 0); startX = avg_width * 3; tv_front.setText(R.string.title_news_category_finance); break; case R.id.tv_title_bar_science: MoveBg.moveFrontBg(tv_front, startX, avg_width * 4, 0, 0); startX = avg_width * 4; tv_front.setText(R.string.title_news_category_science); break; case R.id.tv_title_bar_more: MoveBg.moveFrontBg(tv_front, startX, avg_width * 5, 0, 0); startX = avg_width * 5; tv_front.setText(R.string.title_news_category_more); break; default: break; } } }; } tabActivity的功能。這里不再贅述。 layout_topic.xml) <?xml <LinearLayout <RelativeLayout <ImageView <TextView </RelativeLayout> </LinearLayout> package com.and.netease; import android.app.Activity; import android.os.Bundle; public class TabTopicActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.layout_topic); } } </div |