• 女孩:又周末了哦~
  • 男孩:那么今日来开个交流会,我们也学一学人家高大尚的大会,自己开一个,广州站,Android开发攻城狮交流会~

1.Fragment概要:

Android从3.0开始引入了Fragment的概念,中文意思为碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示。Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了。

需要掌握的知识点有:Fragment概要,生命周期,加载的方法(分静态和动态加载),Fragment与Activity之间的通信哦,掌握这些基础就OK了。

对于理解Fragment,可以说你在生活中看过的新闻,点击进入新闻详情界面。

  • 女孩:Fragment有它自己的生命周期吗?
  • 男孩:有的,它有自己的生命周期,不过它的生命周期依赖activity的生命周期,如同夫妻一样,不过这有点像其中一方离开不了另一方的感觉~

2.Fragment生命周期

Fragment有自己的生命周期,但它会受所属的Activity的生命周期影响,因为一个Fragment是被嵌入到一个Activity中的。

Fragment有四种状态:运行状态,暂停状态,停止状态,销毁状态。

接下来看看Fragement的生命周期,图片来源官方:

从上而下:

添加Fragment -> onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() -> onResume() -> 运行状态 -> onPause() -> 暂停状态 -> onStop() -> 停止状态 -> onDestroyView() -> onDestroy() -> onDetach() -> 销毁状态。

onAttach():
一旦片段与其活动相关联就被调用;

onCreate():
片段被调用创建;

onCreateView():
创建并返回相关的视图结构;

onActivityCreated():
表示活动已被创建完成了,这里是activity创建成功;

onStart():
片段对用户可见;

onResume():
片段与用户开始交互;

onPause():
片段与用户不再交互;

onStop():
片段不再对用户可见;

onDestroyView():
销毁与其View相关资源;

onDestroy():
销毁一切片段;

onDetach():
片段与其活动不再相关联。

  • 女孩:生命周期介绍完了?
  • 男孩:嗯,介绍完了,这些就是了,图片的提供是官方的,可以多看看,Fragment的生命周期可以和activity的生命周期一起了解,这比较容易理解~

制作底部导航栏以及Fragment实现切换功能

图片资源:

需要底部三个点击按钮的图片资源:
main_button_1.png,
main_button_2.png,
main_button_3.png.

以及点击变换的图片资源:
main_button_1_selected.png,
main_button_2_selected.png,
main_button_3_selected.png.

以上图片资源都放进drawable文件夹中

  • 女孩:哥,这些图片资源我没有哦~
  • 男孩:没关系,了解一下就行,有这需要就行,懂得运用就行~

activity_mian布局

  • 女孩:举例子了吗?
  • 男孩:实例一下,最后再慢慢细分~

在MainActivity页面中主要有两个区域:

一个是放Fragment 的main_body
一个是放底部导航栏的main_bottom_bar

主要的Fragment代码块:

主要的底部导航栏的代码块:

实例化控件:

实现底部导航栏的响应

导航栏文本颜色和图片切换效果的方法写好了,接下来是点击响应的方法

给MainActivity加上View.OnClickListener接口

在生成的onClick()方法中加上导航栏区域的响应

别忘了在initView()中添加监听器

然后通过我之前写的插件自动生成三个Fragemnt ,就可以了不用管生成的Fragement_1/2/3.java文件了,
插件文章
《 Android开发的插件Code Generator与LayoutCreator的安装与使用,提升你的开发效率 》
https://www.jianshu.com/p/9d2bf0513443

三个fragment的显示和切换

在MainActivity里把AppCompatActivity改为FragmentActivity

把Fragment加到Activity里的代码
通常用这个来展示,但是代码过长,我们来简化一下

我们先来添加一个setMain() 方法,来显示打开界面时,显示的初始页面

实现点击底部导航栏来切换响应的fragment,我们在onClick()中添加即可

3.创建Fragment

创建一个Fragment的子类,继承Fragmennt类,重写onCreateView()方法。

静态:

动态:

动态加载步骤:

  1. 创建添加的Fragment实例;
  2. 获取FragmentManager,调用getFragmentManager()方法;
  3. 开启事务,调用beginTransaction()方法;
  4. replace();
  5. 调用commit()方法提交。

4.Fragment和activity之间的通信

Fragment和activity之间的通信,FragmentManager的findFragmentById()方法来获取相应碎片的实例。

MyFragment myFragment = getFragmentManager().findFragmentById(R.id.fragment);

接着通过调用getActivity()方法来获取当前片段和相关联的活动实例:

MainActivity activity = getActivity();

闲聊单位和尺寸

px,pt,dp,sp

  • 女孩:哥,px,pt是?
  • 男孩:px在Android中为最小元素单元,px为像素,pt是磅数的意思,在Android通常作为字体的单位来用~

  • 女孩:那dp和sp呢?
  • 男孩:dp是密度无关像素的意思,sp作为与dp相同的设计理念,是可伸缩像素的意思~

到此就ok了,接下来会不断往高处学,让我们一起慢慢探索吧~

小礼物走一走 or 点赞

Android交流会-碎片Fragment,闲聊单位与尺寸的更多相关文章

  1. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

    Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...

  2. Android学习——碎片Fragment的使用

    一.碎片的简单用法(实现在一个活动中添加两个碎片,并让这两个碎片平分活动空间) 1.新建一个FragmentTest项目: 新建一个左侧碎片布局left_fragment.xml,代码如下:(只放置一 ...

  3. Android之碎片Fragment

    Fragment是个特别的存在,有点像报纸上的专栏,看起来只占据页面的一小块,但是这一小块有自己的生命周期,可以自行其是,仿佛独立王国,并且这一小块的特性无论在哪个页面,给一个位置就行,添加以后不影响 ...

  4. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)

    注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activ ...

  5. 【Android】碎片Fragment

    1.碎片可以让界面在平板上更好地展示. 2.碎片是一种可以嵌入到活动中的UI片段,它能让程序更加合理和充分地利用一个大屏幕的空间.有自己的生命周期,能包含布局. 3.新建碎片类继承Fragment,可 ...

  6. android 开发 碎片Fragment布局例子(用按键切换碎片布局)

    实现思路: 1.写一个父类布局,里面写一个按键和一个帧布局(用于给Fragment布局后续替代) 2.写3个子布局,并且在写3个class继承Fragment布局 3.在MainActivity的cl ...

  7. Android利用碎片fragment实现底部标题栏(Github模板开源)

    在安卓开发当中,一个十分重要的布局则是底部标题栏了,拥有了底部标题栏,我们就拥有了整个软件UI开发的框架,一般而言,整个软件的布局首先就是从底部标题栏开始构建,然后再开始其他模块的编写,组成一个完善的 ...

  8. android UI:Fragment碎片

    碎片(Fragment) 嵌入与活动中的UI片段,为了合理的分配布局而存在,这是我的简单理解.多用于兼顾手机与平板的UI,也适用于灵活高级的UI制作. Demo 简单的按键切换两片不同的Demo 新建 ...

  9. 安卓Android碎片fragment实现静态加载

    静态加载好后的界面如下,两个碎片分别位于一个活动的左边和右边: 左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满.一个活动当中可以拥有多个碎片,碎片的含义就是可以在同一个UI界面下,将这个界面 ...

随机推荐

  1. 自定义模块和grains

    一.自定义模块 saltstack有很多模块,模块的源码文件是在salt项目的:salt/modules.py; salt linux-node2-computer sys.doc   查看有哪些mo ...

  2. jquery中的 deferred之 deferred对象 (一)

    案例: var def=$.Deferred(); console.log(def);//答案见 图1 图1: deferred就是一个有这些方法的对象. 看源码分析: Deferred: funct ...

  3. 分布式版本控制系统Git的安装和使用

    作业要求来自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 GitHub远程仓库的地址:https://github.com/ ...

  4. 算法题——给定一个数组 arr,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    参考自:https://blog.csdn.net/qq_38200548/article/details/80688630 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] ...

  5. 微信H5支付 遇到坑的一些解决方法

    解决办法 1. 商家参数格式有误,请联系商家解决 a.对于前后端分离的开发模式 前端发起请求 服务端请求微信h5支付统一下单接口 返回参数mweb_url 给前端 然后前端调起微信h5支付 b.注意的 ...

  6. 【Django】数据迁移问题

    最近发现,Django在修改models之后重新生成迁移文件(这里可以生成),再进行数据库迁移的时候老是出错,查询数据库时老是找不到表格或者字段. 尝试过重新新建项目,新建一个同名APP,然后mode ...

  7. 网络基础-- 之 子网划分 and 一些基础解释

    子网划分的核心思想就是------   借主机为为网络位 最近几天--看了一下今天就分享一波. 首先我们先来理解一下 -----   one. 进制的转换   -----   two. IP地址 -- ...

  8. Entity Framework - PostgresQL CodeFirst

    经过几年的更新及业界对Entity Framework 的认同. 现在 EF 可以支持的数据库越来越多了.而PostgresQL 数据库现在也可以使用code first的方式来创建数据库了. 不多说 ...

  9. spring mvc controller中的参数验证机制(二)

    这里我们介绍以下自定义的校验器的简单的使用示例 一.包结构和主要文件 二.代码 1.自定义注解文件MyConstraint package com.knyel.validator; import ja ...

  10. Luogu3119 草鉴定-Tarjan+Topsort

    Solution 简单的$Tarjan$题. 有大佬现成博客 就不写了 → 传送门 Code #include<cstdio> #include<cstring> #inclu ...