利用tabhost实现类似QQ、微信界面

来源:互联网 发布:数据库开启事务 编辑:程序博客网 时间:2024/05/18 10:46
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TabHost    android:layout_width="match_parent"    android:layout_height="match_parent"     android:id="@+id/tabhost">  <LinearLayout android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent" android:layout_height="0.0dip"android:layout_weight="1.0" ></FrameLayout><TabWidget android:id="@android:id/tabs" android:visibility="gone"android:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_weight="0.0" /><!--  android:background="@drawable/tabs_bg" --><RadioGroup android:id="@+id/tab_radiogroup"android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical"android:layout_gravity="bottom" android:orientation="horizontal"><!--  android:drawableTop="@drawable/account01"  --><RadioButton android:id="@+id/radio_button_session"android:layout_marginTop="2.0dip" android:checked="true"android:background="@drawable/chat" style="@style/tab_bottom" /><!--  android:drawableTop="@drawable/account02" --><RadioButton android:id="@+id/radio_button_friendlist"android:layout_marginTop="2.0dip"  style="@style/tab_bottom" android:background="@drawable/friends"  /><!-- android:drawableTop="@drawable/account03"--><RadioButton android:id="@+id/radio_button_find"android:layout_marginTop="2.0dip"style="@style/tab_bottom" android:background="@drawable/discover"/><!--android:drawableTop="@drawable/account04" --><RadioButton android:id="@+id/radio_button_setting"android:layout_marginTop="2.0dip"style="@style/tab_bottom" android:background="@drawable/setting"/></RadioGroup> </LinearLayout></TabHost></LinearLayout><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TabHost    android:layout_width="match_parent"    android:layout_height="match_parent"     android:id="@+id/tabhost">  <LinearLayout android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent" android:layout_height="0.0dip"android:layout_weight="1.0" ></FrameLayout><TabWidget android:id="@android:id/tabs" android:visibility="gone"android:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_weight="0.0" /><!--  android:background="@drawable/tabs_bg" --><RadioGroup android:id="@+id/tab_radiogroup"android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical"android:layout_gravity="bottom" android:orientation="horizontal"><!--  android:drawableTop="@drawable/account01"  --><RadioButton android:id="@+id/radio_button_session"android:layout_marginTop="2.0dip" android:checked="true"android:background="@drawable/chat" style="@style/tab_bottom" /><!--  android:drawableTop="@drawable/account02" --><RadioButton android:id="@+id/radio_button_friendlist"android:layout_marginTop="2.0dip"  style="@style/tab_bottom" android:background="@drawable/friends"  /><!-- android:drawableTop="@drawable/account03"--><RadioButton android:id="@+id/radio_button_find"android:layout_marginTop="2.0dip"style="@style/tab_bottom" android:background="@drawable/discover"/><!--android:drawableTop="@drawable/account04" --><RadioButton android:id="@+id/radio_button_setting"android:layout_marginTop="2.0dip"style="@style/tab_bottom" android:background="@drawable/setting"/></RadioGroup> </LinearLayout></TabHost></LinearLayout>


public class ActTabHost extends Activity implements OnCheckedChangeListener {private final String TAG = "ActTabHost";private TabHost tabHost;private Intent sessionIntent; // 会话private Intent friendsListIntent; // 好友private Intent findingIntent; // 发现private Intent settingIntent; // 设置private Thread mThread;private ServiceConnection mServiceConnection = null;private SocketCommunicationService myService = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.tabhost);tabHost = (TabHost) findViewById(R.id.tabhost);LocalActivityManager groupActivity = new LocalActivityManager(this,false);groupActivity.dispatchCreate(savedInstanceState);tabHost.setup(groupActivity);// 绑定服务并启动接收消息的服务bindMyReceiveMsgService();// if(mThread == null) {// mThread = new Thread(loadData);// mThread.start();//线程启动// }initIntent();addSpec();((RadioGroup) findViewById(R.id.tab_radiogroup)).setOnCheckedChangeListener(this);};private Handler mHandler = new Handler() {// message对象中包含了线程方法发过来的数据public void handleMessage(Message msg) {}};// 这是一个被后台线程执行的方法,由bnt2的click事件 创建线程并启动Runnable loadData = new Runnable() {public void run() {LoadServerData loaddata = new LoadServerData();if (loaddata.loadFriendsList(Controller.getUserId(), 1))CommonFunctions.generateLogV("100", "从服务器加载好友列表成功!");elseCommonFunctions.generateLogV("100", "从服务器加载好友列表失败!");// 从本地数据库取数据LocalDataProcess localDataProcess = new LocalDataProcess();localDataProcess.downLoadLocalData();CommonFunctions.generateLogV("100", "从本地数据库加载数据完成!");}};/** * 初始化各个tab标签对应的intent */private void initIntent() {sessionIntent = new Intent(this, ActSession.class);friendsListIntent = new Intent(this, ActFriendsList.class);findingIntent = new Intent(this, ActFinding.class);settingIntent = new Intent(this, ActSetting.class);}/** * 为tabHost添加各个标签项 */private void addSpec() {tabHost.addTab(this.buildTagSpec("tab_session", "会话1", R.drawable.chat,sessionIntent));tabHost.addTab(this.buildTagSpec("tab_friendlist", "好友1",R.drawable.friends, friendsListIntent));tabHost.addTab(this.buildTagSpec("tab_finding", "发现1",R.drawable.discover, findingIntent));tabHost.addTab(this.buildTagSpec("tab_setting", "设置1",R.drawable.setting, settingIntent));}/** * 自定义创建标签项的方法 *  * @param tagName *            标签标识 * @param tagLable *            标签文字 * @param icon *            标签图标 * @param content *            标签对应的内容 * @return */private TabHost.TabSpec buildTagSpec(String tagName, String tagLable,int icon, Intent content) {return tabHost.newTabSpec(tagName).setIndicator(tagLable, getResources().getDrawable(icon)).setContent(content);}@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubswitch (checkedId) {case R.id.radio_button_session:tabHost.setCurrentTabByTag("tab_session");Controller.setCurrentActivity(ActSession.TAG);break;case R.id.radio_button_friendlist:tabHost.setCurrentTabByTag("tab_friendlist");Controller.setCurrentActivity(ActFriendsList.TAG);break;case R.id.radio_button_find:tabHost.setCurrentTabByTag("tab_finding");Controller.setCurrentActivity(ActFinding.TAG);break;case R.id.radio_button_setting:tabHost.setCurrentTabByTag("tab_setting");Controller.setCurrentActivity(ActSetting.TAG);break;}}public void bindMyReceiveMsgService() {mServiceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stubLocalBinder binder = (LocalBinder) service;myService = binder.getService();myService.startReceiveMsgThread();}@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubCommonFunctions.generateLogV(TAG, "onServiceDisconnected");}};Intent intent = new Intent(ActTabHost.this,SocketCommunicationService.class);if (false == bindService(intent, mServiceConnection,Context.BIND_AUTO_CREATE)) {CommonFunctions.showMessage(ActTabHost.this, "接收消息服务绑定失败!");return;}}}



0 0
原创粉丝点击