Android_ViewPager

view1源代码及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/view01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个界面"/>

</LinearLayout>
package com.example.viewpager;

import android.os.Bundle;
import android.support.v4.app.Fragment;//兼容3.0以下的版本
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.view1, null);
    }
}

view2,view3,view4同上

两个适配器:

myPagerAdapter:

package com.example.viewpager;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

public class MyPagerAdapter extends PagerAdapter{
    private List<View>viewList;
    private List<String>titleList;

    public MyPagerAdapter(List<View> viewList,List<String>titleList) {
        super();
        this.viewList = viewList;
        this.titleList = titleList;
    }
    /**
     *  返回也可的数量
     */
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return viewList.size();
    }
    /**
     * View是否来自于对象
     */
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return arg0==arg1;
    }
    /**
     * 自动实例化和销毁页卡
     * 当前显示第2个界面,滑到第3个界面,就会自动实例化第四界面,销毁第一个界面
     * 实例化一个页卡
     */
    @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // TODO Auto-generated method stub
        container.addView(viewList.get(position));
        return viewList.get(position);
        }
    /**
     * 销毁一个页卡
     */
    @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // TODO Auto-generated method stub
        container.removeView(viewList.get(position));
    }
    /**
     * 设置viewPager页卡标题
     *
     */
    @Override
    public CharSequence getPageTitle(int position) {
        // TODO Auto-generated method stub
        return titleList.get(position);
    }
}

myFragmentPagerAdapter:

package com.example.viewpager;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
 * FragmentPagerAdapter
 * 该类没有自动创建和自动销毁的功能
 *
 * FragmentStatePagerAdapter
 * 有自动创建和销毁页卡的功能
 * 需重写instantiateItem();destroyItem();
 *
 *
 */
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
    private List<Fragment> fragmentList;
    private List<String> titleList;

    public MyFragmentPagerAdapter(FragmentManager fm,
            List<Fragment> fragmentList, List<String> titleList) {
        super(fm);
        this.fragmentList = fragmentList;
        this.titleList = titleList;
    }
    @Override
    public CharSequence getPageTitle(int position) {
        // TODO Auto-generated method stub
        return titleList.get(position);
    }
    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        return fragmentList.get(arg0);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return fragmentList.size();
    }

}

主程序xml文件:

<LinearLayout 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.viewpager.MainActivity" >

   <android.support.v4.view.ViewPager
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:id="@+id/pager"
       >
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/strip"
             android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="top"
            >
            <!-- 子标签 ,显示标题
            android.support.v4.view.PagerTabStrip
            android.support.v4.view.PagerTitleStrip
            -->
        </android.support.v4.view.PagerTabStrip>
   </android.support.v4.view.ViewPager>
</LinearLayout>

源代码:

package com.example.viewpager;
/*    ViewPager可以使视图滑动
 *     ViewPager可以看做一个装载view对象或fragment的一个集合
 * 加载显示的页卡
     *     将layout布局转化为view对象和
     *     (1)LayoutInflater if = getLayoutInflater().from(this);
     *         if.inflate(resouce,root);
     *     (2)View.inflate(context,resouce,root);
     *
     * 配置适配器:
     * (1)PagerAdapter 数据源:List<View>
     * (2)FragmentPagerAdapter 数据源:List<Fragment>
     * (3)FragmentStatePagerAdapter 数据源:List<Fragment>
     监听器的使用
         OnPageChangeListener()
         --用来监控ViewPager滑动到第几页
 *
 */
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements OnPageChangeListener{

    private List<View> viewList;
    private ViewPager pager;
    private PagerTabStrip strip;
    private List<String> titleList;
    private PagerTabStrip tab;
    private List<Fragment> fragmentList;

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewList = new ArrayList<View>();
        titleList = new ArrayList<String>();

        /**
         * 通过View对象作为ViewPager的数据源
         */
        View view1 = View.inflate(this, R.layout.view1, null);
        View view2 = View.inflate(this, R.layout.view2, null);
        View view3 = View.inflate(this, R.layout.view3, null);
        View view4 = View.inflate(this, R.layout.view4, null);

        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);

        //为ViewPager设置标题
        titleList.add("第一页");
        titleList.add("第二页");
        titleList.add("第三页");
        titleList.add("第四页");

        //为PagerTabStrip设置属性
        tab = (PagerTabStrip) findViewById(R.id.strip);
        tab.setBackgroundColor(Color.BLACK);
        tab.setTextColor(Color.YELLOW);
        tab.setDrawFullUnderline(false);

        //创建PagerAdapter的适配器
        MyPagerAdapter adapter = new MyPagerAdapter(viewList,titleList);
        //加载适配器
        pager = (ViewPager) findViewById(R.id.pager);
    //    pager.setAdapter(adapter);

        //通过Fragment对象最为ViewPager的数据源
        fragmentList = new ArrayList<Fragment>();
        fragmentList.add(new Fragment1());
        fragmentList.add(new Fragment2());
        fragmentList.add(new Fragment3());
        fragmentList.add(new Fragment4());
        //创建FragmentPagerAdapter的适配器
        MyFragmentPagerAdapter fragmentAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, titleList);
        pager.setAdapter(fragmentAdapter);

        //设置监听器
        pager.setOnPageChangeListener(this);;

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "当前是第"+(arg0+1)+"个界面", Toast.LENGTH_SHORT).show();
    }

}
时间: 2024-08-25 20:12:40

Android_ViewPager的相关文章

android千变万化的ViewPager之三

前面我们学习了怎么了ViewPager添加动画效果,今天我来说下怎么自定义动画效果 首先我们理解系统给我们的那两个类.我这里贴上去一个 1 public class ZoomOutPageTransformer implements PageTransformer { 2 private static final float MIN_SCALE = 0.85f; 3 private static final float MIN_ALPHA = 0.5f; 4 5 public void tran

android千变万化的ViewPager之四

今天,我们来看看自定义ViewPager. 首先,我们得知道自定义View得在原来的View的基础上.因此,如果我们想自定义ViewPager,必须继承原来的ViewPager. 那么我们为什么要自定义View呢?因为我们可以在自定义的ViewPager上添加动画效果. 1.获得左页面和右页面 在ViewPager中,我们怎么准确的获得左页面和右页面呢? 在一个自定义的ViewPager当中,我们会重写这个protected void onPageScrolled(int position, f

android千变万化的ViewPager之一

相信大家对ViewPager并不陌生,ViewPager就是起一个View切换的作用.今天我来给大家说下,怎么不同地使用ViewPager. 一.原来的Viewpager 以前,我是这么使用ViewPager,就在一个Activity上设置ViewPager,可以通过手指的滑动来切换不同View,我又在每一份View上加上不同的功能,这样就能实现了,多功能糅合在一个Activity上. 二.现在的ViewPager 我们平时在使用很多的app应用时,会有一个小细节,就是很多的app在进去时,都有

android千变万化的ViewPager之二

之一已经说了,怎么实现图片的切换.这里我说下怎么给切换的动画添加动画,对!你没听错,我们要给ViewPager加动画了. 首先贴上源代码代码 1 package com.example.android_viewpager; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.sup

Android左右滑动滚屏的实现

现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow   一.ViewPager 官方文档介绍:http://developer.android.com/reference/android/support/v4/

Android切换动画之ViewPager

有过开发经验的程序员都知道这个效果,就是当我们第一次安装一个软件时有一个使用说明的图片切换效果,他是如何实现的呢?今天我们就一起学习一下吧,难度系数1.0,就是只要你仔细分析,都可以学会.废话不多说,下面我们开始本篇的介绍. 本篇我需要使用到ViewPager,对于ViewPager的介绍,就不再详述,网上关于ViewPager的介绍很多,大家可以自行去了解. 再进行动画效果制作之前我们先实现一个图片的切换效果. 布局文件: <RelativeLayout xmlns:android="h

Android中三种超实用的滑屏方式汇总(转载)

Android中三种超实用的滑屏方式汇总 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow 一.ViewPager 官方文档介绍:http://developer.android.com/reference/

【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)

现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow   一.ViewPager 官方文档介绍:http://developer.android.com/reference/android/support/v4/