`
wx1569488408
  • 浏览: 79137 次
文章分类
社区版块
存档分类
最新评论

Android——使用Fragment实现窗口切换

 
阅读更多

1.Fragment是什么?

碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛。虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为它和活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。你甚至可以将碎片理解成一个迷你型的活动,虽然这个迷你型的活动有可能和普通的活动是一样大的。

2.Fragment的生命周期

Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。如下图,这是fragment与activity的生命周期关系:

161725_oW0Q_3508669.png

这里具体的方法不再赘述

3.使用Fragment进行窗口切换

一共有4个界面,由每个Activity对应一个Fragment,通过FragmentTransaction互相切换。

Fragment代码:

package nju.edu.futures_android.Fragment;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.support.v7.widget.RecyclerView.ViewHolder;

import com.jude.rollviewpager.RollPagerView;
import com.jude.rollviewpager.hintview.ColorPointHintView;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import nju.edu.futures_android.R;
import nju.edu.futures_android.Util.DividerItemDecoration;
import nju.edu.futures_android.Util.HomeAdapter;
import nju.edu.futures_android.Util.pagerViewAdapter;
import nju.edu.futures_android.VO.URLVO;
import nju.edu.futures_android.logic.GetURL;
import nju.edu.futures_android.logic.OnItemClickListener;

/**
 * Created by nick on 16/8/13.
 */
public class Fragment_home extends Fragment implements OnItemClickListener {
    private RollPagerView pagerView;

    private RecyclerView mRecyclerView;
    private HomeAdapter mAdapter;

    private GetURL connector ;
    private Vector<URLVO> urls;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view =inflater.inflate(R.layout.tab_home, container, false);

        getNews();

        initView(view);

        return view;
    }

    private void getNews() {
        connector = new GetURL();
        urls=connector.getURL();
    }


    public void initView(View parent){
        //滚动条
        pagerView = (RollPagerView) parent.findViewById(R.id.roll_view_pager);
        pagerView.setPlayDelay(3000);   //设置播放时间间隔
        pagerView.setAnimationDurtion(1000);//设置动画时长
        pagerView.setAdapter(new pagerViewAdapter());//设置适配器
        pagerView.setHintView(new ColorPointHintView(parent.getContext(),Color.YELLOW, Color.WHITE));

        //新闻list
        mRecyclerView = (RecyclerView)parent.findViewById(R.id.id_list_news);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(parent.getContext()));
        mAdapter = new HomeAdapter(urls);
        mAdapter.setOnItemClickListener(this);
        mRecyclerView.setAdapter(mAdapter);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(parent.getContext(),
                DividerItemDecoration.VERTICAL_LIST));

    }


    @Override
    public void onItemClick(View view, int position) {
        Intent intent = new Intent();
        intent.putExtra("url",urls.get(position).getUrl());
        intent.setAction("nju.edu.futures.news");
        startActivity(intent);
    }
}

Activity代码:

4.这样做的优势

  • FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。在Activity运行期间可以添加Fragment而不是在XML布局文件中进行定义。如果打算在Activity中改变Fragment的生命过程。如果要执行添加、删除、修改的操作,必须通过FragmentManager的对象获得一个FragmentTransaction对象,通过它的API来执行这些操作。

  • 将页面切换的代码集中在Fragment,使得Activity的类中不必管理界面切换,降低代码的耦合度,使程序更易维护。

  • 使用了Fragment以适配不同分辨率的硬件。使得应用能够适配不同的布局。

  • 对于类似Tab页面切换,如果使用Activity则需要一次性全部加载,而Fragment则不需要,降低了初始化所需要的加载时间。

转载于:https://my.oschina.net/u/3508669/blog/919515

分享到:
评论

相关推荐

    安卓Android源码——Fragment动画效果.rar

    本资源“安卓Android源码——Fragment动画效果.rar”显然是一个关于如何在Fragment切换时实现动画效果的示例代码。下面我们将详细探讨Fragment动画效果及其在Android开发中的应用。 1. **Fragment基本概念** - ...

    安卓Android源码——ViewPager+Fragment实现QQ界面.zip

    在QQ界面的实现中,每个`Fragment`通常代表一个聊天窗口或好友列表等独立的功能区域。 首先,我们需要在布局文件中添加 `ViewPager`,并设置适配器以提供页面内容。适配器通常继承自 `FragmentPagerAdapter` 或 `...

    Android Studio —— 界面切换

    总结来说,Android Studio为开发者提供了多种工具和组件来实现界面切换,从简单的Intent使用到复杂的Navigation Component和Fragment管理。开发者可以根据项目需求选择合适的策略,提升应用的用户体验。通过熟练掌握...

    安卓Android源码——级联菜单,两级菜单自定义实现提供多种方式PopWindow,Fragment引用.zip

    本文将深入探讨如何在Android平台上自定义实现这种级联菜单,主要关注使用PopWindow和Fragment进行引用的方式。 首先,让我们了解PopWindow。PopWindow是Android中的一个类,它允许开发者在屏幕上的任意位置显示一...

    安卓Android源码——抖动窗口.zip

    2. **Transition框架**:过渡(Transition)框架是Android 4.3(Jelly Bean MR2)引入的新特性,用于管理不同视图状态之间的平滑转换,如在Activity或Fragment之间切换时的动画效果。 3. **View动画**:虽然属性...

    安卓Android源码——TabActivityDemo.rar

    - 虽然TabActivity在较新的Android版本中已不再推荐使用,现在更常见的是使用Fragment和TabLayout结合ViewPager来实现类似的功能。TabActivityDemo可以帮助我们了解历史实现,但实际开发中建议采用现代的解决方案。...

    安卓Android源码——博客园客户端.zip

    《深入剖析Android源码——以博客园客户端为例》 Android作为一个开源的操作系统,其源码是开发者探索移动应用开发的宝库。博客园客户端作为一款广受欢迎的应用,其源码同样蕴含了丰富的Android开发知识。本文将从...

    Android源码——网页浏览器源码.zip

    6. **多窗口管理**:高级浏览器通常支持多个标签页,源码中会有标签页管理和切换的实现。 7. **书签功能**:书签是浏览器的重要特性,源码中会涉及书签的添加、删除、同步等功能,可能使用SharedPreferences或...

    安卓Android源码——MockDialogSample.rar

    "安卓Android源码——MockDialogSample"是一个示例项目,旨在帮助开发者理解和实践如何在Android应用中使用和自定义对话框(Dialog)。对话框在用户体验设计中扮演着重要角色,它用于向用户展示临时信息或请求用户...

    安卓Android源码——调用中的软键盘.zip

    本压缩包文件“安卓Android源码——调用中的软键盘.zip”可能包含了关于在Android应用中操作软键盘的源代码示例。 1. **软键盘的显示与隐藏** 在Android中,软键盘的显示通常与EditText等可输入文本的视图关联。当...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip

    本资源“Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip”提供了一种实现复杂界面布局的方式,下面将详细解释这两个组件以及它们在源码中的应用。 首先,TabHost是Android提供的一个用于创建带有...

    Android源码——高德地图图层效果源码.zip

    这个压缩包“Android源码——高德地图图层效果源码.zip”(实际上应该是rar文件)很可能是为了展示如何在Android应用中自定义高德地图的图层效果。下面将详细探讨Android与高德地图集成以及如何实现图层效果。 1. *...

    Android源码——完美高仿的微信源码.zip

    Fragment则用于在同一个Activity中实现多屏交互,如聊天窗口和联系人列表的切换。 3. **网络通信**:微信需要实时接收和发送消息,这依赖于高效的网络通信机制。Android中的`HttpURLConnection`或第三方库如`OkHttp...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.7z

    总结来说,虽然现代Android开发倾向于使用Fragment替代ActivityGroup,但理解TabHost和ActivityGroup的历史以及它们的工作方式对于深入学习Android系统和历史演进非常重要。通过对"Android TabHost内嵌ActivityGroup...

    Android项目之——页面特效集合(附源码).rar

    通过自定义Transition或者使用系统提供的Transition类,开发者可以为Activity切换或者Fragment的替换创建个性化的动画效果。 2. **ListView/RecyclerView滚动效果**:在长列表中,可以添加滚动头部和底部的加载动画...

    安卓Android源码——闪屏及第一次进入的介绍界面.zip

    - 使用多个Fragment:每个Fragment代表一个引导页面,通过PageTransformer实现滑动效果。 - 使用ViewPager:结合FragmentPagerAdapter,将每个引导页作为一个Fragment进行展示。 - 使用第三方库:如`androidx....

    【Android进阶】(6)Activity启动模式和窗口导航

    本文将深入探讨Activity的四种启动模式——Standard、SingleTop、SingleTask和SingleInstance,以及如何通过窗口导航实现流畅的界面切换。 **一、Activity启动模式** 1. **Standard(默认模式)** - 每次启动都会...

    Android-API合集

    这个“Android中文翻译组——Android中文API合集(3).chm”文件很可能是对Android官方文档的部分翻译,对于中文开发者来说,这是一个宝贵的资源,可以帮助他们更好地理解和使用Android API。通过深入学习和实践,...

    安卓 仿闲鱼底部栏

    在代码中,我们需要实现FragmentTransaction来管理Fragment的切换。使用FragmentManager的beginTransaction()方法开始一个新的操作序列,然后调用replace()或add()方法来替换或添加新的Fragment。最后,调用commit()...

    android 省市区三级联动选择城市控件(dialog样式)

    在Android中,Dialog是一种非模态窗口,它浮现在应用程序的主窗口之上,提供额外的信息或需要用户进行一些操作。将省市区选择做成Dialog,可以使用户无需离开当前页面就能完成选择,减少了操作步骤,提高了应用的...

Global site tag (gtag.js) - Google Analytics