Android学习笔记之探究碎片

Android学习笔记之探究碎片,第1张

概述(学习参考书:第一行代码第2版)一、碎片及其使用方式碎片(fragment)是一种可以嵌入在活动中的UI片段,它能让程序更加合理和充分利用大屏幕的空间。碎片类似于活动,同样能包含布局,有自己的生命周期。(1)碎片的简单用法新建layout布局文件新建绑定对应布局文件的类,该类继承Fragment。

(学习参考书:第一行代码第2版)

一、碎片及其使用方式

碎片(fragment)是一种可以嵌入在活动中的UI片段,它能让程序更加合理和充分利用大屏幕的空间。碎片类似于活动,同样能包含布局,有自己的生命周期。

(1)碎片的简单用法

新建layout布局文件新建绑定对应布局文件的类,该类继承Fragment。在该类中重写onCreateVIEw方法。在要添加该碎片的活动中添加fragment控件,使用属性
androID:name显式指明要添加的碎片类名,要将包名也加上

(2)动态添加碎片
碎片的真正强大之处在于它可以在程序运行时动态的添加到活动中。步骤如下:

创建待添加的碎片实例获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法得到。开启一个事务,通过调用beginTransaction()方法开启向容器中添加或替换碎片,一般使用replace方法实现,需要传入容器的ID和待添加的碎片实例提交事务。调用commit()方法来完成

(3)在碎片中模拟返回栈
如果在动态添加/更改碎片后想通过Back键返回上一个碎片,即实现类似返回栈的效果。可以这样实现:
FragmentTransaction中提供了一个addToBackStack()方法,它可以用于将一个事务添加到返回栈中。

transaction.addToBackStack(null);

在事务提交前调用该方法,它可以接受一个名字用于描述返回栈的状态,一般传入null即可。

(4)碎片和活动间的通信
虽然碎片都是嵌入在活动中显式,但是碎片和活动都是各自存在于一个独立的类当中的,它们之间没有明显的方式直接进行通信。
为了方便碎片和活动之间进行通信,FragmentManager提供了一个类似于findVIEwByID()的方法,专门用于从布局文件中获取碎片的实例。代码如下:

MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentByID(R.ID.my_fragment);(MyFragment是自定义的碎片类,my_fragment是碎片的布局文件。)

调用FragmentManager的findFragmentByID()方法就可以在活动中获得相应实例,然后轻松调用碎片里的方法。
同样的,在每个碎片中通过调用getActivity()方法来得到和当前碎片相关的活动实例。

MainActivity activity = (MainActivity) getActivity();

当碎片需要使用Context对象时,也是使用该方法。
碎片与碎片间通信的方法就是通过中间活动实现。

二、碎片的生命周期

运行状态:当一个碎片可见并且它所关联的活动处于运行状态,该碎片也处于运行状态。

暂停状态:当一个活动进入暂停状态,与它相关联的可见碎片也会进入到暂停状态

停止状态:当一个活动进入停止状态,与其相关联的碎片会进入到停止状态。或者FragmentTransaction的remove(),replace()方法将碎片从活动中移除,但如果在事务提交之前使用addToBackStack()方法,这时的碎片也会进入停止状态。进入停止状态的碎片对用户完全不可见,有可能被系统回收。

销毁状态:当一个活动进入销毁状态,与其相关联的碎片会进入到销毁状态。或者FragmentTransaction的remove(),replace()方法将碎片从活动中移除,但在事务提交之前并没有使用addToBackStack()方法,这时的碎片也会进入销毁状态。

Fragment类中提供了一系列的回调方法,以覆盖碎片生命周期的每个环节,活动中的回调方法碎片都有除此之外,碎片还有一部分附加的回调方法:

onAttach() 当碎片和活动建立联系时调用onCreateVIEw() 为碎片加载布局时调用onActivityCreated() 确保与碎片相关联的活动一定已经创建完毕时调用onDestoryVIEw() 当与碎片关联的视图被移除的时候调用onDetach() 当碎片和活动解除关系时调用
三、动态加载布局的技巧

为了满足在不同尺寸和分辨率设备上加载布局的不同,需要使用限定符来决定设备加载的布局文件。AndroID常见的限定符:


使用方法:在res目录下新建布局文件夹layout-QualifIEr,这里的QualifIEr对应上述的限定符,再在该文件夹下创建同名布局文件。

最小宽度限定符:在res目录下新建布局文件夹layout-swXXXdp,当程序运行到屏幕宽度大于XXX的设备时,会默认加载该文件夹下的布局文件。程序运行到屏幕宽度小于XXX的设备时,会默认加载普通的布局文件。

总结

以上是内存溢出为你收集整理的Android学习笔记之探究碎片全部内容,希望文章能够帮你解决Android学习笔记之探究碎片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1023202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存