android的tabhost+RadioGroup+PopupWindow
根据网上的代码稍作修改了下,放着记录学习。
效果图如下:
主代码如下:
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;
}
}
}
点击我下载源码:
android的tabhost+RadioGroup+PopupWindow的更多相关文章
- android中TabHost和RadioGroup
android底部菜单应用 博客分类: android--UI示例 TabHostMenuRadioGroupButton 在android中实现菜单功能有多种方法. Options Menu:用户 ...
- android之TabHost(下)
首先建立res/layout/tab.xml文件 编写代码如下: <?xml version="1.0" encoding="utf-8"?> &l ...
- android之TabHost(上)
首先建立文件res/layout/tab.xml 代码如下: <?xml version="1.0" encoding="utf-8"?> < ...
- 底部菜单栏(二) TabHost & RadioGroup 实现
需求:使用TabHost & RadioGroup实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1. activity_main.xml <?xml version ...
- android学习--TabHost选项卡组件
TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置多个标签页,每一个标签页获得了一个与外部容器同样大小的组件摆放区域.在手机系统的应用类似"未接电话".& ...
- Android ViewPager+TabHost实现首页导航
今天发的是TabHost结合ViewPager实现首页底部导航的效果,虽然说网上有很多这样的Demo,不过呢,我还是要把自己练习写的发出来,没错!就是这么任性: 先上效果图,如下: 代码里面有注释,就 ...
- android 之 TabHost
TabHost的实现有两种方式,第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.各个Tab中的内容在布局文件中定义就行了. mainAct ...
- Android底部TabHost API
今天在项目中遇到了底部TabHost,顺便就写了一个底部TabHost的api继承即可使用非常简单,以下为源代码: 首先是自定义的TabHostActivity,如果要使用该TabHost继承该类即可 ...
- 12.Android之Tabhost组件学习
TabHost是整个Tab的容器,TabHost的实现有两种方式: 第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.各个Tab中的内容在布 ...
随机推荐
- c++相关知识回顾
1.typedef typedef用来定义同类型的同义词.如: typedef unsingned int size_t; typedef int ptrdiff_t; typedef T * ite ...
- java 使用substring 截取特殊字符串的后一位或者数字
关于截取特殊的字符串的后一位或者数字 需求:截取特殊字符为 . 后一位 String[] str = uri.split("/"); String str1 = str[st ...
- 一次 php nusoap 调试过程
今天跟同事调用一个数据api ,用soap方式调用.本以为很简单的事情,却弄到了晚上. 因为有过调试经验,直接按照以往的过程直接部署,结果是错误. 1. 以为是调用方式错了,问了一下对接的同事,没问题 ...
- Python核心编程2第五章课后练习
5-1 整型,讲讲python普通整型与长整型区别 python整形一共有三种:布尔型,长整型和标准整型.普通整型与长整型的区别在于标准整形的取值范围是-2^31到2^31-1,长整型所能表达的数值与 ...
- chrome:// 的秘密!!一些有用的命令!
chrome:// .......命令 集结 Chrome 有很多的特性在界面菜单中是没有体现的,可以通过 chrome:// 命令来访问 我搜集了下面这些!!!当然也是在网上找的!有的我自己也不知道 ...
- mvc action 参数绑定——值提供器【学习笔记】
每次http请求的各种数据(表单数据.url的数据.路由数据等等)都保存在不同的IValueProvider接口的实现类中. 而IValueProvider接口的实现类是通过ValueProvider ...
- Apriori算法在购物篮分析中的运用
购物篮分析是一个很经典的数据挖掘案例,运用到了Apriori算法.下面从网上下载的一超市某月份的数据库,利用Apriori算法进行管理分析.例子使用Python+MongoDB 处理过程1 数据建模( ...
- property测试代码:
// // main.m // TestVar2 // // Created by lishujun on 14-9-4. // Copyright (c) 2014年 lishujun. All r ...
- BZOJ 3969 low power
Description 有\(n\)个机器,每个机器有\(2\)个芯片,每个芯片可以放\(k\)个电池.每个芯片能量是\(k\)个电池的能量的最小值.两个芯片的能量之差越小,这个机器就工作的越好.现在 ...
- XP系统VPN设置
为了解除公司上网策略限制,或者为了上Google,Facebook,都可以通过设置VPN实现. 要使用VPN需要到VPN服务商注册,链接VPN服务商. ======================== ...