成品app直播源码,fragment切换 常用写法相关的代码
layout

<FrameLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/view_line"/>

Activity
onCreate方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvMain = (TextView) findViewById(R.id.tv_main);
    tvMain.setSelected(true);//首页默认选中
    tvDynamic = (TextView) findViewById(R.id.tv_dynamic);

    //默认加载首页
    homeFragment = new HomeFragment();
    getSupportFragmentManager().beginTransaction().add(R.id.main_container,homeFragment).commit();

    tvMain.setOnClickListener(tabClickListener);
    tvDynamic.setOnClickListener(tabClickListener);
}

private View.OnClickListener tabClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v.getId() != currentId) {//如果当前选中跟上次选中的一样,不需要处理
            changeSelect(v.getId());//改变图标跟文字颜色的选中 
            changeFragment(v.getId());//fragment的切换
            currentId = v.getId();//设置选中id
        }
    }
};

改变fragment的显示

private void changeFragment(int resId) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();//开启一个Fragment事务

        hideFragments(transaction);//隐藏所有fragment
    
        if(resId==R.id.tv_main){//主页
            if(homeFragment==null){//如果为空先添加进来.不为空直接显示
                homeFragment = new HomeFragment();
                transaction.add(R.id.main_container,homeFragment);
            }else {
                transaction.show(homeFragment);//显示首页的Fragment
            }
        }else if(resId==R.id.tv_dynamic){//动态
            if(dynamicFragment==null){
                dynamicFragment = new DynamicFragment();
                transaction.add(R.id.main_container,dynamicFragment);
            }else {
                transaction.show(dynamicFragment);
            }
        }
        transaction.commit();//一定要记得提交事务
    }
}

隐藏所有fragment

private void hideFragments(FragmentTransaction transaction){
    if (homeFragment != null)//不为空才隐藏,如果不判断第一次会有空指针异常
        transaction.hide(homeFragment);
    if (dynamicFragment != null)
        transaction.hide(dynamicFragment);
}

改变TextView选中颜色

private void changeSelect(int resId){
		tvMain.setSelected(false);
		tvDynamic.setSelected(false);
    
		switch (resId) {
		case R.id.tv_main:
			tvMain.setSelected(true);
			break;
		case R.id.tv_dynamic:
			tvDynamic.setSelected(true);
			break;
		}
	}

选中和未选中效果

<TextView
          android:id="@+id/tv_main"
          // 图片选择器
          android:drawableTop="@drawable/tab_item_main_img_selector"
          // 图片和文字的间距
          android:drawablePadding="@dimen/main_tab_item_image_and_text"
          // 是否可以为焦点
          android:focusable="true"
          // 文字颜色选择器
          android:textColor="@drawable/tabitem_txt_sel" />

tab_item_main_img_selector 图片选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android/apk/res/android">
    <!-- 选中状态显示 -->
    <item android:drawable="@drawable/icon_tab_main_select" android:state_selected="true"/>

    <!--非选中状态显示-->
    <item android:drawable="@drawable/icon_tab_main_normal"/>
</selector>

tabitem_txt_sel 文字颜色选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android/apk/res/android">
    <!-- 选中状态 -->
    <item android:color="@color/main_tab_item_text_select" android:state_selected="true"/>
    <!--非选中状态-->
    <item android:color="@color/main_tab_item_text_normal"/>
</selector>

以上就是成品app直播源码,fragment切换 常用写法相关的代码, 更多内容欢迎关注之后的文章

更多推荐

成品app直播源码,fragment切换 常用写法