viewpage 多张图片的无限循环。

来源:互联网 发布:网络兼职广告词 编辑:程序博客网 时间:2024/04/29 22:47
//无需改动,只需要放输入图片资源个数就行了。
package com.example.demoviewpager;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageView;public class ViewpagerDemo extends Activity implements OnPageChangeListener {private ViewPager viewPager;private List<ImageView> listviews;private int[] pics = { R.drawable.a0, R.drawable.a1, R.drawable.a2,R.drawable.ic_launcher };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.viewpager);viewPager = (ViewPager) findViewById(R.id.vp_test);listviews = new ArrayList<ImageView>();// 添加viewpager多出的两个viewint length = pics.length + 2;for (int i = 0; i < length; i++) {ImageView imageView = new ImageView(ViewpagerDemo.this);ViewGroup.LayoutParams viewPagerImageViewParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT);imageView.setLayoutParams(viewPagerImageViewParams);imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);listviews.add(imageView);imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubViewpagerDemo.this.finish();}});}viewPager.setAdapter(new ViewPagerAdapter());viewPager.setOnPageChangeListener(ViewpagerDemo.this);// 设置viewpager在第二个视图显示viewPager.setCurrentItem(1);}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int i) {int pageIndex = i;if (i == 0) {// 当视图在第一个时,将页面号设置为图片的最后一张。pageIndex = pics.length;} else if (i == pics.length + 1) {// 当视图在最后一个是,将页面号设置为图片的第一张。pageIndex = 1;}if (i != pageIndex) {viewPager.setCurrentItem(pageIndex, false);return;}}class ViewPagerAdapter extends PagerAdapter {@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {ImageView view = listviews.get(position);container.removeView(view);view.setImageBitmap(null);}@Overridepublic Object instantiateItem(ViewGroup container, int i) {if (i == 0) {listviews.get(i).setImageResource(pics[pics.length-1]);} else if (i == (listviews.size() - 1)) {listviews.get(i).setImageResource(pics[0]);} else {listviews.get(i).setImageResource(pics[i - 1]);}container.addView(listviews.get(i));return listviews.get(i);}@Overridepublic int getCount() {return listviews.size();}@Overridepublic boolean isViewFromObject(View view, Object o) {return view == o;}}}
<?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"     >    <android.support.v4.view.ViewPager        android:id="@+id/vp_test"        android:layout_width="match_parent"        android:layout_height="match_parent" />                </LinearLayout>


0 0
原创粉丝点击