先看下实现效果图
MainActivity代码
public class MainActivity extends BaseActivity implements RadioGroup.OnCheckedChangeListener { private RadioGroup radioGroup; private FrameLayout fragmentRoot; private HomeFragment homeFragment; private CardFragment cardFragment; private CollectionFragment collectionFragment; private SettingFragment settingFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//软键盘弹出后页面整体上移 initView(); showFragment(0); } private void initView() { radioGroup = (RadioGroup) findViewById(R.id.bottomRg); radioGroup.setOnCheckedChangeListener(this); fragmentRoot = (FrameLayout) findViewById(R.id.fragmentRoot); homeFragment = new HomeFragment(); cardFragment=new CardFragment(); collectionFragment=new CollectionFragment(); settingFragment=new SettingFragment(); } private void showFragment(int index) { Fragment fragment = null; switch (index) { case 0: fragment = homeFragment; break; case 1: fragment = cardFragment; break; case 2: fragment = collectionFragment; break; case 3: fragment = settingFragment; break; default: break; } FragmentManager fm =getFragmentManager();// 获取Fragment管理器 FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.fragmentRoot, fragment); ft.commit(); } public void onCheckedChanged(RadioGroup group, int checkedId) { int selectIndex = 0; switch (checkedId) { case R.id.rbOne: selectIndex = 0; break; case R.id.rbTwo: selectIndex = 1; break; case R.id.rbThree: selectIndex = 2; break; case R.id.rbFour: selectIndex = 3; break; } showCurTab(selectIndex, checkedId, true); } private void showCurTab(int index, int checkedId, boolean isSelect) { radioGroup.check(checkedId); showFragment(index); for (int i = 0; i < radioGroup.getChildCount(); i++) { if (i == index) { changeTabImage(i, true); } else { changeTabImage(i, false); } } } private void changeTabImage(int index, boolean isSelect) { RadioButton rButton = (RadioButton) radioGroup.getChildAt(index); switch (index) { case 0: if (isSelect) { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.home_select, 0, 0); rButton.setTextColor(getResources().getColor( R.color.color_white)); } else { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.home, 0, 0); rButton.setTextColor(getResources() .getColor(R.color.gray_color)); } break; case 1: if (isSelect) { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.card_select, 0, 0); rButton.setTextColor(getResources().getColor( R.color.color_white)); } else { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.card, 0, 0); rButton.setTextColor(getResources() .getColor(R.color.gray_color)); } break; case 2: if (isSelect) { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.collection_select, 0, 0); rButton.setTextColor(getResources().getColor( R.color.color_white)); } else { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.collection, 0, 0); rButton.setTextColor(getResources() .getColor(R.color.gray_color)); } break; case 3: if (isSelect) { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.me_select, 0, 0); rButton.setTextColor(getResources().getColor( R.color.color_white)); } else { rButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.me, 0, 0); rButton.setTextColor(getResources() .getColor(R.color.gray_color)); } break; } } int waitTime = 2000; long touchTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) { long currentTime = System.currentTimeMillis(); if((currentTime-touchTime)>=waitTime) { //让Toast的显示时间和等待时间相同 Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show(); touchTime = currentTime; }else { finish(); } return true; } return super.onKeyDown(keyCode, event); }}
activity_main.xml代码
res - -》values - -》styles.xml 文件中添加style标签