`

【Android开发之UI】创建一个片段

阅读更多

 

原文自:http://android.eoe.cn/topic/ui

 

你可以把fragment看作是activity的模块化组件,它拥有自己的生命周期,接受它自己的输入事件,你也可以在运行activity的时候添加或者移除它(有点像可以在不同的activity中重用的“子activity”)。这节课演示怎么样使用Support Library继承Fragment类,如此你的app(应用)就能与运行android1.6老版本的系统设备兼容 。

注意:如果你因为一些其他原因决定你的app需要的最低API版本为11或者更高,那你就没必要使用Support Library,而可以直接使用框架内置的Fragment类和相关API。要知道这节课主要关注于使用来自Support Library的API,使用特定包名下的API跟内置在平台(API)的还是略有不同的

创建Fragment类 (Create a Fragment Class)


要创建一个fragment需要继承Fragment类,然后重写关键的生命周期方法插入你自己的应用逻辑,操作的方式跟创建一个Activity类似。
不同的是当你创建一个Fragment时,你必须使用onCreateView()回调去定义你的布局。事实上,这是唯一的需要让fragment获得运行的回调函数。例如,这里有一个简单的指定了自己布局的fragment:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.ViewGroup;

    public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
    }

就跟activity一样,fragment也应该要实现其他的生命周期方法来管理它的状态,比如当fragment被activity添加或者删除,当activity生命周期状态转换时(类似这种操作都会影响到fragment的状态)。例如,当activity的onPuase()方法被调用的时候,所有activity中的fragment也都会接收到onPause()方法的调用。

更多关于fragment生命周期和回调函数的方法都可以在Fragment 开发指南中找到。

使用XML添加Fragment到Activity (Add a Fragment to an Activity using XML)


因为fragment是可重用的,模块化的UI组件,每一个Fragment实例必须与父类FragmentActivity相关联。你可以通过在你Activity布局XML文件中定义每一个fragment来获得关联。

注意:FragmentActivity是在系统版本低于API level 11时由Support Library提供用来管理fragment的特殊activity。如果你支持的最低系统版本是API level 11或者更高,那你可以直接使用常规的Activity。

以下是一个例子,当设备屏幕被认为“大”的时候,一个布局文件添加了两个fragment到activity
译者注:当屏幕比较大的时候(比如平板)是可以同时显示两个fragment的,但是屏幕比较小(比如普通手机)同一时间只能显示一个fragment,这是由于它们的屏幕尺寸造成的,后续的课程也会提到这个
这个布局文件被指定在“高”分辨率的目录名下。(译者注:请注意下面xml的目录结构:是在res目录下的layout-large目录下,这样的目录下存放的文件通常都是用来支持高分辨率的布局文件)

res/layout-large/news_articles.xml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

:更多关于为不同屏幕大小创建布局,请参照Supporting Different Screen Sizes(支持不同的屏幕大小)

这里展示了在activity中怎样运用这个布局:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;

    public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
    }

 

注意:当你通过在布局XML文件中定义fragment以达到添加一个fragment到activity中时,你不能在运行时移除此fragment。如果你计划在用户交互期间使fragment交替替换,那你必须在activity第一次启动时将fragment添加进去,我们将会在下一节课中演示。

0
2
分享到:
评论

相关推荐

    酷炫UI之新增布局与片段

    总之,"酷炫UI之新增布局与片段"是一个涵盖广泛的话题,它要求开发者具备扎实的Android基础知识,熟悉各种布局的使用方法,掌握片段的管理和交互,以及如何通过动画和过渡来提升用户体验。通过对这些知识点的深入...

    Android-UI-Design

    为了深入理解上述所有概念,通过一个完整的示例应用来学习Android UI设计是最好的实践方式。示例应用可能包括一个使用ListView和对象模型的项目列表,多设备支持和布局考虑、用户界面布局、标签颜色/优先级选择器、...

    使用fragment创建动态UI

    Android Fragment是Android开发中的一个重要组件,它允许开发者在一个Activity中动态地组合多个片段来构成复杂的UI布局。 首先,我们需要了解Fragment是什么以及它的基本功能。Fragment是Android平台的一部分,它被...

    Android ui开发类库示例源码.rar

    在Android应用开发中,UI(用户界面...对于Android UI开发的学习者,这是一个宝贵的资源,能让你在实践中提升技能,理解各种设计模式和最佳实践。记住,实践出真知,动手操作这些源码是掌握Android UI开发的不二法门。

    android-android-ui-design-patterns.zip_android

    2. **片段(Fragment)**:Fragment是Android UI设计中的一个可重用组件,可以在多个Activity之间共享,使得在不同屏幕尺寸和配置上构建适应性强的用户界面成为可能。 3. **MVP(Model-View-Presenter)模式**:MVP...

    原创15个Android很有用的代码片段

    以上代码片段展示了在Android开发中的一些常见操作,包括检查外部存储状态、设置界面样式、获取和操作UI元素以及发送短信和彩信。这些代码片段能够帮助开发者更高效地完成应用功能的实现。在实际开发中,还需注意...

    一步一步图示开发第一个Android项目并运行.doc

    在开发第一个Android项目时,需要通过一系列步骤来创建并配置一个基本的应用程序。以下将详细介绍这些步骤: 1. **启动Eclipse** - 首先确保已经安装了Eclipse IDE for Java Developers,并且配置好了Android开发...

    [Android开发从入门到精通].扶松柏.扫描版.pdf

    Activity是Android应用的基本组成部分之一,代表了一个屏幕界面,负责处理用户交互事件。 #### 2.2 Service Service用于执行长时间运行的操作,如后台音乐播放,即使用户界面不再可见也能持续运行。 #### 2.3 ...

    Android开发中文教程(中文文档)

    在UI设计方面,Android开发中文教程将介绍Material Design设计规范,指导开发者创建美观且符合用户体验的界面。同时,还会讲解如何使用RecyclerView和Adapter来实现数据列表,以及使用Fragment管理多个屏幕片段。 ...

    Android 应用开发实例

    每个Android应用都有一个重要的配置文件——AndroidManifest.xml,它记录了应用的信息、权限请求和组件声明。实例可能包含关于如何正确配置应用权限,比如网络访问、读写存储等,以及如何注册和管理活动。 三、数据...

    Smashing Android UI (Smashing Magazine Book Series)

    这些设计模式包括了导航、内容展示、输入处理等多个方面,它们是Android开发中不可或缺的设计参考。 书中还提到了如何设计出既美观又实用的界面元素,包括使用不同的组件和控件,以及如何处理颜色、字体和图标等...

    Android开发实战从学习到产品

    《Android开发实战从学习到产品》是一本专为Android开发者量身打造的指南,旨在帮助初学者和有经验的开发者全面掌握Android应用开发,并...这本书将帮助你从一个Android开发的新手成长为能够独立完成项目的专业开发者。

    Android开发应用从入门到精通.pdf

    4. Activity与Fragment:这是Android应用开发中最基础的两个概念,Activity是应用中单一屏幕的展示,而Fragment代表了Activity中的一个片段,用于更灵活的界面设计。 5. Android界面布局:包括XML布局文件的编写,...

    android利用Fragment+RadioButton实现仿微信界面UI

    它允许我们在一个活动中包含多个片段,每个片段可以看作是一个小型的Activity,有自己的生命周期和UI。在仿微信界面的设计中,我们可以用四个Fragment来分别代表微信的主页、聊天列表、发现页和个人中心等主要功能...

    AndroidNavigation,管理android嵌套片段、状态栏、工具栏的库.zip

    在Android应用开发中,有效地管理和控制界面布局,特别是涉及到嵌套片段(Nested Fragments)、状态栏(Status Bar)和工具栏(Toolbar)的交互,是一个常见的挑战。AndroidNavigation库为开发者提供了一种方便的方式来...

    Android开发之fragment之replace用法

    总之,`Fragment.replace()`是Android开发中处理动态界面的关键方法,它使得开发者能够灵活地在Activity中管理和切换不同的Fragment,提高应用的用户体验。熟练掌握`Fragment.replace()`的使用,将有助于我们构建...

    开始使用 Xamarin.Android 开发 Android 应用

    Xamarin.Android 是一个基于 .NET 的框架,允许开发者使用 C# 语言和 .NET Framework 构建高性能、原生的 Android 应用。它为开发者提供了丰富的 API 和工具集,能够与 Android 平台无缝集成。 #### 开始操作 开始...

    android开发工具包

    2. **Android API Levels**:Android操作系统有不同的版本,每个版本对应一个API级别。开发者需要根据目标设备的API级别选择合适的SDK平台进行开发,确保应用能在不同版本的Android设备上运行。 3. **Android ...

Global site tag (gtag.js) - Google Analytics