《第一行代码-Android》学习笔记(五)

来源:互联网 发布:json解析技术有哪些 编辑:程序博客网 时间:2024/05/10 07:52

1.在碎片中模拟返回栈

如果单纯的动态添加碎片,当按下back键就会直接退出。模拟返回栈的效果就是按下back键让他返回上一个碎片。

为了实现这个功能,只要在上一个动态添加碎片的步骤中,在事务中添加addToBackStacknull),即可。这个null可以传一个string类型的名字,用于描述返回栈的状态。

 

2.碎片和活动之间进行通信:

1)  FragmentManager提供了一个类似于findViewById的方法,可以在活动中得到相应碎片的实例,这样就可以在活动中轻松的调用碎片里的方法了。

2) 同样的在碎片中提供了getActivity()方法,可以轻松的活动活动的实例,并且如果碎片需要使用一个Context对象时,也可以直接使用getActivity()方法,因为活动本身就是一个Context

3) 最后就是碎片与碎片直接的通信,这个时候就需要使用它们相关联的活动做一个桥梁。来在一个碎片中获取到另一个碎片的实例。

 

3.碎片的状态和回调:

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

b) 暂停状态:当一个活动进入暂停状态时,和它相关联的可见碎片就会进入到暂停状态。

c) 停止状态:通俗理解就是停止状态的碎片完全不可见。

d) 销毁状态:活动进入销毁状态,依附于他的碎片也会被销毁。还有就是如果通过调用FragmentTransationremove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法的话,碎片也会进入到销毁状态。

e) 碎片特有的几个回调方法;

i. onAttach():当碎片和活动建立关联的时候调用

ii. onCreateView():为碎片创建视图(加载布局)调用

iii. onActivityCreated():确保与碎片关联的活动一定已经创建完毕的时候调用。

iv. onDestoryView():当与碎片关联的视图被移除的时候调用

v. onDetach():当碎片和活动解除关联的时候调用。

4.在碎片中也可以利用onSaveInstanceState()方法保存数据。因为进入停止状态的碎片有可能在内存不足的时候被回收。保存的数据在oncreateoncreateviewonactivitycreated中都可以拿到。

 

5.安卓动态加载布局的技巧:(动态根据屏幕大小加载布局)

a) 使用限定符:(例如:layout-large:大屏幕的设备会使用这个文件夹下的布局)在不同的布局文件夹下放置不同的布局文件。

 

屏幕特征

限定符

描述

大小

small

提供给小屏幕设备使用的资源

normal

提供给中等屏幕

large

提供给大屏幕

xlarge

提供给超大屏幕

分辨率

ldpi

低分辨率:120dpi以下

mdpi

中等分辨率:120~160

hdpi

高分辨率:160~240

xhdpi

240320

方向

land

横屏设备

port

竖屏设备

b) 使用最小宽度限定符:(例如:layout-sw600dp:表示屏幕宽度600dp以上才会用这个文件夹下面的布局)3.2版本以上才支持。

0 0
原创粉丝点击