viewpager的简单使用

来源:互联网 发布:光大证券交易软件下载 编辑:程序博客网 时间:2024/03/29 01:29
作为一个新手,有幸有机会到公司实习,在公司里好好取经吧。在项目中初次接触viewpager,在网上找了东东,在这里粘贴一下。以便以后查看。
         viewpage可以做简单的导航,到页面菜单,可以使用视图滑动,实现像lanucher左右滑动等等,类似listview,也需要个适配器pageradapter.
      使用viewpager只有有四个步骤:
        1.在布局文件中加入控件viewpager,这个组件,注意这个组件是用来显示左右滑动的界面的,如果不加载xml布局文件,他是不会显示内容的
        2.加载要显示的页卡
          3.
viewpager组件设定一个page适配器,它是基类提供适配器来填充页面ViewPager内部,你很可能想要使用一个更具体的实现,如FragmentPagerAdapter                  FragmentStatePagerAdapter。
       4.给viewpager添加OnPageChangeListener事件来实现切换的动画等功能(这一步不是必须的)

      通常情况下:
viewpager和frament经常一起使用,谷歌也是这样说的。
        简单 介绍下片段frament :注意在导入  android.support.v4            
               1.frament作为activity界面的一部分组成出现。
               2.可以一个activity界面同时出现对个frament,并且一个frament也可以再多个activity中使用
               3.在activity运行中可以动态添加,移除,替换frament
               4.frament可以响应自己的输入事件,并且有自己的生命周期,不过他的生命周期要被宿主activity的生命周期影响。
             frament的生命周期介绍和使用操作见:
            http://blog.csdn.net/aomandeshangxiao/article/details/7671533
            http://www.cnblogs.com/xinye/archive/2012/08/28/2659712.html


   下面是我在网上找到的一个例子,是frament和viewpager一起使用实现qq界面,效果对我们这些新手来说还不错。。
   来自:http://www.apkbus.com/android-88510-1-1.html

  按照步骤使用viewpager
   1.在布局文件引入控件viewpager
复制内容到剪贴板
代码:
<android.support.v4.view.ViewPager
        android:id="@+id/vPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1.0"
        android:background="#000000"
        android:flipInterval="30"
        android:persistentDrawingCache="animation" />
    <!--  android:persistentDrawingCache="animation" 定义绘图的高速缓存的持久性。 绘图缓存可能由一个 ViewGroup 在特定情况下为其所有的子类启用,
    例如在一个滚动的过程中。 此属性可以保留在内存中的缓存后其初始的使用。 坚持缓存会消耗更多的内存,但可能会阻止频繁的垃圾回收是反复创建缓存。 默认情况下持续存在设置为滚动 -->
2.加载要显示的页卡
复制内容到剪贴板
代码:
Fragment activityfragment = TestFragment.newInstance("Hello Activity.");//这里使用单例模式,详情见源码
        Fragment groupFragment = TestFragment.newInstance("Hello Group.");//TestFrament继承frament的
Fragment friendsFragment=TestFragment.newInstance("Hello Friends.");
        Fragment chatFragment=TestFragment.newInstance("Hello Chat.");

        fragmentsList.add(activityfragment);
        fragmentsList.add(groupFragment);
        fragmentsList.add(friendsFragment);
        fragmentsList.add(chatFragment);
MyFragmentPagerAdapter adapter=new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList));
3.
viewpager组件设定一个page适配器,这里使用了
FragmentPagerAdapter
复制内容到剪贴板
代码:
mPager.setAdapter( adapter);
4.给viewpager添加OnPageChangeListener事件
复制内容到剪贴板
代码:
public class MyOnPageChangeListener implements OnPageChangeListener {

        @Override
        public void onPageSelected(int arg0) {
            Animation animation = null;
            switch (arg0) {
            case 0:
                if (currIndex == 1) {
                    animation = new TranslateAnimation(position_one, 0, 0, 0);
                    tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 2) {
                    animation = new TranslateAnimation(position_two, 0, 0, 0);
                    tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 3) {
                    animation = new TranslateAnimation(position_three, 0, 0, 0);
                    tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
                }
                tvTabActivity.setTextColor(resources.getColor(R.color.white));
                break;
            case 1:
                if (currIndex == 0) {
                    animation = new TranslateAnimation(offset, position_one, 0, 0);
                    tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 2) {
                    animation = new TranslateAnimation(position_two, position_one, 0, 0);
                    tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 3) {
                    animation = new TranslateAnimation(position_three, position_one, 0, 0);
                    tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
                }
                tvTabGroups.setTextColor(resources.getColor(R.color.white));
                break;
            case 2:
                if (currIndex == 0) {
                    animation = new TranslateAnimation(offset, position_two, 0, 0);
                    tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 1) {
                    animation = new TranslateAnimation(position_one, position_two, 0, 0);
                    tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 3) {
                    animation = new TranslateAnimation(position_three, position_two, 0, 0);
                    tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));
                }
                tvTabFriends.setTextColor(resources.getColor(R.color.white));
                break;
            case 3:
                if (currIndex == 0) {
                    animation = new TranslateAnimation(offset, position_three, 0, 0);
                    tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 1) {
                    animation = new TranslateAnimation(position_one, position_three, 0, 0);
                    tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));
                } else if (currIndex == 2) {
                    animation = new TranslateAnimation(position_two, position_three, 0, 0);
                    tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));
                }
                tvTabChat.setTextColor(resources.getColor(R.color.white));
                break;
            }
            currIndex = arg0;
            animation.setFillAfter(true);
            animation.setDuration(300);
            ivBottomLine.startAnimation(animation);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
viewpager.setOnPageChangeListener(new MyOnPageChangeListener());
MyOnPageChangeListener监听器主要实现条目切换的动画。

工程代码见:http://www.apkbus.com/android-88510-1-1.html

原创粉丝点击