ViewPager+Fragment简单讲解

对于加载多个视图的容器,一般来说都是需要用Adapter来让系统自动加载,因为方便。不然自己写代码一个一个的加载那多麻烦啊,对吧?

同样,对于ViewPager,它也是加载多个视图的,因此也需要有对应的Adapter来进行视图的加载。

关于Adapter,是连通数据和视图容器的桥粱。Adapter根据数据生成一个视图,Adapter对视图容器的作用是加载对应的视图进去容器中。(我个人习惯喜欢把装载多个视图的控件成为容器)

MainActivity代码:

package com.example.viewpagerdemo;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

	private ViewPager viewPager;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
		viewPager = (ViewPager)findViewById(R.id.viewPager);
		FragmentManager manager = getSupportFragmentManager();
		//框架的pagerAdapter主要是两种Adapter,第一是FragmentStatePagerAdapter,第二是FragmentPagerAdapter
		//两种adapter的区别是第一种对不需要的Fragment摧毁掉,第二种只摧毁视图,实例依然保存在FragmentManager中,
		//爱使用哪种根据实际情况决定

		viewPager.setAdapter(new FragmentStatePagerAdapter(manager) {

			//在两种adapter中都必须要覆盖getCount和getItem方法。
			//getCount()里返回的是框架的总个数
			@Override
			public int getCount() {
				return 3;
			}

			//在getItem()中返回的是对应位置的框架
			@Override
			public Fragment getItem(int position) {
				//根据position生成3个略有区别的框架,看起来效果明显点
				return new FragmentDemo(position);
			}
		});
	}
}
</pre><p></p><p><span style="font-size:24px; color:#ff0000"><span style="background-color:rgb(255,255,255)">构建框架的代码FragmentDemo:</span></span></p><p></p><pre name="code" class="java">package com.example.viewpagerdemo;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class FragmentDemo extends Fragment{
	private String text;
	int[] color_res = {Color.RED,Color.GREEN,Color.BLUE};
	private int colorint;

	public FragmentDemo(int fragmentNumber){
		this.text = "框架"+fragmentNumber;
		//颜色的id值
		colorint = color_res[fragmentNumber];
	}

	@Override
	public View onCreateView(LayoutInflater inflater,
			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.fragment_demo,container,false);
		TextView textView = (TextView)view.findViewById(R.id.textView);
		textView.setText("框架"+text);
		textView.setBackgroundColor(colorint);

		return view;
	}
}

MainActivity对应的xml:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.viewpagerdemo.MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

        />

</RelativeLayout>

框架的xml:fragment_demo.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:orientation="vertical" >
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="32sp"
        />

</LinearLayout>

演示的结果图:

时间: 2024-09-29 21:04:07

ViewPager+Fragment简单讲解的相关文章

Android实习札记(8)---ViewPager+Fragment实例详解

Android实习札记(8)---ViewPager+Fragment实例讲解 --转载请注明出处:coder-pig 在札记(5)中我们就说过要弄一个模仿微信页面切换的东东,就是ViewPager+Fragment 实现的一个东西,札记(6)中也学习了一下ViewPager的一些基本用法,本节就来将两者 结合以实现我们想要的效果! 1.ViewPager关于Fragment的说法? 先看下Google官网怎么说: 大概意思就是: ViewPager更多的时候是与Fragment协同使用,这样可

viewpager+fragment的懒加载实现微信点击和滑动切换功能(切换效果)

前言 1.从上一片文章之后已经半年没有写文章了,那篇文章之后公司进入疯狂的加班,一直到放年假.年后回来之后换了一家创业公司之后,然后又进入疯狂的加班(≧﹏ ≦) -所以一直都没有写文章(其实这都是借口⊙﹏⊙).现在公司没有那么忙了,也该把文章捡起来了,这毕竟是百利有一害的事(一害:费时间). 2.这半年里除了对代码的热情更加高涨(虽然它总是虐我千百遍(≧﹏ ≦) ),还深深的中了爬山的毒,对于年轻的我来说,爬山让我明白了许多.懂得了许多,也锻炼了我的身体.对于程序员来说身体是非常重要的,大家在周

浅析viewpager&amp;Fragment&amp;FragmentActivity

Fragment相信写Android的大家都懂吧,因为刚开始接触的时候没有,所以一直使用Activity偶尔使用Fragment和FragmentActivity,但是由于需求的原因,楼主不得不去深刻的理解Fragment,因为有的东西是Activity实现不了的,算是被动去深入理解新事物吧,这个习惯不是很好,估计是因为不理解他的好的方面吧,当初很排斥去使用他,不过现在感觉这货配合这ViewPager真的很好用,既能简化代码,又能降低程序的耦合性,用起来确实很顺手很方便.好了,老规矩,上代码 我

android控件篇:ViewPager+Fragment+GridView的使用(与AndroidQuery框架结合)

最近看了一个AndroidQuery的框架,里面的Demo,有个界面,让博主很喜欢.左右滑动十分顺畅,手感很好,于是拿来和大家分享一下.先看一下效果图: 从图中可以看出,上面的布局是一个Layout里面嵌套有个ViewPager,ViewPager中包含着Fragment,Fragment的布局文件包含了一个简单的GridView,GridView的Item布局很简单,就是一个100*100大小的图片.好啦,先说这么多,然后咱们看代码吧. 最外层Activity的布局文件 <?xml versi

Android ViewPager + Fragment的布局

ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html 2.这里用ViewPager+Fragment做个导航界面: 效果图如下: 3.对实现的思路进行一个简单的介绍: 上面的导航菜单里面的选项卡的总长度是超过了屏幕的,所以用了一个自定义HorizontalScrollView,在自定义HorizontalScrollView中加了两个箭头的图片根据滚动

android项目剖解之ViewPager+Fragment 实现tabhost效果

项目中需要用到底栏导航栏,滑动或者点击会切换上面的视图,如图: 这个效果使用Viewpager+Fragmen实现是主流方案,加入你之前对fragment不太了解,可以先看android之Fragment(官网资料翻译) 整个文件如下: 好了废话少说,先上布局文件:main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sche

一起来搭App框架(侧滑与toolbar联动+选项卡(viewpager+fragment+radiogruop)+optionMenu)

1.概述 最近在学车,抽着空写了一个常用的App框架,可惜不会制作gif图片,请忽略录屏软件的那个浮动窗口,要是有更好的方式制作gif麻烦告知下提前感谢,效果图如下,凑合着看下吧. 主要实现了 [1]使用RadioGroup处理选项卡优化布局 [2]使用ToolBar跟侧滑图表联动,效果更好 [3]集合了viewerPager+fragment,drawerlayout+toolbar,optionmenu以及circleImageView处理头像等功能 一般app项目应该可以应付了.下面说下实

Android ViewPager+Fragment滑动选项卡,tab点击选项卡

有一段时间一直再研究这个,自Android 3.0以后,很少开发者再用以前的TabWidget控件了.那种效果不是很好,也不能滑动.后来陆续出现了各种各样滑动选项卡,每种的出现都各有优势吧.但我还是推荐ViewPager+Fragment滑动选项卡,tab点击选项卡.因为横屏或者竖屏效果都还不错,针对这种效果,还有一种开源框架的出现.接下来会有所介绍. 转载请注明出处:http://blog.csdn.net/qq_16064871 本文demo下载:请点击 一.ViewPagerActivit

转:ViewPager+Fragment基本使用方法(附源码)

ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料 首先在activity_main.xml布局文件中加入ViewPager组件 查看文本打印? <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent&qu