android之ViewPager

在android中ViewPager是非常常用的控件。它在android.support.v4.view.ViewPager下。你们自己可以进http://developer.android.com/reference/android/support/v4/view/package-summary.html

进行了解与学习。

下面是我自己写的一个测试的viewpager。代码如下

/**   
 * @Title: HelpActivity.java 
 * @Package com.konka.Home 
 * @version V1.0   
 */
package com.example.help;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsoluteLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

/**
 * @ClassName: HelpActivity
 * @author llb
 * 
 */
public class HelpActivity extends Activity implements OnClickListener,
        OnPageChangeListener {
    private static final String TAG = HelpActivity.class.getSimpleName();
    private ViewPager viewPager;
    private ArrayList<View> pageViews;
    private ViewGroup main, group;
    private ImageView[] dots;
    private ImageButton imgbtn;
    private int currentIndex;
    private ViewPagerAdapter vpAdapter;
    private ImageView imageView;
    private static final int GO_BTN = 10;
    private static final int[] help_pics = { R.drawable.guide0,
            R.drawable.guide1, R.drawable.guide2, R.drawable.guide_cooperate };

    /** 
     * @param savedInstanceState
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        pageViews = new ArrayList<View>();
        LayoutInflater inflater = getLayoutInflater();
        main = (ViewGroup) inflater.inflate(R.layout.help, null);
        LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        for (int i = 0; i < help_pics.length; i++) {
            RelativeLayout rl = new RelativeLayout(this);
            rl.setLayoutParams(mParams);
            rl.setBackgroundResource(help_pics[i]);
            if (i == (help_pics.length - 1)) {
                imgbtn = new ImageButton(this);
                imgbtn.setBackgroundResource(R.drawable.help_go_btn_selector);
                imgbtn.setOnClickListener(this);
                imgbtn.setTag(GO_BTN);
                RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.WRAP_CONTENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
                lp1.bottomMargin = 80;
                lp1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                lp1.addRule(RelativeLayout.CENTER_HORIZONTAL,
                        RelativeLayout.TRUE);
                rl.addView(imgbtn, lp1);
            }
            pageViews.add(rl);

        }
        /*
         * RelativeLayout rl = new RelativeLayout(this);
         * rl.setLayoutParams(mParams); pageViews.add(rl);
         */
        group = (ViewGroup) main.findViewById(R.id.viewGroup);
        viewPager = (ViewPager) main.findViewById(R.id.guidePages);
        vpAdapter = new ViewPagerAdapter(pageViews);
        viewPager.setAdapter(vpAdapter);

        viewPager.setOnPageChangeListener(this);

        initDots();
        setContentView(main);

    }

    private void initDots() {
        // TODO Auto-generated method stub
        dots = new ImageView[help_pics.length];
        for (int i = 0; i < help_pics.length; i++) {
            imageView = new ImageView(HelpActivity.this);
            imageView.setLayoutParams(new LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT));
            imageView.setMaxHeight(20);
            imageView.setMaxWidth(40);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setAdjustViewBounds(true);
            imageView.setPadding(10, 0, 10, 0);
            imageView.setImageResource(R.drawable.dot);
            dots[i] = imageView;
            dots[i].setEnabled(false);
            dots[i].setTag(i);
            dots[i].setOnClickListener(this);
            group.addView(dots[i]);
        }
        currentIndex = 0;
        dots[currentIndex].setEnabled(true);
    }

    private void setCurView(int position) {
        if (position < 0 || position >= help_pics.length) {
            return;
        }
        viewPager.setCurrentItem(position);
    }

    private void setCurDot(int positon) {
        if (positon < 0 || positon > help_pics.length - 1
                || currentIndex == positon) {
            return;
        }
        dots[positon].setEnabled(true);
        dots[currentIndex].setEnabled(false);
        currentIndex = positon;
    }

    public class ViewPagerAdapter extends PagerAdapter {

        private List<View> views;

        public ViewPagerAdapter(List<View> views) {
            this.views = views;
        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView(views.get(arg1));
        }

        @Override
        public void finishUpdate(View arg0) {
            // TODO Auto-generated method stub

        }

        public int getCount() {
            if (views != null) {
                return views.size();
            }

            return 0;
        }

        // 锟斤拷始锟斤拷arg1位锟矫的斤拷锟斤拷
        public Object instantiateItem(View arg0, int arg1) {

            ((ViewPager) arg0).addView(views.get(arg1));

            return views.get(arg1);
        }

        public boolean isViewFromObject(View arg0, Object arg1) {
            return (arg0 == arg1);
        }

        public void restoreState(Parcelable arg0, ClassLoader arg1) {
            // TODO Auto-generated method stub

        }

        public Parcelable saveState() {
            // TODO Auto-generated method stub
            return null;
        }

        public void startUpdate(View arg0) {
            // TODO Auto-generated method stub

        }

    }

    /**
     * 
     * @param arg0
     * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrollStateChanged(int)
     */
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub
    }

    /**
     * (锟斤拷 Javadoc) Title: onPageScrolled Description:
     * 
     * @param arg0
     * @param arg1
     * @param arg2
     * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrolled(int,
     *      float, int)
     */
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub
    }

    /**
     * 
     * @param arg0
     * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageSelected(int)
     */
    public void onPageSelected(int arg0) {
        // TODO Auto-generated method stub
        /*
         * if(arg0 == pageViews.size()-1){ viewPager.setCurrentItem (arg0 - 1);
         * ToHome(); return; }
         */

        setCurDot(arg0);
    }

    /**
     * (锟斤拷 Javadoc) Title: onClick Description:
     * 
     * @param v
     * @see android.view.View.OnClickListener#onClick(android.view.View)
     */
    public void onClick(View v) {
        // TODO Auto-generated method stub
        int position = (Integer) v.getTag();
        if (position == GO_BTN) {
            ToHome();
        } else {
            setCurView(position);
            setCurDot(position);
        }
    }

    public void ToHome() {
        
         Intent intentHome = new Intent(HelpActivity.this, HomeActivity.class);
         HelpActivity.this.startActivity(intentHome);
         finish();


         
    }

    /**
     * 
     * @param keyCode
     * @param event
     * @return
     * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)
     */
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        finish();
        return super.onKeyDown(keyCode, event);
    }
}

主布局如下

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

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

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/viewGroup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="10dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >       
        </LinearLayout>
    </RelativeLayout>

</FrameLayout>

测试结果如下

如果有什么问题请留言,相互学习是自己提高和伙伴们共同的结果与积金。

 

posted on 2013-11-08 11:26  jianrong.zheng  阅读(329)  评论(0编辑  收藏  举报

导航