当前位置:操作系统 > 安卓/Android >>

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;  
        }  
    }  
}  

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;
impo
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,