【Android发展】它Fragment发展1

    一直知道Fragment非常强大。可是一直都没有去学习,如今有些空暇的时间,所以就去学习了一下Fragment的简单入门。我也会把自己的学习过程写下来,假设有什么不足的地方希望大牛指正,共同进步。

  一、Fragment简单介绍

    1.Fragment作为Activity界面的一部分组成出现;

    2.能够在一个Activity中同一时候出现多个Fragment,而且,一个Fragment亦可在多个Activity中使用;

    3.在Activity执行过程中,能够加入、移除或者替换Fragment(add()、remove()、replace());

    4.Fragment能够响应自己的输入事件,而且有自己的生命周期,当然。它们的生命周期直接被其所属的activity的生命周期影响。

    那我们为什么要用Fragment呢?主要目的是用在大屏幕设备上--比如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有很多其它的空间来放很多其它的UI组件,而且这些组件之间会产生很多其它的交互。我们能够把Fragment觉得是“小的Activity”。Fragment更加简洁。

  二、Fragment的简单使用

    那我们就简单的显示2个Fragment为例来解说一下。

    

    1.在XML中加入Fragment:

      新建Fragment1、Fragment2(注意:这里可能有2个包能够选择导入android.app.Fragment或android.support.v4.app.Fragment都是能够的,我这里选择使用了前者。可是两者使用时有差别的,在结尾中我会讲到):

      Fragment1代码:

package com.example.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.fragmentdemo.R;

public class Fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        Log.e("TAG", "in");
        return inflater.inflate(R.layout.fragment1, container, false);
    }
}

      Fragment2代码:

package com.example.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.fragmentdemo.R;

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment2, container, false);
    }
}

      Fragment1的xml代码:

<?

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF69B4"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="这是第一个Fragment" />

</LinearLayout>

      Fragment2的xml代码:

<?xml version="1.0" encoding="utf-8"?

>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#EECBAD"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="这是第二个Fragment" />

</LinearLayout>

      我们在activity_main.xml中加入两个Fragment。代码例如以下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false" >

    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.fragment.Fragment1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <fragment
        android:id="@+id/fragment2"
        android:name="com.example.fragment.Fragment2"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>

      MainActivity代码例如以下:

package com.example.fragmentdemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

      然后执行project就能够显示Fragment了。以下是效果图。

    

      

    2.动态加入Fragment:

      我们仅仅须要改动MainActivity和activity_main.xml中的代码就能够了。

      activity_main.xml代码:                 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" />

</LinearLayout>

      MainActivity代码:

package com.example.fragmentdemo;

import android.app.Activity;
import android.os.Bundle;

import com.example.fragment.Fragment1;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getFragmentManager().beginTransaction()
                .replace(R.id.main, new Fragment1()).commit();
    }
}

      然后执行project就能够动态的显示Fragment了,以下是效果图。

三、app包下和V4包下的Fragment的差别

1、尽量不要用app包中的fragment。由于这个是在3.0之后才有的,支持的版本号太高,在低版本号中是是用不了的;

    2、android.support.v4.app.Fragment:能够兼容到1.6的版本号。

    3、关于这两个fragment使用<fragment>标签的问题:

    (1)app.fragment和v4.fragment都是能够使用<fragment>标签的仅仅是在在使用的时候假设是app.fragment则没有什么特殊的地方继承Activity就可以。

    (2)当v4.fragment使用<fragment>标签的时候就要特别注意了:当这个Activity的布局中有<fragment>标签的时候,这个Activity必须继承FragmentActivity,否则就会报错。

此时假设不卜继成FragmentActivity的话
编译系统会把<fragment>觉得是app包中的Fragment来处理。可是此时我们导入的是v4包中的FragmentAndroid官方文档中的Fragment的样例就是以app包中的Fragment来解说的。

            (3)app包中关于Fragment的类和方法在V4包中都是有相应的相应的。

    转载自:http://blog.csdn.net/a465456465/article/details/10415211,感谢。

    上面就是Fragment的简单用法,Demo下载,下一节我会讲Fragment的具体使用。欢迎关注。我的博客园地址:http://www.cnblogs.com/getherBlog/p/3943547.html

时间: 2024-10-12 23:34:11

【Android发展】它Fragment发展1的相关文章

Android开发环境的发展演变调研

Android开发环境的发展演变调研 前几年比较多的方法是用JDK+eclipse+ADT,该方法除了要配置JDK的路径之外, 还要在eclipse里面打开SDK Manage进行相应的操作.不过近两年来,因为google退出中国市场,要想完成这个操作非常复杂,需要去把所需的材料另外下载,再通过在eclipse里面导入相应的压缩包.除此之外,还存在一个问题:ADT的版本还要与SDK的版本相协调,也就是说,两者只要一个更改,那么必须对另外一个进行调整,否则无法正常打开AVD.(这些都是本人在第一次

青龙大厅源码出租Android的开发生态系统发展迅速

前言Android的开发生态系统发展迅速,在开发Android的几年的时间里,用来构建Android应用的架构与技术一直在不断进化.青龙大厅源码出租(h5.hxforum.com)企鹅2952777280 源码出售 房卡出售 后台出租随着项目的不断更新迭代,应用的架构也有不一样的变化.由于开发人员的数量.项目的业务复杂度.需求的开发时间.应用的使用量级,使用的技术架构也不相同.没有最好的架构,只有最合适的.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发

h5房卡牛牛源码Android的开发生态系统发展迅速

Android的开发生态系统发展迅速,在开发Android的几年的时间里,h5房卡牛牛源码-网站httl:\h5.hxforum.com 企鹅2952777280用来构建Android应用的架构与技术一直在不断进化.随着项目的不断更新迭代,应用的架构也有不一样的变化.由于开发人员的数量.项目的业务复杂度.需求的开发时间.应用的使用量级,使用的技术架构也不相同.没有最好的架构,只有最合适的.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

Android的渊源、发展过程和发展趋势

Android的渊源和发展过程: 说起Android,就不得不提Andy Rubin,也就是所谓的“Android之父”.早在2003年,Andy Rubin就同其他三位创始人成立了“Android公司”,开发一种基于数码相机的系统,这便是Android的雏形. 随后,Android转而开发手机操作系统,并于2005年被谷歌收购,Rubin和其他创始人留在谷歌,开始了真正意义上的智能手机操作系统开发.此时,Android系统的方向已经确定,比如基于Linux.开源.免费供手机厂商使用等等,谷歌则

Android -- TabHost、Fragment、状态保存、通信

工程结构                                                                                       TabAFm到TabEFm都是Fragment,并且每个Fragment对应一个布局文件. TabAFm.java                                                                             package com.yydcdut.tabho

Android编程之Fragment动画加载方法源码详解

上次谈到了Fragment动画加载的异常问题,今天再聊聊它的动画加载loadAnimation的实现源代码: Animation loadAnimation(Fragment fragment, int transit, boolean enter, int transitionStyle) { 接下来具体看一下里面的源码部分,我将一部分一部分的讲解,首先是: Animation animObj = fragment.onCreateAnimation(transit, enter, fragm

Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常

在为Fragment做切换动画,启动后遇到了一个异常: Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator 截图如下: 我的代码如下: fragment = Fragment.instantiate(getActivity(), clz.getName()); fragment.setArguments(args); ft.setCustomAnimations(R.animator.frag

android ViewPager 与Fragment

ViewPager 左右滑动数据显示 1. 整体布局 FragmentLayout 容器包裹Fragment <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to

[转]Android Activity和Fragment的转场动画

Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, int exitAnim)实现的. 这个方法是API Level 5 加入的. 这个方法在startActivity(Intent) or finish()之后被调用,指定接下来的这个转场动画. 方法的第一个参数:enterAnim,是新的Activity的进入动画的resource ID: 第二