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 = ;
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 = ; i < help_pics.length; i++) {
RelativeLayout rl = new RelativeLayout(this);
rl.setLayoutParams(mParams);
rl.setBackgroundResource(help_pics[i]);
if (i == (help_pics.length - )) {
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 = ;
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 = ; i < help_pics.length; i++) {
imageView = new ImageView(HelpActivity.this);
imageView.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
imageView.setMaxHeight();
imageView.setMaxWidth();
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setAdjustViewBounds(true);
imageView.setPadding(, , , );
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 = ;
dots[currentIndex].setEnabled(true);
} private void setCurView(int position) {
if (position < || position >= help_pics.length) {
return;
}
viewPager.setCurrentItem(position);
} private void setCurDot(int positon) {
if (positon < || positon > help_pics.length -
|| 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 ;
} // 锟斤拷始锟斤拷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>

测试结果如下

android之ViewPagerandroid之ViewPagerandroid之ViewPagerandroid之ViewPagerandroid之ViewPagerandroid之ViewPager

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

上一篇:POJ 2151 Check the difficulty of problems (概率DP)


下一篇:概率DP light oj 1030