在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>
测试结果如下
如果有什么问题请留言,相互学习是自己提高和伙伴们共同的结果与积金。