• 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 点赞

    爱心

  • 相关阅读:
    python学习:匿名函数
    python学习:递归列出目录里的文件
    python学习:函数的递归调用
    ios开发解决遍历删除数组对象报错
    ansible入门
    git入门-分支
    Swift 使用CollectionView 实现图片轮播封装就是这样简单
    iOS复杂动画之抽丝剥茧(Objective-C & Swift)
    大数据
    点击UITableView的cell展开收缩
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932591.html
Copyright © 2020-2023  润新知