zoukankan      html  css  js  c++  java
  • ViewPager的简单使用

    ViewPager简单介绍:

    很多主流的手机应用,当用户首次安装或者更新时,都会出现三四页的引导页,主要用来介绍应用的功能或者新增特效。

    引导页就可以通过ViewPager来实现,下面就给读者介绍一种ViewPager最简单基本的用法。


    这里简单模仿FlipBoard的引导页,效果图见文章结尾。

    首先需要创建引导页的Activity 名为Guide.java 继承自 Activity。

    关键代码如下:

     1 public class Guide extends Activity{
     2     private ViewPager vp;
     3     private ViewPagerAdapter vpAdapter;
     4     private List<View> views;
     5     
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.guide);
    10         initViews();
    11     }
    12     
    13     private void initViews() {
    14         LayoutInflater inflater = LayoutInflater.from(this);
    15         views = new ArrayList<View>();
    16         views.add(inflater.inflate(R.layout.fbone, null));
    17         views.add(inflater.inflate(R.layout.fbtwo, null));
    18         views.add(inflater.inflate(R.layout.fbthree, null));
    19         views.add(inflater.inflate(R.layout.fbfour, null));
    20         
    21         vpAdapter = new ViewPagerAdapter(views, this);
    22         vp = (ViewPager)findViewById(R.id.viewpager);
    23         vp.setAdapter(vpAdapter);
    24     }
    25 }

    若想使用ViewPager 需要我们写一个Adapter 名为ViewPagerAdapter 继承自 PagerAdapter。

    在这个Adapter内需要简单重写父类的部分方法。

    方法 destroyItem 和 instantiateItem 就是我选择重写的。

    关键代码如下:

     1 public class ViewPagerAdapter extends PagerAdapter {
     2     
     3     private List<View> views;
     4     private Context context;
     5     
     6     public ViewPagerAdapter(List<View> views, Context context) {
     7         super();
     8         this.views = views;
     9         this.context = context;
    10     }
    11 
    12     @Override
    13     public int getCount() {    
    14         return views.size();
    15     }
    16     
    17     @Override
    18     public void destroyItem(ViewGroup container, int position, Object object) {
    19         container.removeView(views.get(position));
    20     }
    21     
    22     @Override
    23     public Object instantiateItem(ViewGroup container, int position) {
    24         container.addView(views.get(position));
    25         return views.get(position);
    26     }
    27 
    28     @Override
    29     public boolean isViewFromObject(View view, Object obj) {        
    30         return (view==obj);
    31     }
    32 
    33 }

    java代码如上述,下面简单介绍xml代码。

    前文已经讲述引导页的java代码,对应需要创建一个xml 名为guide.xml。

    此处需要注意必须正确导入android.support.v4包,新版本的ADT自带。

    代码如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent" >
     5     
     6     <android.support.v4.view.ViewPager
     7         android:id="@+id/viewpager"
     8         android:layout_width="match_parent"
     9         android:layout_height="match_parent"
    10         android:background="#000000"> 
    11     </android.support.v4.view.ViewPager>    
    12 
    13 </RelativeLayout>

    写到此处框架就基本完成,只需要我们往里面添加每张引导页的视图。

    在上文的Gude.java中的初始化视图方法initViews()中可以看出,我往里面添加了四个布局文件。

    下面就只贴出其中一个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" >
        
        <ImageView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/fbone"/>
    
    </LinearLayout>

    尾注 为了简单调试 我修改了Android.Manifest.xml 将程序入口的Activity设为Guide。

    效果图如下:



    转载请注明出处:http://www.cnblogs.com/michaelwong/p/4114947.html

  • 相关阅读:
    反射、面向对象(基础篇)
    配置文件
    模块补充 、迭代器和 生成器
    模块
    正则表达式
    冒泡排序、递归和简单装饰器
    使用Apache Archiva管理Maven仓库
    AppScan9.0.3.5漏洞扫描记录
    Linux环境下安装Websphere8.5.5
    如何排查网络通讯状况
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114947.html
Copyright © 2011-2022 走看看