zoukankan      html  css  js  c++  java
  • Android交流会-碎片Fragment,闲聊单位与尺寸

    标题图

    • 女孩:又周末了哦~
    • 男孩:那么今日来开个交流会,我们也学一学人家高大尚的大会,自己开一个,广州站,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 点赞

    爱心

  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/dashucoding/p/9380436.html
Copyright © 2011-2022 走看看