Android官方开发教程中文版5

上传人:飞*** 文档编号:14212439 上传时间:2017-10-28 格式:DOCX 页数:8 大小:85.60KB
返回 下载 相关 举报
Android官方开发教程中文版5_第1页
第1页 / 共8页
Android官方开发教程中文版5_第2页
第2页 / 共8页
Android官方开发教程中文版5_第3页
第3页 / 共8页
Android官方开发教程中文版5_第4页
第4页 / 共8页
Android官方开发教程中文版5_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Android官方开发教程中文版5》由会员分享,可在线阅读,更多相关《Android官方开发教程中文版5(8页珍藏版)》请在金锄头文库上搜索。

1、Android 官方开发教程中文版使用 Fragment 创建动态 UI使用 Fragment 创建动态 UI在 Android 中创建动态、多栏的 UI,你需要将 UI 组件和 Activity 行为封装到模块中,以便在 Activity 中交换。你可以使用 Fragment 类创建这些模块,这种行为有点像一个可以自己定义布局和管理生命周期的嵌套 Activity。当一个 Fragment 指定它自身的布局时,它能和 Activity 内的其它 Fragment 配置成不同的组合以便为不同的屏幕大小修改你的布局结构(小屏幕一次可能只显示一个 Fragment,大屏幕则可以显示两个或更多) 。

2、本课程展示了如何使用 Fragment 创建动态的用户体验以及为不同屏幕大小的设备优化App 的用户体验,同时继续支持运行于低至 Android1.6 版本的设备。创建 Fragment你可以认为 Fragment 是 Activity 的一个模块化部分,它有自己的生命周期,有自己的输入事件,并且你还可以在 Activity 运行时添加或移除它(有点像可以在不同的 Activity 中重用的“子 Activity”) 。这节内容展示了如何使用支持库继承 Fragment,使你的 App 可以和运行低至 Android1.6 的设备保持兼容。注意 :如果你决定了 App 要求的最小 API 级别

3、为 11 以上,你可以使用框架内建的Fragment 类及相关的 API,而不需要使用支持库。只要知道这节课的重点在于使用支持库API,它使用特定的包签名,并且某些 API 名称和平台包含的版本有点不同。在你开始课程之前,你必须设置你的 Android 项目使用支持库。如果你之前没有使用支持库,按“安装支持库”文档所说的把你的项目设为使用 v4 库,你也可以使用 v7 appcompat 库以便在 Activity 中包含操作栏,v7 兼容 Android2.1(API 级别 7)并且也包含Fragment API。创建 Fragment 类要创建 Fragment,从 Fragment 类继

4、承,重写关键的生命周期方法以插入 App 的应用逻辑,就像你在 Activity 类做的一样。不同的是,创建 Fragment 时,你必须在 onCreateView()回调方法中定义布局。事实上,这是运行 Fragment 所需要的唯一回调方法。下例是一个指定自己布局的简单 Fragment:import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.ViewGroup;public class ArticleFra

5、gment extends Fragment Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) / 填 充 fragment 的 布 局return inflater.inflate(R.layout.article_view, container, false);就像 Activity 一样,Fragment 应该实现其它的生命周期回调方法,这样,当它在Activity 中被添加或移除时,以及 Activity 本身在生命周期状态中

6、切换时,允许你管理Fragment 的状态。例如, Activity 的 onPause()被调用时,Activity 中的所有 Fragment 也会收到 onPause()的调用。更多有关 Fragment 生命周期和回调方法的信息,请参考 Fragment 开发者指南。使用 XML 向 Activity 添加 FragmentFragment 是可重用的、模块化的 UI 组件,每个 Fragment 类的实例都必须关联一个父FragmentActivity。你可以在 Activityr 的布局 XML 文件中定义每一个 Fragment 来获取这种关联。注意 : FragmentActi

7、vityj 是一个支持库提供的特殊的 Activity,用来在低于 API 级别 11的系统版本中处理 Fragment。如果你支持的最低系统版本高于 API 级别 11,你可以使用Activity。这里是一个当设备屏幕为“大” (目录名使用了“large”修饰符)时,向 Activity 添加两个 Fragment 的布局文件的示例:res/layout-large/news_articles.xml提示 :更多有关为不同屏幕大小创建布局的内容,参看 “支持不同屏幕大小 ”。在 Activity 中应用布局:import android.os.Bundle;import android.su

8、pport.v4.app.FragmentActivity;public class MainActivity extends FragmentActivity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.news_articles);如果你使用了 v7 appcompat 库,Activity 应该继承 ActionBarActivity,这是FragmentActivity 的一个子类(更多信息请参见 “添

9、加操作栏 ”) 。注意 :当你通过在布局 XML 文件中的声明 Fragment 的方式向 Activity 布局添加Fragment 时,你不能在运行时移除 Fragment。如果你打算在用户交互时交换 Fragment,你必须在 Activity 首次启动时添加 Fragment,这将在下一节演示。构建灵活的 UI当为较大范围的屏幕尺寸设计应用程序时,你可以基于屏幕所允许的空间,在不同的布局配置中重用 Fragment 以优化用户体验。例如,在手机设备上为单面板用户界面一次只显示一个 Fragment,相反,在有较宽屏幕尺寸的平板上可以并排设置 Fragment 来为用户显示更多信息。Fr

10、agmentManager 类提供方法允许你在运行时为 Activity 添加、移除以及替换Fragment,从而创建动态用户体验。在运行时向 Activity 添加 Fragment相比在布局文件中为 Activity 定义 Fragment就象上节课中演示的使用 元素你可以在 Activity 运行时添加 Fragment,如果你打算在 Activity 生存期内改变Fragment,你必须这样做。要执行添加或移除 Fragment 的事务,你必须使用 FragmentManager 创建一个FragTransaction,它提供了添加、移除、替换及执行其它 Fragment 事务的 AP

11、I。如果你的 Activity 允许移除或替换 Fragment,你应该在 onCreate()方法中添加初始化两个 Fragment,用不同配置显示在不同屏幕尺寸上的同一个 Activity 中。在大屏幕上,两个 Fragment 并排显示,而在手机设备上,一次只显示一个 Fragment,必须在用户导航时用一个 Fragment 替换另一个。Fragment 的代码。在处理 Fragment(尤其是那些运行时添加的)时有一个重要的规则,在布局中必须有一个容器视图供这些 Fragment 布局驻留。下面的布局是一个替换在上节内容中出现的一次只显示一个 Fragment 的布局。为了用一个 F

12、ragment 替换另一个,Activity 包含一个 FrameLayout 做为 Fragment 的容器。注意文件名和上节内容中的布局文件名相同,但是目录名中没有“large”修饰符,因此这个布局用于设备屏幕比“large”小,不能同时填充两个 Fragment 的情况中。res/layout/news_articles.xml在 Activity 中插入代码,调用支持库 API 的 getSupportFragmentManager()方法获得FragmentManager,然后调用 beginTransaction()创建 FragmentTransaction,调用 add()方法

13、添加 Fragment。你可以使用同一个 FragmentTransaction 执行多个 Fragment 事务,当你准备好要改变时,你必须调用 commit()方法。下面是如何向 Activity 中添加 Fragment 的例子:import android.os.Bundle;import android.support.v4.app.FragmentActivity;public class MainActivity extends FragmentActivity Overridepublic void onCreate(Bundle savedInstanceState) sup

14、er.onCreate(savedInstanceState);setContentView(R.layout.news_articles);/ 检 查 Activity 正 在 使 用 的 包 含 Fragment 容 器 FrameLayout 的 布 局 版 本if (findViewById(R.id.fragment_container) != null) / 如 果 我 们 是 从 较 早 的 状 态 中 恢 复/ 我 们 不 需 要 做 任 何 事 情 , 直 接 返 回/ 否 则 , 我 们 可 能 会 覆 盖 掉 已 经 存 在 的 Fragmentif (savedInst

15、anceState != null) return;/ 创 建 放 在 Activity 中 的 新 Fragment HeadlinesFragment firstFragment = new HeadlinesFragment();/ 在 这 个 例 子 中 , Activity 是 被 Intent 对 象 的 特 殊 指 令 启 动 的 ,/ 把 Intent 的 extras 集 合 传 递 给 Fragment 做 为 参 数firstFragment.setArguments(getIntent().getExtras(); / 把 Fragment 添 加 到 容 器 Fram

16、eLayout 中getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();因为 Fragment 在运行时添加到 FrameLayout 容器中(替换在 Activity 布局文件中用元素定义的) ,Activity 可以移除它,并用另一个 Fragment 替换它。用一个 Fragment 替换另一个替换 Fragment 的过程就是简单的添加一个 Fragment,只不过是用 replace()方法代替add()方法。请记住,当执行 Fragment 事务,如替换或删除 Fragment 时,它通常允许用户向后导航并“撤销”改变。要允许用户通过 Fragment 事务向后导航,你必须在提交FragmentTransaction 之前调用 addToBackStack()方法。注意:当你移除或替换一个

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号