1、4-2本应用没有使用多个activity进行界面的展示,而是通过一个activity管理多个fragment来进行处理。

fragment里面有很多坑,推荐使用开源库fragmentation。

2、引入fragmentation的依赖

3、因为这里的activity只是作为一个容器,所以我们叫它ProxyActivity,它继承自SupportActivity

注:supportActivity默认使用的是supportv7包中的appcompatactivity,

4、创建basefragment

因为不希望之后的使用者甚至是我们自己去new出它的实例,所以,这里以抽象类来声明它。这里会提供一个方法,让子类传入它的布局,可以是view,也可以是一个layout的id,既然是这样的话,就把它的类型声明为Object。这是写框架的一个小技巧,这也是抽象类的一个比较灵活的方式。

5、butterknife是一个视图注入的库,如果在每个fragment中使用它会有些麻烦,所以,索性在basefragment中统一进行处理。这里是在library中使用它,在liabrary中使用它需要注意一些事项。

首先引入所需要的依赖

在library中使用需要额外地添加如下的东西

同时,在library的module里面加上gradle的插件

注:butterknife的作用是生成R2这样的类,这个类是用来生成是否绑定我们所需要的view id,因为R,也就是Android的资源类,只能在module为application中被使用,butterknife又偏偏需要使用这样的id资源,那怎么办呢?大神开发了一个这样的插件,通过R生成相应的R2资源文件,那么在绑定的时候,就可以使用R2这样的方式来绑定资源id来访问它。

6、通过绑定视图后,强制子类实现方法onBindView()

7、在onDestroy()方法中解除绑定

8、创建一个权限检查的中间层

9、创建以后真正使用的delegate,也是一个抽象类,并不打算以后让人直接使用

10、因为这个类需要被其它类继承,也不能直接使用,所以也使用abstract来修饰。

一般情况下用于容纳frame layout的布局都是framelayout,这里使用v7包中的ContentFrameLayout,

加载资源布局。

因为是单activity,所以在退出activity的时候,整个应用也就退出了,所以这里做一些垃圾回收的操作,当然,这两个方法不一定是一定执行的。

调用方法

创建资源id的类,这样Androidstudio会为我们关联好,而且绝对不会重复,

11、验证框架是否可用

创建delegate类.onBindView()是对每个控件进行操作,这里先不做处理

调用方式

运行结果:

也就是说我们的整个项目是一个单activity的项目,根fragment也就是deletefragment,这样整体机架就搭建完成了

云炬Android开发笔记 4单Activity界面架构设计与验证相关推荐

  1. 云炬Android开发笔记 3-1项目架构初始化

    一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...

  2. 云炬Android开发笔记 15评价晒单功能实现(自定义评分控件和仿微信自动多图选择控件)

    阅读目录 1. 晒单评价 1.1 点击页面跳转的实现 1.2 自定义评价订单的布局实现 1.3 星星布局的实现 2. 仿微信自动多图及删除控件 2.1 属性值及控件的定义 2.2 图片初始化方法onM ...

  3. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  4. 云炬Android开发笔记 1项目架构设计与模块分解

    一.项目架构设计与模块分解 ② ③ ④ ⑤ ⑥ 2. ② 注: 1.WeakHashMap的键值对在内存需要的时候可以被回收 2.static final定义的变量名需要大写,并且用下划线进行分隔.如 ...

  5. 云炬Android开发笔记 6启动图功能开发与封装

    阅读目录 1.启动图功能开发与封装(倒计时效果) 2. 持久化 3.倒计时工具库封装 4.第一个启动页面的倒计时 5.启动图功能开发与封装(轮播效果) 5.1 轮播图片的添加 5.2 指示器的添加 6 ...

  6. 云炬Android开发笔记 17商品详情功能开发

    阅读目录 1.商品详情ui框架设计 1.1 自定义圆形控件 1.2 底部栏的布局 1.3 整体布局 2.商品详情UI-MD风格伸缩渐变效果实现 2.1 ui的绑定 2.2 服务器中商品详情页的数据的取 ...

  7. 云炬Android开发笔记 13购物车,订单,支付功能开发(包含支付宝支付和微信支付)

    阅读目录 1.购物车UI编写 1.1 购物车布局  1.2 recycleView中的item的布局 2. 购物车数据结构分析.解析与转化 2.1 解析的数据 2.2 数据的转化 2.3 数据适配器的 ...

  8. 云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)

    阅读目录 1.WebView高可扩展性封装 1.1 发现模块的框架搭建 1.2 webView的基类 1.3 对webview基类的实现 1.4 setInitializer的方法的实现 1.5 we ...

  9. 云炬Android开发笔记 11主界面-商品分类开发(多布局Section RecyclerView)

    阅读目录 1. 分类页面结构解析和开发 1.1 布局的创建 1.2 布局的逻辑组合 2. 分类左侧列表数据解析与UI呈现 2.1 数据的转换 2.2[完善list列表逻辑] 3.多布局Section列 ...

最新文章

  1. mybaits五:主键的自增
  2. 2.2.1生成数 自数
  3. setuptools与distutils的区别
  4. 前端月趋势榜:6 月新增的、最热门的 20 个前端开源项目 - 2106
  5. EasyNetQ介绍
  6. [收藏] Opera鼠标手势命令
  7. getParameter
  8. mysql报错01427_ORA-01427问题的分析和解决
  9. ListView问题:Your content must have a ListView wh...
  10. linux磁盘常用操作命令
  11. excel怎么设置自动计算_Excel工作进度表,自动甘特进度图,函数计算简单实用...
  12. android fmod,Android采用fmod库实现变声效果
  13. 黑马Java笔记第一讲—java基础
  14. 家庭版win7怎么把计算机,win7系统旗舰版如何变回家庭版
  15. tps在区块链是什么意思_区块链的TPS是什么
  16. www.etiger.vip DEVC++练习(入门)
  17. 数学建模学习(100):交通运输问题建模
  18. GIS算法基础(五)矢量数据向栅格数据的转换(点,线算法实现)
  19. android应用自启分析与S4启动列表
  20. iPhone微信卸载后聊天记录恢复,试试这2个方式

热门文章

  1. Hadoop 安装详解--新手必备
  2. Windows 使用 Gogs 搭建 Git 服务器
  3. Ubuntu软件的安装和使用
  4. 扩展Pentaho Report Designer报表工具
  5. Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00
  6. nyoj 16 矩形嵌套 (DAG上的DP)
  7. Codeforces Round #587 (Div. 3)
  8. oracle数据库更改字符集
  9. 手机端设置https访问代理(windows)
  10. 伪类的使用之如何在一段文字前面添加一个点