Android开发——UI_片段

      • 创建片段

        • 片段类
        • 向活动中添加片段
      • 和活动之间通信
      • 片段的生命周期

片段是为了给大屏幕(比如平板电脑)提供更加灵活的UI支持。可以把它看作是子活动,必须嵌在活动中,并且有自己的生命周期,能接收自己的用户输入事件。当把片段作为活动布局的一部分添加时,片段会定义自己的视图布局。如何在活动的布局文件中添加片段呢?通过标签把片段作为活动的一个组件。

应该把每个片段都设计成可复用的模块化组件,避免直接从某个片段操纵另一个片段,这样可以把一个片段加入到多个活动中去。模块化组件使得根据屏幕大小自适应选择单窗口UI还是多窗口UI成为可能。以新闻应用为例,对平板可以在一个活动中添加列表片段和内容片段,而在手机中,一个活动中只有列表片段,点击之后出现包含内容片段的活动。


创建片段

片段类

自定义片段必须继承自Fragment。创建片段一般至少实现以下生命周期方法:

  • onCreate():系统在创建片段时调用此方法。应该在此方法中初始化想在片段暂停或者停止后恢复时保留的组件。
  • onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState):此方法为片段加载其布局文件,系统在需要绘制片段布局时调用此方法。

    参数:

    inflater:用于加载布局文件

    container:片段布局将要插入的父ViewGroup,即活动布局。

    savedInstanceState:在恢复片段时,提供上一片段实例相关数据的Bundle

示例

public static class ExampleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.example_fragment, container, false);
    }
}
  • onPause():应该在此方法内确认用户会话结束后仍然有效的任何更改。

向活动中添加片段

  • 方法一:在活动的布局文件中声明片段
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

当系统创建此布局时,会实例化在布局中指定的每个片段,并为每个片段调用onCreateView()方法,以加载每个片段的布局。系统会以返回的View来替代< fragment >元素。

  • 方法二:在源码中动态将片段添加到某个现有ViewGroup中

要想在活动中执行片段事务,如添加、删除、替换片段,必须使用FragmentTransaction:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

添加片段:

ExampleFragment fragment = new ExampleFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);#第一个参数为片段插入到的视图
fragmentTransaction.commit();

和活动之间通信

在片段类中可以通过getActivity()得到和片段关联的活动实例;

在活动类中可以通过FragmentManager.findFragmentById()获取片段实例:

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

片段的生命周期

片段的生命周期和活动的生命周期类似,最大区别在于活动停止时会被放入由系统管理的活动返回栈中,而片段在移除事务执行期间,需要显式调用addToBackStack(),片段才会放入由活动管理的返回栈。

除了和活动一样的生命周期回调方法,片段还有几个额外的回调方法:

onAttach():在片段与活动关联时调用;

onCreateView():为片段创建视图时调用

onActivityCreated():在活动的onCreate()方法已经返回时调用

onDestroyView():与片段关联的视图被移除时调用

onDetach():取消片段与活动的关联时调用。

时间: 2024-10-16 19:23:20

Android开发——UI_片段的相关文章

Android开发不得不看的11个实战小项目

是不是想学Android开发(http://www.maiziedu.com/course/android-px/)却不知道如何下手?懂得一点点入门基础知识却无法应用到实际开发中?看相关资料觉得都懂了实际动手却发现什么都不懂?本地搭建Android开发环境太麻烦? 如果你有以上的各种问题,那么今天小编推荐的Android开发的这11个小项目,你一定要看!! 因为,这些实战项目都是基于google 官方的API Demos制作而成,而且全部配有Android在线开发环境,你可以随时动手跟着课程操作

Android开发笔记 TableLayout常用的属性介绍

今天看了安卓简单控件的布局方式,大概有绝对.相对.表格.线性.帧式布局五种方式,表格布局里面的一些属性相对来说比较复杂,下面主要谈谈表格方式布局的一些属性 TableLayout经常用到的属性有: android:collapseColumns:以第0行为序,隐藏指定的列: android:collapseColumns该属性为空时,效果如下图: 把android:collapseColumns=0,2-------------->意思是把第0和第2列去掉,如下图: android:shrink

Android 开发有用代码积累

Android开发需求变化快,开发周期要求尽量短,接下来一系列文章从实际使用出发总结一些常用的代码片段,便于查找,也为后来人提供一份参考. 1.获取Manifest的基本信息(升级页面和软件关于页面一般会使用到) Context mContext = XXXApplication.getInstance().getApplicationContext(); //获取Application的Context ,当然也可以获取当前的Activity的Context, Application一般是单例

开发者必备的十二大Android开发资源

开发者必备的十二大Android开发资源 摘要: 论你是经验丰富的专业Android开发者,还是初出茅庐的新人,开发应用最忌讳的就是闭门造车.不能把自己圈在自己的思维里,要学会借助外在现有的资源去协助开发,这样既不会让自己固步自封,还能够提高工作效率. ... 无论你是经验丰富的专业Android开发者,还是初出茅庐的新人,开发应用最忌讳的就是闭门造车.不能把自己圈在自己的思维里,要学会借助外在现有的资源去协助开发,这样既不会让自己固步自封,还能够大大提高工作效率.在这里,本文介绍的这些资源包括

android开发零基础入门教程

最实用.最容易上手的android课程 很多java学习者都想尽快掌握android开发的流程!为此,我们推出了12小时系列课程,学习者只需要两天时间即可掌握android开发的基本知识,跨入android开发的大门,如想深入学习,请关注课程更新:授课时,我们也注重展示android开发中的实际技巧,课上代码都由老师一行一行实际敲出,真实展现了android开发中的细节. 在学习本课程时,你应该掌握基本java开发知识.数据库知识.XML技术等.这些技术我们再12小时学android课程中不再赘

android开发之背景音乐与音效

android开发之背景音乐与音效 一:添加背景音乐(MediaPlayer) MediaPlayer class can be used to control playback of audio/video files and streams.MediaPlayer 类是用来控制音频和视频文件的播放: 实例化MediaPlayer的方法: 直接new的方式: MediaPlayer mp = new MediaPlayer(); 使用create的方式,如: MediaPlayer mp =

Android 开发中的日常积累

欢迎Star,Fork https://github.com/lizhangqu/CoreLink 里面记录了开发过程中有用的东西,欢迎补充,不定时更新. Android 性能优化 Android内存优化之OOM Android最佳性能实践(1):合理管理内存 Android最佳性能实践(2):分析内存的使用情况 Android最佳性能实践(3):高性能编码优化 Android最佳性能实践(4):布局优化技巧 Android 加固与反编译 Apktool dex2jar DecompileApk

(转)Android开发书籍推荐:从入门到精通系列学习路线书籍介绍

Android开发书籍推荐:从入门到精通系列学习路线书籍介绍 转自:http://blog.csdn.net/findsafety/article/details/52317506 很多时候我们都会不断收到新手的提问"Android开发的经典入门教材和学习路线?"."android 开发入门教程有哪些推荐?"等类似的问题,我们不断重复回答这些问题,这让我们萌生了做< Android开发书籍推荐:从入门到精通系列学习路线书籍介绍>的想法,整理收集开发大牛的

Android开发:最全面、最易懂的Android屏幕适配解决方案

前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 鸿洋:Android 屏幕适配方案 凯子:Android屏幕适配全攻略(最权威的官方适配指导) 自身的思考&实践 给你带来一种全新.全面而逻辑清晰的Android屏幕适配思路,只要你认真阅读,保证你能解决Android的屏幕适配问题! 目录 定义 使得某一元素在Androi