转载请标明出处:

http://www.cnblogs.com/dingxiansen/p/8135888.html
本文出自:丁先森-博客园

公司以前的app是用H5封的,由于一个模块效果用H5实现出来的效果不太理想,所以boss要求用原生的来实现,高(ni)兴(ma)的脑仁疼,先来看一下要实现的效果图:

然后下边的是我实现的效果:

视频弄了半天没弄好,尴尬,只有转换成gif图了(clever),哈哈哈,继续说内部的这个滑动效果呢,我以前的博客也写过,这里附上地址了:http://www.cnblogs.com/dingxiansen/p/7649930.html

下拉刷新还没写,可以直接加刷新的代码,也挺简单的。

下边有下载地址,现在这些数据都是死数据,但是图片是使用的Picasso加载的网络图片,绑定数据的时候只需要你传入json就可以,对了,然后给你们推荐一个根据json自动生成

实体类的一个As插件GsonFormat:把json复制进去,然后就可以生成对应的实体类了,没图说啥都白说,看图

format可以格式化,然后点击OK就可以自动生成所需的实体类了。

在下边介绍使用方法

原先使用的H5封装的,跳转影院的时候,会重新创建一个,没有原生的那种切换效果,返回的时候竟然还是跳的影片的页面,这种效果用户体验感觉是肯定不好的,好在Android有Fragment可以使用啊,但是又出现问题了,Fragment中还有一个切换热映和即将上映的页面,里边还得要使用Fragment,哎,那就写吧,说一下实现的思路。

第一、先实现影片和影院的切换,这里使用的是RadioGroup+Fragment来实现的 ,这个效果像以前的QQ的一个效果,点击切换

主要是使用的RadioGroup的setOnCheckedChangeListener来控制

主要代码实现:

rg_movie.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {ft = fm.beginTransaction();switch (checkedId) {case R.id.rb_movie_film:ft.hide(cinemaFragment).show(filmFragment);ft.commit();break;case R.id.rb_movie_cinema:ft.hide(filmFragment).show(cinemaFragment);ft.commit();break;}}});

第二、内部的Fragment实现,点击影片之后,显示的是正在热映和即将热映

内部的这个呢是我封装的一个类库,导入这个类库就可以使用,主要是怎么在fragment中添加进去,代码实现

private void initView(View v) {cttl_film_tab = v.findViewById(R.id.cttl_film_tab);vp_film_viewpager = v.findViewById(R.id.vp_film_viewpager);}private void initTab(final List<Fragment> fragments) {titles = new String[]{"正在热映", "即将热映"};for (int i = 0; i < titles.length; i++) {fragments.add(MyFragment.newInstance());}//这里要使用getChildFragmentManager()//因为InputAddPhotoFragment属于我当期的Fragment,所以需要用我当前Fragment的FragmentManager去管理,而不是使用Activity的FragmentManager去管理。使用到的获取方法 就是getChildFragmetManager()。vp_film_viewpager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {@Overridepublic Fragment getItem(int position) {return fragments.get(position);}@Overridepublic int getCount() {return titles.length;}@Overridepublic CharSequence getPageTitle(int position) {return titles[position];}});cttl_film_tab.setupWithViewPager(vp_film_viewpager);}

在实现setAdapter的时候注意,new FragmentPagerAdapter(getChildFragmentManager())这里要注意,使用的是getChildFragmentManager而不是getSupportFragmentManager

来说一下原因:

getFragmentManager()和getSupportFragmentManager()的区别很容易理解,android的v4扩展包中的FragmentActivity中获取FragmentManager使用的就是getSupportFragmentManager(),android.app中获取管理类的方法就是getFragmentManager()。

然后getChildFragmentManager()和getFragmentManager()属于两个不同的类,前者属于Fragment,看源码:

    /** * Return a private FragmentManager for placing and managing Fragments * inside of this Fragment. */  final public FragmentManager getChildFragmentManager() {  if (mChildFragmentManager == null) {  instantiateChildFragmentManager();  if (mState >= RESUMED) {  mChildFragmentManager.dispatchResume();  } else if (mState >= STARTED) {  mChildFragmentManager.dispatchStart();  } else if (mState >= ACTIVITY_CREATED) {  mChildFragmentManager.dispatchActivityCreated();  } else if (mState >= CREATED) {  mChildFragmentManager.dispatchCreate();  }  }  return mChildFragmentManager;  }  

android官方对它的解释是,返回一个FragmentManager为了设置和管理当前Fragment内部的Fragment的们。举个例子,在我的Fragment布局中添加了一个Fragment容器,我的目的是在Fragment执行的过程中动态的添加一个Fragment,并且对他进行操作

因为InputAddPhotoFragment属于我当期的Fragment,所以需要用我当前Fragment的FragmentManager去管理,而不是使用Activity的FragmentManager去管理。使用到的获取方法 就是getChildFragmetManager()。

最后我们来看一下getFragmentManager()的源码,它是属于FragmentActivity,代码如下:

    /** * Return the FragmentManager for interacting with fragments associated * with this activity. */  public FragmentManager getSupportFragmentManager() {  return mFragments;  }  

看它的官方注释,是为了获取能管理和当前Activity有关联的Fragment的FragmentManager。总结,需要管理相互独立的并且隶属于Activity的Fragment使用FragmentManager(),而在Fragment中动态的添加Fragment要使用getChildFragmetManager()来管理。

说的再多,看看代码就明白了,项目下载地址:链接:https://pan.baidu.com/s/1nvL0BJN 密码:frbq (其实可烦CSDN了,非要什么分,一般的哪有那么多分,有的还是诈分的,真的气人)

转载于:https://www.cnblogs.com/dingxiansen/p/8135888.html

Fragment多重嵌套实现电影,影院展示页相关推荐

  1. HTML5期末大作业:电影网页设计——在线影院6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:电影网页设计--在线影院6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 个 ...

  2. Fragment结合nineold包实现滑动tab页

    文章结尾有×××.发现很多项目中都有一套属于自己的tab样式和风格.今天,想分享给大家一个自定义tabhost带有匀速滑动的指示器切换fragment的Demo,略显不才,只能分享简单的东西,后面有× ...

  3. web网页设计实例作业 ——电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作

    HTML5期末大作业:电影网站设计--电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作 文章 ...

  4. HTML期末大作业 学生DW静态网页设计 动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源

    HTML5期末大作业`动画漫影视网站设计--动画漫展学习资料电影模板(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 wHTML期末大作业 学生DW静态网页设计 html大作 ...

  5. HTML5期末大作业:在线电影介绍(6页) HTML+CSS+JavaScript 大学生毕设网页设计源码HTML web网页设计制作成品

    HTML5期末大作业:在线电影介绍(6页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 常见网页设计作业题材有 个人. 美食. ...

  6. HTML+CSS大作业 电影网站设计——电影介绍(11页) 大学生电影网页作品 电影网页设计作业模板 学生网页制作源代码下载

    HTML5期末大作业:电影网站设计--电影介绍(11页) 大学生电影网页作品 文章目录 HTML5期末大作业:电影网站设计--电影介绍(11页) 大学生电影网页作品 一.作品展示 二.文件目录 三.代 ...

  7. HTML5期末大作业:在线电影网站设计——我不是药神电影介绍(4页) HTML+CSS+JavaScript 大二实训大作业HTML源码...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...

  8. DIV布局——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品

    HTML5期末大作业:网页制作代码 网站设计--人电影网站(5页) HTML+CSS+JavaScript 文章目录 HTML5期末大作业:网页制作代码 网站设计--人电影网站(5页) HTML+CS ...

  9. DIV布局——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 w

    HTML5期末大作业:网页制作代码 网站设计--人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计 ...

最新文章

  1. NSUserDefaults读取和写入自定义对象
  2. centos 安装 openfire
  3. 通过ssh建立点对点的隧道,实现两个子网通信
  4. Hyperledger Fabric 智能合约实战 (2)软件安装Docker、 Docker-composer、go
  5. UOJ #277 BZOJ 4739 定向越野 (计算几何、最短路)
  6. js实现IE/Firefox的收藏功能
  7. 浅谈Web前端安全策略xss和csrf,及又该如何预防?
  8. Python笔记-使用U2自动登录某APP及watcher使用
  9. python 快速排序_python-快速排序的两种方法
  10. linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
  11. 鼠标移动到版块图标产生的渐变效果
  12. mysql 1054 42s22_MySQL 触发器的坑:ERROR 1054 (42S22): Unknown column 'xxx' in 'field list'
  13. Hurdles of 110m ZOJ - 2972 (简单DP)
  14. rose服务器系统,ROSE HA 服务器集群软件
  15. DMX512协议个人总结,待验证,欢迎拍砖
  16. ADXL362 初次使用总结(使用stm32 HAL 库)
  17. Windows下两种方法弹出U盘
  18. (77)--用框架爬取博客园信息并保存到数据库
  19. 武汉大学计算机黄天成,UCL南区决赛武大强势夺得LOL冠军 韩国外援成焦点
  20. 浪漫约定的守护者——微软最有价值专家余勇

热门文章

  1. linux上ps命令详解
  2. element 表格 最后一行合计。 合并单元格方法
  3. 音频素材自动剪辑视频ae脚本Automated Video Editing
  4. 微信公众平台订阅号运营11个秘决
  5. 完美解析车头时距THW与碰撞时间TTC的区别
  6. ZCC51403替代LM27403
  7. 收藏|2021年阿里云开源镜像站最热门镜像王全梳理 (附下载链接和Top20镜像王排名)
  8. VMWare14 安装Mac OS系统(操作图解)
  9. 2021年,软件测试还值得吗?
  10. 无水葡萄糖 cas:50-99-7 D(+)-Glucose 分子量:180.156 分子式:C6H12O6 密度及沸点值