文章目录

  • 主界面按钮切换Fragment页面
    • 效果展示
    • 框架结构
    • xml视图
      • 主视图
      • 选择器和style
    • java代码模块
      • 创建4个Fragment
      • 1.绑定按钮选择事件
      • 2.初始化和用HashMap管理fragment对象
      • 3.创建切换Fragment功能的方法
      • 总代码

主界面按钮切换Fragment页面

效果展示

框架结构

xml视图

主视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:android="http://schemas.android.com/apk/res/android" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="80dp"android:background="#ffffff"></LinearLayout><FrameLayoutandroid:id="@+id/fl_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></FrameLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="80dp"><RadioGroupandroid:id="@+id/rg_option"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"android:checkedButton="@id/rb_home"><RadioButtonandroid:id="@+id/rb_home"style="@style/my_radiobutton"android:drawableTop="@drawable/selctor_home"android:text="首页"/><RadioButtonandroid:id="@+id/rb_video"style="@style/my_radiobutton"android:text="西瓜视频"android:drawableTop="@drawable/selctor_video"/><RadioButtonstyle="@style/my_radiobutton"android:background="@mipmap/asq"/><RadioButtonandroid:id="@+id/rb_talk"style="@style/my_radiobutton"android:text="微头条"android:drawableTop="@drawable/selctor_talk"/><RadioButtonandroid:id="@+id/rb_user"style="@style/my_radiobutton"android:drawableTop="@drawable/selctor_user"android:text="我的"/></RadioGroup></LinearLayout>
</LinearLayout>

选择器和style

准备被选择时的按钮图片和正常未选中时的按钮图片,将其在选择器中设置

<!--文字选择器-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorRed" android:state_checked="true"></item><item android:color="@color/colorBlack" android:state_checked="false"></item>
</selector><!--图片选择器-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/user_select" android:state_checked="true"></item><item android:drawable="@mipmap/user_normal" android:state_checked="false"></item>
</selector>

java代码模块

创建4个Fragment

public class HomeFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = getMyView();return view;}private View getMyView() {TextView textView= new TextView(getActivity());textView.setBackgroundColor(Color.BLUE);textView.setText("首页");textView.setTextSize(30);textView.setGravity(Gravity.CENTER);return textView;}

1.绑定按钮选择事件

private void listenRadioButton() {//初始化RadioGroupRadioGroup radioGroup = findViewById(R.id.rg_option);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {setContentShowFragment(checkedId);}});}

2.初始化和用HashMap管理fragment对象

 //创建成员HashMap变量HashMap<Integer,Fragment> map ;private void initPages() {//初始化HomeFragment homeFragment = new HomeFragment();TalkFragment talkFragment = new TalkFragment();UserFragment userFragment = new UserFragment();VideoFragment videoFragment = new VideoFragment();//管理四个页面//初始化HashMapmap = new HashMap<>();map.put(R.id.rb_home,homeFragment);map.put(R.id.rb_talk,talkFragment);map.put(R.id.rb_user,userFragment);map.put(R.id.rb_video,videoFragment);}

3.创建切换Fragment功能的方法

 private void setContentShowFragment(int checkedId) {Fragment fragment = map.get(checkedId);//通过fragment 的管理者将fragment显示在指定的布局FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();//根据id来切换fragment界面fragmentTransaction.replace(R.id.fl_content,fragment);//必须提交,页面才会更新fragmentTransaction.commit();}

总代码

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioGroup;import com.example.administrator.zhjrtt.R;
import com.xzit.fragment.HomeFragment;
import com.xzit.fragment.TalkFragment;
import com.xzit.fragment.UserFragment;
import com.xzit.fragment.VideoFragment;import java.util.HashMap;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.创建监听器listenRadioButton();//2.初始化和用HashMap管理fragment对象initPages();//3.创建切换Fragment功能的方法setOnContentShowFragmet(int checkedId)//4.设置HomeFragment为默认界面setContentShowFragment(R.id.rb_home);}private void setContentShowFragment(int checkedId) {Fragment fragment = map.get(checkedId);//通过fragment 的管理者将fragment显示在指定的布局FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();//根据id来切换fragment界面fragmentTransaction.replace(R.id.fl_content,fragment);//必须提交,页面才会更新fragmentTransaction.commit();}//创建成员HashMap变量HashMap<Integer,Fragment> map ;private void initPages() {//初始化HomeFragment homeFragment = new HomeFragment();TalkFragment talkFragment = new TalkFragment();UserFragment userFragment = new UserFragment();VideoFragment videoFragment = new VideoFragment();//管理四个页面//初始化HashMapmap = new HashMap<>();map.put(R.id.rb_home,homeFragment);map.put(R.id.rb_talk,talkFragment);map.put(R.id.rb_user,userFragment);map.put(R.id.rb_video,videoFragment);}private void listenRadioButton() {//初始化RadioGroupRadioGroup radioGroup = findViewById(R.id.rg_option);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {setContentShowFragment(checkedId);}});}
}

(仿头条APP项目)2.主界面按钮切换Fragment页面相关推荐

  1. (仿头条APP项目)1.app载入界面相关功能实现

    app载入界面相关功能实现 模块功能 1.设置页面布局 2.初始化视频播放 //控制是否跳到主界面private boolean isjump = false;private VideoView vi ...

  2. (仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据

    文章目录 父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据 效果展示 创建父类BaseFragment解决代码重复问题 用retrofit和gson获取并解析服务器 ...

  3. (仿头条APP项目)3.二级页面首页的ViewPager页面切换

    文章目录 二级页面首页的ViewPager页面切换 效果展示 代码实现 创建几个三级页面Fragment视图 ViewPager的Fragment数据丢失问题 创建fragment_home视图文件 ...

  4. (仿头条APP项目)7.首页标签页完善和微头条页面设计实现

    文章目录 一.首页标签页完善 效果图 具体实现 二.微头条页面设计实现 效果图 实现思路 具体实现 布局 微头条页面实体类 业务逻辑代码 一.首页标签页完善 在之前已经把首页北京标签的新闻列表页面基本 ...

  5. (仿头条APP项目)8.新闻详情页面实现和butterknife插件使用

    文章目录 butterknife插件使用 导入依赖 下载插件 使用 新闻详情页面显示 效果图 实现思路 具体实现 布局 数据库添加收藏表 新闻详情页面具体业务逻辑实现 详情页面跳转 效果图 具体实现步 ...

  6. (仿头条APP项目)5.列表页面设计实现

    文章目录 列表页面设计 效果图 具体实现 添加Glide依赖 添加主页面和两个列表布局 用GsonFormat快速创建NewListData实体类存放新闻列表数据 MyApi添加一个获取新闻列表的方法 ...

  7. (仿头条App项目)9.视频列表页面实现

    文章目录 视频列表页面实现 效果图 相关布局 功能实现 引入第三方视频库插件 从服务端获取数据 显示 滚动播放功能实现 视频列表页面实现 效果图 相关布局 视频VideoFragment页面放一个Li ...

  8. (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据

    文章目录 一.点击过的新闻列表文字变灰 效果图 实现思路 导入ormlite数据库类依赖 利用ormlite创建数据库和表 创建数据库类MyDbHelper 创建数据库中的新闻实体类NewInfo 页 ...

  9. 头条App项目测试实战(二)App手工测试流程以及需求分析与评审

    熟悉头条App项目步骤: 业务特性 用户与角色 组织架构图 技术栈 头条App测试流程(一次迭代) 测试流程 需求分析与评审 编写测试计划(测试方案) 设计测试用例与评审 执行测试用例与缺陷跟踪 编写 ...

最新文章

  1. mysql left join,right join,inner join用法分析
  2. 一个数学系毕业的物理学家,是怎么拿到诺贝尔化学奖的?
  3. java中的io复用_从 Java 中的零拷贝到五种IO模型
  4. python巩固函数和模块_Python学习教程6:函数,模块和类的使用
  5. SHA1签名工具类java
  6. 学生汽车网页设计作品静态HTML网页模板源码 大学生汽车网站制作 简单汽车网页设计成品
  7. 32位jdk_Linux安装JDK环境
  8. mysql.data已拥有为,MYSQL LOAD DATA INFILE忽略重复行(自动增量作为主键)
  9. cmake错误:Could not find a package configuration file provided by 的一种解决方法
  10. 考研辅导c语言程序设计真题,全国名校C语言程序设计考研真题汇编
  11. CCNA学习指南 第五章 下载
  12. 英伟达登录界面卡住_一汽夏利重组;东风贪腐案行贿者名单? 众泰被申请预重整;尼古拉承认造假;理想英伟达德赛西威将合作;宋PLUS上市[9月17日]...
  13. 进制转化(北理乐学编程题目)
  14. PDF粘贴到word的英文字母的间距很宽,很奇怪
  15. 关于JS跨域访问简述
  16. parallel循环java_使用Java8新特性parallelStream遇到的坑
  17. C++ 使用Poco库操作SQLite数据库
  18. java swing小程序:手动绘制美国队长盾牌
  19. python-图片上添加字符
  20. 设计模式八(享元模式)

热门文章

  1. Boost signals(1) 基本介绍
  2. [计算机网络] 【谢希仁】考前突击复习二、三、四章
  3. 【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
  4. linux kernel的问与答
  5. Python正则表达式之修改,分割,搜索和替换字符串(6)
  6. 2020-12-14(全局/静态对象的构造函数和析构函数调用的时机以及地址)
  7. python获取docx文档的内容(文本)
  8. Windows x64内核学习笔记(五)—— KPTI(未完待续)
  9. 将RGB格式的颜色值转换为十六进制
  10. 验证用户身份Filter过滤器