云炬Android开发笔记 4单Activity界面架构设计与验证
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界面架构设计与验证相关推荐
- 云炬Android开发笔记 3-1项目架构初始化
一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...
- 云炬Android开发笔记 15评价晒单功能实现(自定义评分控件和仿微信自动多图选择控件)
阅读目录 1. 晒单评价 1.1 点击页面跳转的实现 1.2 自定义评价订单的布局实现 1.3 星星布局的实现 2. 仿微信自动多图及删除控件 2.1 属性值及控件的定义 2.2 图片初始化方法onM ...
- 云炬Android开发笔记 3-2字体图标库集成与封装
1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...
- 云炬Android开发笔记 1项目架构设计与模块分解
一.项目架构设计与模块分解 ② ③ ④ ⑤ ⑥ 2. ② 注: 1.WeakHashMap的键值对在内存需要的时候可以被回收 2.static final定义的变量名需要大写,并且用下划线进行分隔.如 ...
- 云炬Android开发笔记 6启动图功能开发与封装
阅读目录 1.启动图功能开发与封装(倒计时效果) 2. 持久化 3.倒计时工具库封装 4.第一个启动页面的倒计时 5.启动图功能开发与封装(轮播效果) 5.1 轮播图片的添加 5.2 指示器的添加 6 ...
- 云炬Android开发笔记 17商品详情功能开发
阅读目录 1.商品详情ui框架设计 1.1 自定义圆形控件 1.2 底部栏的布局 1.3 整体布局 2.商品详情UI-MD风格伸缩渐变效果实现 2.1 ui的绑定 2.2 服务器中商品详情页的数据的取 ...
- 云炬Android开发笔记 13购物车,订单,支付功能开发(包含支付宝支付和微信支付)
阅读目录 1.购物车UI编写 1.1 购物车布局 1.2 recycleView中的item的布局 2. 购物车数据结构分析.解析与转化 2.1 解析的数据 2.2 数据的转化 2.3 数据适配器的 ...
- 云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)
阅读目录 1.WebView高可扩展性封装 1.1 发现模块的框架搭建 1.2 webView的基类 1.3 对webview基类的实现 1.4 setInitializer的方法的实现 1.5 we ...
- 云炬Android开发笔记 11主界面-商品分类开发(多布局Section RecyclerView)
阅读目录 1. 分类页面结构解析和开发 1.1 布局的创建 1.2 布局的逻辑组合 2. 分类左侧列表数据解析与UI呈现 2.1 数据的转换 2.2[完善list列表逻辑] 3.多布局Section列 ...
最新文章
- mybaits五:主键的自增
- 2.2.1生成数 自数
- setuptools与distutils的区别
- 前端月趋势榜:6 月新增的、最热门的 20 个前端开源项目 - 2106
- EasyNetQ介绍
- [收藏] Opera鼠标手势命令
- getParameter
- mysql报错01427_ORA-01427问题的分析和解决
- ListView问题:Your content must have a ListView wh...
- linux磁盘常用操作命令
- excel怎么设置自动计算_Excel工作进度表,自动甘特进度图,函数计算简单实用...
- android fmod,Android采用fmod库实现变声效果
- 黑马Java笔记第一讲—java基础
- 家庭版win7怎么把计算机,win7系统旗舰版如何变回家庭版
- tps在区块链是什么意思_区块链的TPS是什么
- www.etiger.vip DEVC++练习(入门)
- 数学建模学习(100):交通运输问题建模
- GIS算法基础(五)矢量数据向栅格数据的转换(点,线算法实现)
- android应用自启分析与S4启动列表
- iPhone微信卸载后聊天记录恢复,试试这2个方式
热门文章
- Hadoop 安装详解--新手必备
- Windows 使用 Gogs 搭建 Git 服务器
- Ubuntu软件的安装和使用
- 扩展Pentaho Report Designer报表工具
- Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00
- nyoj 16 矩形嵌套 (DAG上的DP)
- Codeforces Round #587 (Div. 3)
- oracle数据库更改字符集
- 手机端设置https访问代理(windows)
- 伪类的使用之如何在一段文字前面添加一个点