博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
仿微信选项卡主页面创建
阅读量:6953 次
发布时间:2019-06-27

本文共 6032 字,大约阅读时间需要 20 分钟。

  hot3.png

先看下实现效果图

输入图片说明

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标签

转载于:https://my.oschina.net/fltsp/blog/896568

你可能感兴趣的文章
.net(c#) winform文本框只能输入数字,不能其他非法字符
查看>>
微软职位内部推荐-Software Development Engineer
查看>>
ruby异常处理
查看>>
【转】测试架构师团队的管理
查看>>
DataList同时选定删除多项
查看>>
利用Fiddler或Charles进行mock数据
查看>>
信仰1056
查看>>
ORACLE 数据库查询指定表的主键外键
查看>>
二进制的负数转换
查看>>
后端&前端零碎知识点和注意问题
查看>>
二维数组名和指针
查看>>
今天myeclipse 下的tomcat又起不来了。。。
查看>>
TreaponseHeader
查看>>
2019春总结作业
查看>>
js中call、apply、bind的用法
查看>>
博客开通了。。。
查看>>
走进selenium新世界
查看>>
XAMPP配置虚拟主机
查看>>
itextpdf结合jfinal模版生成pdf文件
查看>>
最小密度路径
查看>>