成品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切换 常用写法
发布评论