新浪微博开发之主程序界面的实现

授权用户登录后进入到程序主界面,主界面包括顶部标题栏、中间微博内容栏和底部菜单栏。顶部标题栏又包括发微博按钮、标题、和刷新按钮,而中间内容栏为ListView,底部菜单栏是使用RadioGroup实现的,关于底部菜单栏的实现可参考这边文章:新浪微博布局学习——妙用TabHost写的很好,这里就不做过多的解释了!

主界面效果图:

新浪微博开发之主程序界面的实现_第1张图片

主界面布局代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:background="@android:color/white"
	android:layout_height="fill_parent">
	<include android:id="@+id/home_title" layout="@layout/title" />
	<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent"
		android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
		<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" />
			<TabWidget android:id="@android:id/tabs"
				android:visibility="gone" android:layout_width="fill_parent"
				android:layout_height="wrap_content" android:layout_weight="0.0" />
			<RadioGroup android:gravity="center_vertical"
				android:layout_gravity="bottom" android:orientation="horizontal"
				android:id="@+id/main_radio" android:background="@drawable/bg_title"
				android:layout_width="fill_parent" android:layout_height="wrap_content">
				<RadioButton android:text="@string/main_home"
					android:checked="true" android:id="@+id/radio_button0"
					android:drawableTop="@drawable/icon_home"
					style="@style/main_tab_bottom" />
				<RadioButton android:id="@+id/radio_button1"
					android:text="@string/main_news"
					android:drawableTop="@drawable/icon_meassage" style="@style/main_tab_bottom" />
				<RadioButton android:id="@+id/radio_button2"
					android:text="@string/main_my_info"
					android:drawableTop="@drawable/icon_selfinfo" style="@style/main_tab_bottom" />
				<RadioButton android:id="@+id/radio_button3"
					android:text="@string/main_square"
					android:drawableTop="@drawable/icon_square" style="@style/main_tab_bottom" />
				<RadioButton android:id="@+id/radio_button4"
					android:text="@string/main_more"
					android:drawableTop="@drawable/icon_more" style="@style/main_tab_bottom" />
			</RadioGroup>
		</LinearLayout>
	</TabHost>
</LinearLayout>
主界面代码如下:

package com.cloay.weibo.ui;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton;
import android.widget.RadioButton;
import android.widget.TabHost;
import android.widget.TextView;

import com.cloay.weibo.R;
import com.cloay.weibo.service.MainService;
/**
 * 使用TabActivity实现主界面
 * @author Cloay
 * 2012-2-24
 * 下午04:26:07
 */
public class MainActivity extends TabActivity implements OnCheckedChangeListener  {
	private ImageButton updateStatus;
	private ImageButton refresh;
	private TabHost tabHost;
	private Intent homeIntent;  //主页
	private Intent mesIntent;   //信息
	private Intent infoIntent;  //个人资料
	private Intent squareIntent;  //广场
	private Intent moreIntent;    //更多
	private TextView title;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);   //去掉系统标题栏
		MainService.allActivity.add(this);
		setContentView(R.layout.main);
		this.tabHost = this.getTabHost();
		initData();    //初始化数据
	        initBtnListener();//为各个按钮设置监听器
	        setTab();//增加Tab项
	}

	/**
	 * 增加Tab项
	 */
	private void setTab() {
		tabHost.addTab(tabHost.newTabSpec("C_HOME").setIndicator("C_HOME").setContent(homeIntent));
		tabHost.addTab(tabHost.newTabSpec("C_MES").setIndicator("C_MES").setContent(mesIntent));
		tabHost.addTab(tabHost.newTabSpec("C_INFO").setIndicator("C_INFO").setContent(infoIntent));
		tabHost.addTab(tabHost.newTabSpec("C_SQUARE").setIndicator("C_SQUARE").setContent(squareIntent));
		tabHost.addTab(tabHost.newTabSpec("C_MORE").setIndicator("C_MORE").setContent(moreIntent));
	}

	/**
	 * 为底部按钮设置监听器
	 */
	private void initBtnListener() {
	    ((RadioButton)findViewById(R.id.radio_button0)).setOnCheckedChangeListener(this);
	    ((RadioButton)findViewById(R.id.radio_button1)).setOnCheckedChangeListener(this);
	    ((RadioButton)findViewById(R.id.radio_button2)).setOnCheckedChangeListener(this);
	    ((RadioButton)findViewById(R.id.radio_button3)).setOnCheckedChangeListener(this);
	    ((RadioButton)findViewById(R.id.radio_button4)).setOnCheckedChangeListener(this);
	}

	/**
	 * 设置各个intent
	 */
	private void initData() {
		title = (TextView) findViewById(R.id.title_text);
		updateStatus = (ImageButton) findViewById(R.id.title_bt_left);
		updateStatus.setOnClickListener(new OnClickListener() { //打开发微博界面
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, UpdateStatus.class);
				startActivity(intent);
			}
		});
		refresh = (ImageButton) findViewById(R.id.title_bt_right);  //
		refresh.setOnClickListener(new OnClickListener() {  //刷新按钮监听事件
			//获取当前HomeActivity,调用refresh()方法 刷新数据
			@Override
			public void onClick(View v) {
				HomeActivity home = (HomeActivity) getCurrentActivity();   
				home.refresh();   
			}
		});
		homeIntent = new Intent(this, HomeActivity.class);
		mesIntent = new Intent(this, MesActivity.class);
		infoIntent = new Intent(this, InfoActivity.class);
		squareIntent = new Intent(this, SquareActivity.class);
		moreIntent = new Intent(this, MoreActivity.class);
	}

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		if(isChecked){
			switch(buttonView.getId()){
			case R.id.radio_button0:
			this.tabHost.setCurrentTabByTag("C_HOME");  //跳转到首页
				title.setText("微博主页");
				refresh.setVisibility(View.VISIBLE);
				break;
			case R.id.radio_button1:
				this.tabHost.setCurrentTabByTag("C_MES");   //跳转到消息页
				title.setText("消息提醒");
				refresh.setVisibility(View.GONE);
				break;
			case R.id.radio_button2:
				refresh.setVisibility(View.GONE);
				title.setText("个人资料");
				this.tabHost.setCurrentTabByTag("C_INFO");   //个人资料
				break;
			case R.id.radio_button3:
				refresh.setVisibility(View.GONE);
				title.setText("微博广场");
				this.tabHost.setCurrentTabByTag("C_SQUARE");  //微博广场
				break;
			case R.id.radio_button4:
				refresh.setVisibility(View.GONE);
				title.setText("更多");
				this.tabHost.setCurrentTabByTag("C_MORE");	  //更多菜单
				break;
			}
		}
	}
	
	@Override
	public boolean dispatchKeyEvent(KeyEvent event) {
		if((event.getKeyCode() == KeyEvent.KEYCODE_BACK) && (event.getAction() == KeyEvent.ACTION_DOWN)){
			// 弹出退出提示对话框
			MainService.showExitDlg(MainActivity.this);
//			System.out.println("=======> dispatchKeyEvent");
			return true;
		}
		return super.dispatchKeyEvent(event);
	}
}

该注释的地方我都详细注释了,这里就不过多作解释了!下一篇我们将学习微博的获取!

有什么问题及建议请留言,大家一起交流学习!

说明:转载请注明出处!

你可能感兴趣的:(android,新浪微博,ListView,layout,button,RadioButton)