zoukankan      html  css  js  c++  java
  • 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;
    		}
    	}
    }


    点击我下载源码:



  • 相关阅读:
    Vue.js监听事件
    Vue.js组件传值
    Vue.js安装
    C#中输入法全角转换半角
    文件夹操作
    转JSON字符串,并进行AES加密
    ReportView报表的使用
    c++读入优化
    快读板子
    【转】2020年 大二上 ACM
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3230996.html
Copyright © 2011-2022 走看看