首页 > 代码库 > tabhost练习,剥离自“去哪儿”
tabhost练习,剥离自“去哪儿”
如下图(喜欢这种干净整洁):
1.MainActivity.java
1 package com.example.tab1; 2 3 import com.example.framgent.Fav_Fragment; 4 import com.example.framgent.Index_Fragment; 5 import com.example.framgent.Order_Fragment; 6 import com.example.framgent.Setting_Fragment; 7 import com.example.framgent.Uc_Fragment; 8 import com.example.util.DummyTabContent; 9 10 import android.os.Bundle; 11 import android.support.v4.app.FragmentActivity; 12 import android.view.LayoutInflater; 13 import android.widget.ImageView; 14 import android.widget.LinearLayout; 15 import android.widget.TabHost; 16 import android.widget.TabWidget; 17 import android.widget.TextView; 18 19 public class MainActivity extends FragmentActivity { 20 21 TabHost tabHost; 22 TabWidget tabWidget; 23 LinearLayout bottom_layout; 24 int CURRENT_TAB = 0; //设置常量 25 Fav_Fragment homeFragment; 26 Order_Fragment wallFragment; 27 Uc_Fragment messageFragment; 28 Setting_Fragment meFragment; 29 Index_Fragment index_Fragment; 30 android.support.v4.app.FragmentTransaction ft; 31 LinearLayout tabIndicator1,tabIndicator2,tabIndicator3,tabIndicator4,tabIndicator5; 32 33 @Override 34 public void onCreate(Bundle savedInstanceState) { 35 super.onCreate(savedInstanceState); 36 setContentView(R.layout.activity_main); 37 findTabView(); 38 tabHost.setup(); 39 40 /** 监听*/ 41 TabHost.OnTabChangeListener tabChangeListener = new TabHost.OnTabChangeListener(){ 42 @Override 43 public void onTabChanged(String tabId) { 44 45 /**碎片管理*/ 46 android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); 47 homeFragment = (Fav_Fragment) fm.findFragmentByTag("home"); 48 wallFragment = (Order_Fragment) fm.findFragmentByTag("wall"); 49 messageFragment = (Uc_Fragment) fm.findFragmentByTag("message"); 50 meFragment = (Setting_Fragment) fm.findFragmentByTag("me"); 51 index_Fragment =(Index_Fragment) fm.findFragmentByTag("index"); 52 ft = fm.beginTransaction(); 53 54 /** 如果存在Detaches掉 */ 55 if(homeFragment!=null) 56 ft.detach(homeFragment); 57 58 /** 如果存在Detaches掉 */ 59 if(wallFragment!=null) 60 ft.detach(wallFragment); 61 62 /** 如果存在Detaches掉 */ 63 if(messageFragment!=null) 64 ft.detach(messageFragment); 65 66 /** 如果存在Detaches掉 */ 67 if(meFragment!=null) 68 ft.detach(meFragment); 69 70 if(index_Fragment!=null) 71 ft.detach(index_Fragment); 72 73 /** 如果当前选项卡是home */ 74 if(tabId.equalsIgnoreCase("home")){ 75 isTabHome(); 76 CURRENT_TAB = 1; 77 78 /** 如果当前选项卡是wall */ 79 }else if(tabId.equalsIgnoreCase("wall")){ 80 isTabWall(); 81 CURRENT_TAB = 2; 82 83 /** 如果当前选项卡是message */ 84 }else if(tabId.equalsIgnoreCase("index")){ 85 isTabIndex(); 86 CURRENT_TAB = 5; 87 }else if(tabId.equalsIgnoreCase("message")){ 88 isTabMessage(); 89 CURRENT_TAB = 3; 90 91 /** 如果当前选项卡是me */ 92 }else if(tabId.equalsIgnoreCase("me")){ 93 isTabMe(); 94 CURRENT_TAB = 4; 95 }else{ 96 switch (CURRENT_TAB) { 97 case 1: 98 isTabHome(); 99 break;100 case 2:101 isTabWall();102 break;103 case 3:104 isTabMessage();105 break;106 case 4:107 isTabMe();108 break;109 case 5:110 isTabIndex();111 break;112 default:113 isTabHome();114 break;115 } 116 117 }118 ft.commit(); 119 }120 121 };122 //设置初始选项卡 123 tabHost.setCurrentTab(2);124 tabHost.setOnTabChangedListener(tabChangeListener);125 initTab();126 /** 设置初始化界面 */127 tabHost.setCurrentTab(2);128 129 }130 131 //判断当前132 public void isTabHome(){133 134 if(homeFragment==null){ 135 ft.add(R.id.realtabcontent,new Fav_Fragment(), "home"); 136 }else{137 ft.attach(homeFragment); 138 }139 }140 141 public void isTabWall(){142 143 if(wallFragment==null){144 ft.add(R.id.realtabcontent,new Order_Fragment(), "wall"); 145 }else{146 ft.attach(wallFragment); 147 }148 }149 150 public void isTabMessage(){151 152 if(messageFragment==null){153 ft.add(R.id.realtabcontent,new Uc_Fragment(), "message"); 154 }else{155 ft.attach(messageFragment); 156 }157 }158 159 public void isTabMe(){160 161 if(meFragment==null){162 ft.add(R.id.realtabcontent,new Setting_Fragment(), "me"); 163 }else{164 ft.attach(meFragment); 165 }166 }167 public void isTabIndex(){168 if(index_Fragment==null){169 ft.add(R.id.realtabcontent,new Index_Fragment(), "index"); 170 }else{171 ft.attach(index_Fragment); 172 }173 }174 /**175 * 找到Tabhost布局176 */177 public void findTabView(){178 179 tabHost = (TabHost) findViewById(android.R.id.tabhost);180 tabWidget = (TabWidget) findViewById(android.R.id.tabs);181 LinearLayout layout = (LinearLayout)tabHost.getChildAt(0);182 TabWidget tw = (TabWidget)layout.getChildAt(1);183 184 tabIndicator1 = (LinearLayout) LayoutInflater.from(this)185 .inflate(R.layout.tab_indicator, tw, false);186 TextView tvTab1 = (TextView)tabIndicator1.getChildAt(1);187 ImageView ivTab1 = (ImageView)tabIndicator1.getChildAt(0);188 ivTab1.setBackgroundResource(R.drawable.selector_mood_home);189 tvTab1.setText(R.string.buttom_home);190 191 tabIndicator2 = (LinearLayout) LayoutInflater.from(this)192 .inflate(R.layout.tab_indicator, tw, false);193 TextView tvTab2 = (TextView)tabIndicator2.getChildAt(1);194 ImageView ivTab2 = (ImageView)tabIndicator2.getChildAt(0);195 ivTab2.setBackgroundResource(R.drawable.selector_mood_wall);196 tvTab2.setText(R.string.buttom_wall);197 198 tabIndicator3 = (LinearLayout) LayoutInflater.from(this)199 .inflate(R.layout.tab_indicator, tw, false);200 TextView tvTab3 = (TextView)tabIndicator3.getChildAt(1);201 ImageView ivTab3 = (ImageView)tabIndicator3.getChildAt(0);202 ivTab3.setBackgroundResource(R.drawable.selector_mood_photograph);203 tvTab3.setText(R.string.buttom_camera);204 205 tabIndicator4 = (LinearLayout) LayoutInflater.from(this)206 .inflate(R.layout.tab_indicator, tw, false);207 TextView tvTab4 = (TextView)tabIndicator4.getChildAt(1);208 ImageView ivTab4 = (ImageView)tabIndicator4.getChildAt(0);209 ivTab4.setBackgroundResource(R.drawable.selector_mood_message);210 tvTab4.setText(R.string.buttom_message);211 212 tabIndicator5 = (LinearLayout) LayoutInflater.from(this)213 .inflate(R.layout.tab_indicator, tw, false);214 TextView tvTab5 = (TextView)tabIndicator5.getChildAt(1);215 ImageView ivTab5 = (ImageView)tabIndicator5.getChildAt(0);216 ivTab5.setBackgroundResource(R.drawable.selector_mood_my_wall);217 tvTab5.setText(R.string.buttom_me);218 }219 220 /** 221 * 初始化选项卡222 * 223 * */224 public void initTab(){225 226 TabHost.TabSpec tSpecHome = tabHost.newTabSpec("home");227 tSpecHome.setIndicator(tabIndicator1); 228 tSpecHome.setContent(new DummyTabContent(getBaseContext()));229 tabHost.addTab(tSpecHome);230 231 TabHost.TabSpec tSpecWall = tabHost.newTabSpec("wall");232 tSpecWall.setIndicator(tabIndicator2); 233 tSpecWall.setContent(new DummyTabContent(getBaseContext()));234 tabHost.addTab(tSpecWall);235 236 TabHost.TabSpec tSpecCamera = tabHost.newTabSpec("index");237 tSpecCamera.setIndicator(tabIndicator3); 238 tSpecCamera.setContent(new DummyTabContent(getBaseContext()));239 tabHost.addTab(tSpecCamera);240 241 /* //拍照按钮监听事件,弹出dialog242 tabIndicator3.setOnClickListener(new OnClickListener() {243 @Override244 public void onClick(View v) {245 246 Dialog choose = new Dialog(MainActivity.this,R.style.draw_dialog);247 choose.setContentView(R.layout.camera_dialog);248 // 设置背景模糊参数249 WindowManager.LayoutParams winlp = choose.getWindow()250 .getAttributes();251 winlp.alpha = 0.9f; // 0.0-1.0252 choose.getWindow().setAttributes(winlp);253 choose.show();// 显示弹出框254 }255 });*/256 257 TabHost.TabSpec tSpecMessage = tabHost.newTabSpec("message");258 tSpecMessage.setIndicator(tabIndicator4); 259 tSpecMessage.setContent(new DummyTabContent(getBaseContext()));260 tabHost.addTab(tSpecMessage);261 262 TabHost.TabSpec tSpecMe = tabHost.newTabSpec("me");263 tSpecMe.setIndicator(tabIndicator5); 264 tSpecMe.setContent(new DummyTabContent(getBaseContext()));265 tabHost.addTab(tSpecMe);266 267 }268 269 }
如上图所示,总共5个framgent及其对应的5个布局文件,下面给出示例代码,复杂漂亮的界面待你实现。
2.Fav_Fragment.java
1 package com.example.framgent; 2 3 4 import com.example.tab1.R; 5 6 import android.os.Bundle; 7 import android.support.v4.app.Fragment; 8 import android.view.LayoutInflater; 9 import android.view.View;10 import android.view.ViewGroup;11 import android.widget.TextView;12 13 public class Fav_Fragment extends Fragment{14 15 @Override16 public void onCreate(Bundle savedInstanceState) {17 // TODO Auto-generated method stub18 super.onCreate(savedInstanceState);19 }20 21 @Override22 public View onCreateView(LayoutInflater inflater, ViewGroup container,23 Bundle savedInstanceState) {24 View view = inflater.inflate(R.layout.fav, container, false);25 return view;26 }27 28 }
3.fav.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="@android:color/white" 6 android:orientation="vertical"> 7 <TextView 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"10 android:padding="8dp"11 android:text="酒店收藏"12 android:textColor="#000"13 android:textSize="17sp" />14 15 16 </LinearLayout>
还有一些细节美化部分,具体的请看代码吧。
链接: http://pan.baidu.com/s/1hqms1Qc 密码: z9m7
tabhost练习,剥离自“去哪儿”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。