(仿头条APP项目)2.主界面按钮切换Fragment页面
文章目录
- 主界面按钮切换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页面相关推荐
- (仿头条APP项目)1.app载入界面相关功能实现
app载入界面相关功能实现 模块功能 1.设置页面布局 2.初始化视频播放 //控制是否跳到主界面private boolean isjump = false;private VideoView vi ...
- (仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据
文章目录 父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据 效果展示 创建父类BaseFragment解决代码重复问题 用retrofit和gson获取并解析服务器 ...
- (仿头条APP项目)3.二级页面首页的ViewPager页面切换
文章目录 二级页面首页的ViewPager页面切换 效果展示 代码实现 创建几个三级页面Fragment视图 ViewPager的Fragment数据丢失问题 创建fragment_home视图文件 ...
- (仿头条APP项目)7.首页标签页完善和微头条页面设计实现
文章目录 一.首页标签页完善 效果图 具体实现 二.微头条页面设计实现 效果图 实现思路 具体实现 布局 微头条页面实体类 业务逻辑代码 一.首页标签页完善 在之前已经把首页北京标签的新闻列表页面基本 ...
- (仿头条APP项目)8.新闻详情页面实现和butterknife插件使用
文章目录 butterknife插件使用 导入依赖 下载插件 使用 新闻详情页面显示 效果图 实现思路 具体实现 布局 数据库添加收藏表 新闻详情页面具体业务逻辑实现 详情页面跳转 效果图 具体实现步 ...
- (仿头条APP项目)5.列表页面设计实现
文章目录 列表页面设计 效果图 具体实现 添加Glide依赖 添加主页面和两个列表布局 用GsonFormat快速创建NewListData实体类存放新闻列表数据 MyApi添加一个获取新闻列表的方法 ...
- (仿头条App项目)9.视频列表页面实现
文章目录 视频列表页面实现 效果图 相关布局 功能实现 引入第三方视频库插件 从服务端获取数据 显示 滚动播放功能实现 视频列表页面实现 效果图 相关布局 视频VideoFragment页面放一个Li ...
- (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
文章目录 一.点击过的新闻列表文字变灰 效果图 实现思路 导入ormlite数据库类依赖 利用ormlite创建数据库和表 创建数据库类MyDbHelper 创建数据库中的新闻实体类NewInfo 页 ...
- 头条App项目测试实战(二)App手工测试流程以及需求分析与评审
熟悉头条App项目步骤: 业务特性 用户与角色 组织架构图 技术栈 头条App测试流程(一次迭代) 测试流程 需求分析与评审 编写测试计划(测试方案) 设计测试用例与评审 执行测试用例与缺陷跟踪 编写 ...
最新文章
- mysql left join,right join,inner join用法分析
- 一个数学系毕业的物理学家,是怎么拿到诺贝尔化学奖的?
- java中的io复用_从 Java 中的零拷贝到五种IO模型
- python巩固函数和模块_Python学习教程6:函数,模块和类的使用
- SHA1签名工具类java
- 学生汽车网页设计作品静态HTML网页模板源码 大学生汽车网站制作 简单汽车网页设计成品
- 32位jdk_Linux安装JDK环境
- mysql.data已拥有为,MYSQL LOAD DATA INFILE忽略重复行(自动增量作为主键)
- cmake错误:Could not find a package configuration file provided by 的一种解决方法
- 考研辅导c语言程序设计真题,全国名校C语言程序设计考研真题汇编
- CCNA学习指南 第五章 下载
- 英伟达登录界面卡住_一汽夏利重组;东风贪腐案行贿者名单? 众泰被申请预重整;尼古拉承认造假;理想英伟达德赛西威将合作;宋PLUS上市[9月17日]...
- 进制转化(北理乐学编程题目)
- PDF粘贴到word的英文字母的间距很宽,很奇怪
- 关于JS跨域访问简述
- parallel循环java_使用Java8新特性parallelStream遇到的坑
- C++ 使用Poco库操作SQLite数据库
- java swing小程序:手动绘制美国队长盾牌
- python-图片上添加字符
- 设计模式八(享元模式)
热门文章
- Boost signals(1) 基本介绍
- [计算机网络] 【谢希仁】考前突击复习二、三、四章
- 【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
- linux kernel的问与答
- Python正则表达式之修改,分割,搜索和替换字符串(6)
- 2020-12-14(全局/静态对象的构造函数和析构函数调用的时机以及地址)
- python获取docx文档的内容(文本)
- Windows x64内核学习笔记(五)—— KPTI(未完待续)
- 将RGB格式的颜色值转换为十六进制
- 验证用户身份Filter过滤器