fragment是google将界面逻辑拆分成多个模块的一种思路实现,属于轻量级的一种activity,使得很多逻辑可以进行复用和重组.但是在使用的过程中,可能会出现各种各样的令人头疼的问题,而且fragment的实现的生命周期过于复杂。如何我们可以学习这种思路,制定一种更轻量的更加风险可控的组件,有助于我们更好的编写app,下面介绍云豹直播app的ViewProxy的简单用法.

一.基本使用

Activity添加ViewProxy,跟Fragment的使用方式类

  1. VideoPlayerViewProxy videoPlayerViewProxy=new VideoPlayerViewProxy();
    getViewProxyMannger().addViewProxy(mContainer,videoPlayerViewProxy,videoPlayerViewProxy.getDefaultTag());

    在ViewProxy嵌套ViewProxy,需要使用

    getViewProxyChildMannger:
    SearchViewProxy searchViewProxy=new SearchViewProxy();
    searchViewProxy.setHint(getString(R.string.please_input_teacher_or_curse));
    getViewProxyChildMannger().addViewProxy(vpSeachContainer,searchViewProxy,searchViewProxy.getDefaultTag());

    Viewpager中使用ViewProxy:

  2. List<RxViewProxy> viewProxyList = Arrays.asList(mHomePageViewProxy,mHomeProjectCenterViewProxy,mHomeMessageViewProxy,mHomeUserCenterViewProxy);
    mViewPager.setOffscreenPageLimit(viewProxyList.size());
    ViewProxyPageAdapter mViewPagerAdapter = new ViewProxyPageAdapter(getViewProxyMannger(), viewProxyList);
    mViewPagerAdapter.isPrint=true;
    mViewPagerAdapter.attachViewPager(mViewPager);

    二.ViewProxy中对fragment的补充:

    对setUserVisibleHint方法完善,确保绝对调用,做懒加载的时候不用去判断是否是第一次加载:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {super.setUserVisibleHint(isVisibleToUser);if(isVisibleToUser&&mRefreshView!=null){mRefreshView.initData();}
}

添加backpress事件的拦截,返回true的情况会拦截back事件,做相应的处理,不必去回调activity进行处理,避免逻辑的不清晰:

@Override
public boolean onBackPressed() {if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){toggleScreen();return true;}return false;
}

模拟actvity启动的方式,实现viewProxy进行内部导航:

public void startViewProxy(Map<String,Object>argMap,@Nullable Class<? extends BaseViewProxy>cs,String tag){try {BaseViewProxy baseViewProxy= cs.newInstance();mViewProxyMannger.addStack(mParentLayoutGroup,baseViewProxy,tag);}catch (Exception e){e.printStackTrace();}
}

云豹直播app源码对fragment替换方案的思考相关推荐

  1. Android直播APP源码中排行榜功能如何实现

    刚进公司的时候,听技术人员说起直播APP源码中的"排行榜"功能,小编最先想到的是学生时期的成绩排行,上榜的沾沾自喜到下次考试,下榜的哭哭啼啼,其实就算上榜也并没有什么实质性的奖励, ...

  2. 视频直播app源码,动态发布功能模块代码

    视频直播app源码中,不仅有"视频直播模块",还有"业务模块""消息模块"等等,其中,在动态发布功能里,选择图片后查看及删除的功能该怎么做呢 ...

  3. 视频直播app源码,底部动画导航栏

    视频直播APP源码实现底部导航栏并点击切换页面可简述为有三种方式 TabBar + TabBarView BottomNavigationBar + BottomNavigationBarItem 自 ...

  4. 直播APP源码,直播系统源码开发公司:搭建直播平台的具体方案

    2016年被誉为直播元年,直播受欢迎的同时,直播源码在2017年更是突飞猛进,本文就像大家介绍一下,直播APP源码搭建直播平台的具体方案. 我们将从环境部署开始,这包括两方面的环境部署即服务端和客户端 ...

  5. 视频直播app源码直播弹幕系统如何实现

    视频直播app源码直播弹幕系统如何实现 直播弹幕指直播间的用户,礼物,评论,点赞等消息,是直播间交互的重要手段.美拍直播弹幕系统从 2015 年 11 月到现在,经过了三个阶段的演进,目前能支撑百万用 ...

  6. 视频直播APP源码,通过css控制div内容展开更多/收起效果

    视频直播APP源码,通过css控制div内容展开更多/收起效果 一. 实现思路 需要设置一个变量控制展开 / 收起效果 提前写好最高高度的class样式,超出这个高度多余内容会隐藏 只有在列表数据长度 ...

  7. 视频直播APP源码开发iOS音频播放流程

    视频直播APP源码开发iOS音频播放流程 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的, ...

  8. 直播app源码,matlab 色彩布局描述符

    直播app源码,matlab 色彩布局描述符 %color layout descriptor (CLD) %im = imread('cs.jpg'); function result = CLD( ...

  9. 双子星IPTV桌面APK源码 网络电视机顶盒直播APP源码 带php后台

    介绍: 后台添加多格式在线直播源 带后台搭建视频教程 双子星IPTV桌面APK源码 网络电视机顶盒直播APP源码 带php后台 再手机上面即可看直播电视 电影 简单方便 网盘下载地址: http:// ...

最新文章

  1. 全站HTTPS简单实践
  2. 与通用计算机相比 单片机具体有哪些特点,嵌入式系统-复习大纲_彭荣
  3. httpd-2.4编译安装基本步骤
  4. C#中Array.Sort()方法分析
  5. 1388C. Uncle Bogdan and Country Happiness
  6. linux data目录权限,Linux 文件目录权限
  7. 数组和指针(sizeof两者的关系)
  8. Rabin-Karp算法详解和实现(python)
  9. 软件工程毕设项目 - 基于SSM的毕业设计管理系统(含源码+论文)
  10. 手把手教会你 | 多用户-服务器聊天室应用软件开发
  11. 【标准算例数据源】作业车间、流水车间、柔性作业车间、其它
  12. inventor能画抄数图吗_画图与图纸转换 抄数
  13. python通讯卡_如何使用树莓派连接EM-18RFID阅读器模块 并通过Python脚本从一些RFID卡访问信息...
  14. 删除node_modules慢【rimraf】
  15. 亲身经历!4个月写完硕士毕业论文一稿过,我是如何做到的?
  16. win7卸载Ubuntu重新安装ubuntu18.04
  17. 令克软件格隆汇——携手推进合作,共创金融IT持续发展
  18. 0.96寸OLED屏幕_清行
  19. VS Code 插件的开发及发布指南
  20. nginx在Linux的安装和简单使用

热门文章

  1. 大学网课搜题系统接口
  2. Stata+Atom: 强强联手打造编辑利器
  3. sublimetext3破解版下载与使用方法
  4. 关于MCU M4内核移植FreeRTOS的笔记
  5. 高通WLAN框架学习(2)- -建立和配置WLAN连接
  6. Vue单页应用(SPA)及其优缺点
  7. 空间统计之八:平均中心和中位数中心
  8. java int除以int_int除以int 得到double类型值
  9. 2022-09-04T08:56:35.000+0000 时间格式转换
  10. Object的属性和静态方法