android的tabhost+RadioGroup+PopupWindow

标签: android tabhost radiogroup | 发表时间:2013-08-01 13:46 | 作者:csh159
出处:http://blog.csdn.net

根据网上的代码稍作修改了下,放着记录学习。

效果图如下:


主代码如下:

package com.andyidea.tabdemo;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TabHost;
import android.widget.Toast;

public class MainTabActivity extends TabActivity implements
		OnCheckedChangeListener, OnClickListener
{

	private TabHost mTabHost;

	private Intent mAIntent;

	private Intent mBIntent;

	private Intent mCIntent;

	private Intent mDIntent;

	private Intent mEIntent;

	private PopupWindow mPopupWindow;

	private RadioButton mR1;

	private RadioButton mR2;

	private RadioButton mR3;

	private RadioButton mR4;

	private LinearLayout mLinearLayout1;

	private LinearLayout mLinearLayout2;

	private LinearLayout mLinearLayout3;

	private LinearLayout mLinearLayout4;

	private LinearLayout mLinearLayout5;

	/**
	 * 基准屏幕密度
	 */
	public double STANDARD_DENSITY = 160;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.maintabs);

		this.mAIntent = new Intent(this, AActivity.class);
		this.mBIntent = new Intent(this, BActivity.class);
		this.mCIntent = new Intent(this, CActivity.class);
		this.mDIntent = new Intent(this, DActivity.class);
		this.mEIntent = new Intent(this, EActivity.class);

		mR1 = ((RadioButton) findViewById(R.id.radio_button0));
		mR1.setOnCheckedChangeListener(this);
		mR2 = ((RadioButton) findViewById(R.id.radio_button1));
		mR2.setOnCheckedChangeListener(this);
		mR3 = ((RadioButton) findViewById(R.id.radio_button2));
		mR3.setOnCheckedChangeListener(this);
		mR4 = ((RadioButton) findViewById(R.id.radio_button3));
		mR4.setOnCheckedChangeListener(this);

		setupIntent();
		initPopupMenu();
	}

	private void initPopupMenu()
	{
		View mPopupMenu =
				LayoutInflater.from(this).inflate(R.layout.popupmenu, null);

		mPopupWindow =
				new PopupWindow(mPopupMenu, (int) (getDensityRatio() * 90),
						(int) (getDensityRatio() * 180));
		mLinearLayout1 = (LinearLayout) mPopupMenu.findViewById(R.id.zhanghao);
		mLinearLayout2 = (LinearLayout) mPopupMenu.findViewById(R.id.firav);
		mLinearLayout3 = (LinearLayout) mPopupMenu.findViewById(R.id.yijian);
		mLinearLayout4 = (LinearLayout) mPopupMenu.findViewById(R.id.abort);
		mLinearLayout5 = (LinearLayout) mPopupMenu.findViewById(R.id.update);
		mLinearLayout1.setOnClickListener(this);
		mLinearLayout2.setOnClickListener(this);
		mLinearLayout3.setOnClickListener(this);
		mLinearLayout4.setOnClickListener(this);
		mLinearLayout5.setOnClickListener(this);

	}

	private void dissmissPopupWindows()
	{
		if (mPopupWindow != null && mPopupWindow.isShowing())
		{
			mPopupWindow.dismiss();
		}
	}

	private double getDensityRatio()
	{
		DisplayMetrics displayMetrics = new DisplayMetrics();
		Display display = getWindowManager().getDefaultDisplay();
		display.getMetrics(displayMetrics);

		double w = displayMetrics.widthPixels;
		double h = displayMetrics.heightPixels;
		int CURRENT_DENSITY = displayMetrics.densityDpi;
		double DENSITY_RATIO = CURRENT_DENSITY / STANDARD_DENSITY;
		return DENSITY_RATIO;
	}

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
	{
		if (isChecked)
		{
			System.out.println("isChecked");
			dissmissPopupWindows();
			switch (buttonView.getId())
			{
			case R.id.radio_button0:
				this.mTabHost.setCurrentTabByTag("A_TAB");
				break;
			case R.id.radio_button1:
				this.mTabHost.setCurrentTabByTag("B_TAB");
				break;
			case R.id.radio_button2:
				this.mTabHost.setCurrentTabByTag("C_TAB");
				break;
			case R.id.radio_button3:
				mPopupWindow.showAsDropDown(mR4, 0, 0);
				break;
			}
		}

	}

	private void setupIntent()
	{
		this.mTabHost = getTabHost();
		TabHost localTabHost = this.mTabHost;

		localTabHost.addTab(buildTabSpec("A_TAB", R.string.main_news,
				R.drawable.icon_1_n, this.mAIntent));

		localTabHost.addTab(buildTabSpec("B_TAB", R.string.main_down,
				R.drawable.icon_2_n, this.mBIntent));

		localTabHost.addTab(buildTabSpec("C_TAB", R.string.main_message,
				R.drawable.icon_3_n, this.mCIntent));

		localTabHost.addTab(buildTabSpec("D_TAB", R.string.more,
				R.drawable.icon_4_n, this.mDIntent));
	}

	private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,
			final Intent content)
	{
		return this.mTabHost
				.newTabSpec(tag)
				.setIndicator(getString(resLabel),
						getResources().getDrawable(resIcon))
				.setContent(content);
	}

	@Override
	public void onClick(View v)
	{
		dissmissPopupWindows();
		switch (v.getId())
		{
		case R.id.zhanghao:
			Toast.makeText(MainTabActivity.this, "账号管理", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.firav:
			Toast.makeText(MainTabActivity.this, "收藏夹", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.yijian:
			Toast.makeText(MainTabActivity.this, "意见反馈", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.abort:
			Toast.makeText(MainTabActivity.this, "关于我们", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.update:
			Toast.makeText(MainTabActivity.this, "版本更新", Toast.LENGTH_SHORT)
					.show();
			break;
		}
	}
}


点击我下载源码:



作者:csh159 发表于2013-8-1 13:46:59 原文链接
阅读:15 评论:0 查看评论

相关 [android tabhost radiogroup] 推荐:

android的tabhost+RadioGroup+PopupWindow

- - CSDN博客移动开发推荐文章
根据网上的代码稍作修改了下,放着记录学习. Toast.makeText(MainTabActivity.this, "账号管理", Toast.LENGTH_SHORT). Toast.makeText(MainTabActivity.this, "收藏夹", Toast.LENGTH_SHORT).

用ActivityGroup解决TabHost中多个Activity跳转问题

- - CSDN博客推荐文章
   布局文件  main.xml.     Java代码实现  MainActivity.java.                 .setContent(new Intent(this,FirstGroupTab.class)));//第一个选项卡使用一个ActivityGroup  .                 .setContent(new Intent(this, SecondTab.class)));//第二个选项卡是一个Activity  .

Android 遥控车

- CasparZ - LinuxTOY
您确定您真的会用 Android 手机玩赛车. 16 岁的法国学生 Jonathan Rico 使用 Android 手机通过蓝牙实现了对改装玩具汽车的遥控. 操控的方式和那些标榜的智能手机游戏一样,使用重力感应,差别是这次控制的是现实世界中的遥控汽车. 收藏到 del.icio.us |.

Android免费?毛

- Ruby - FeedzShare
来自: 36氪 - FeedzShare  . 发布时间:2011年08月17日,  已有 2 人推荐. 微软CEO Steve Ballmer在预测竞争对手产品时通常口无遮拦. 比如他去年抨击Google的Android战略时,很多人都不屑一顾. 接着Android蚕食了微软的地盘,后来又开始侵犯苹果的地盘.

GetEd2k (Android应用)

- 某牢 - eMule Fans 电骡爱好者
GetEd2k是一个Android应用程序,作者是anacletus. 此应用可以帮助你把网页中的电驴(eDonkey) 链接添加到你个人电脑的电驴客户端里,不过前提是你的客户端开启了用于远程控制的Web interface(Web服务器,网页接口,Web界面),当然,eMule(电骡), MLDonkey 和 aMule 都支持该功能,所以这三种主流电驴客户端的用户都可以使用GetEd2k.

Android 4.0发布

- coofucoo - Solidot
Shawn the R0ck 写道 "2011年10月19日早上10点,谷歌与三星联手在香港发布了Android 4.0和Galaxy Nexus. " Android 4.0 的主要特性包括:更精细的UI,加强多任务和通知功能,锁屏下可打开摄像头和浏览通知,改进文本输入和拼写检查;增强视频录制和图像编辑功能,支持剪裁和旋转图片、消除红眼、添加效果等;面部识别解锁;Android Beam允许两台支持NFC的设备之间交换应用程序、联系人、音乐和视频;Wi-Fi Direct,蓝牙HDP,等等.

NoScript For Android发布

- John - Solidot
用于屏蔽脚本的浏览器流行扩展NoScript发布了Android版本. 开发者称已经在Firefox for Android测试过,此外也应该能工作在基于Maemo的设备上. 移动版NoScript可以帮助移动用户抵抗基于脚本的攻击. Android平台上的扩展功能和桌面版相似,允许用户对每个网站单独设置脚本执行许可.

Android入门:ContentProvider

- - ITeye博客
一、ContentProvider介绍. ContentProvider翻译为“内容提供者”;. 定义:指该应用包含一些方法,供外界访问,其他应用程序可以调用该方法,比如如果应用A创建了一个数据库“test.db”,默认是私有的,即其他应用程序不能对其进行操作,但是如果应用A使用了ContentProvider,则其他应用程序可以访问该数据库;.

Android Service 详解

- - CSDN博客移动开发推荐文章
一个Service也是一种应用程序组件,它运行在后台以提供某种服务,通常不具有可见的用户界面. 其它的应用程序组件可以启动一个Service,即使在用户切换到另外一个应用程序后,这个Service还是一直会在后台运行. 此外,一个应用程序也可以绑定到一个Service然后使用进程间通信(IPC)方式与Service之间发生交互.