android的tabhost+RadioGroup+PopupWindow

來源:互聯網
上載者:User

根據網上的代碼稍作修改了下,放著記錄學習。

如下:

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;import android.widget.TabHost;import android.widget.Toast;public class MainTabActivity extends TabActivity implementsOnCheckedChangeListener, 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. */@Overridepublic 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;}@Overridepublic 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);}@Overridepublic 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;}}}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.