直接贴代码:
MainActivity
- package com.cruze.viewpager;
- import android.app.Activity;
- import android.os.Bundle;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.view.ViewGroup;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import com.example.administrator.myapplication.R;
- /***
- *
- * @author Cruze
- *
- */
- public class MainActivity extends Activity implements OnPageChangeListener{
- private ViewPager vPager;
- private ImageView[] dots; // 小圆点的数组
- private ImageView[] imageViews;// 轮播图的数组
- private int[] img = new int[] { R.drawable.pic1, R.drawable.pic2,
- R.drawable.pic3, R.drawable.pic4 };// 图片 资源
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initView();
- }
- /****
- * 初始化页面
- */
- private void initView() {
- ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);
- vPager = (ViewPager) findViewById(R.id.viewPager);
- dots = new ImageView[img.length];
- //将小圆点填充到数组中
- for (int i = 0; i < dots.length; i++) {
- ImageView imageView = new ImageView(this);
- imageView.setLayoutParams(new LayoutParams(10, 10));
- dots[i] = imageView;
- if (i == 0) {
- dots[i].setBackgroundResource(R.drawable.banner_dian_focus);
- } else {
- dots[i].setBackgroundResource(R.drawable.banner_dian_blur);
- }
- group.addView(imageView);
- }
- //将图片填充到数组中
- imageViews = new ImageView[img.length];
- for(int i=0; i<imageViews.length; i++){
- ImageView imageView = new ImageView(this);
- imageViews[i] = imageView;
- imageView.setBackgroundResource(img[i]);
- }
- //设置Adapter
- vPager.setAdapter(new MyPagerAdapter(imageViews));
- //设置监听,主要是设置点点的背景
- vPager.setOnPageChangeListener(this);
- //设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动
- vPager.setCurrentItem((imageViews.length) * 100);
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onPageSelected(int arg0) {
- setImageBackground(arg0 % imageViews.length);
- }
- private void setImageBackground(int index) {
- for(int i=0; i<dots.length; i++){
- if(i == index){
- dots[i].setBackgroundResource(R.drawable.banner_dian_focus);
- }else{
- dots[i].setBackgroundResource(R.drawable.banner_dian_blur);
- }
- }
- }
- }
Adapter
- package com.cruze.viewpager;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.view.View;
- import android.widget.ImageView;
- public class MyPagerAdapter extends PagerAdapter{
- private ImageView[] imageViews;// 轮播图的数组
- public MyPagerAdapter(ImageView[] imageViews){
- this.imageViews = imageViews;
- }
- @Override
- public int getCount() {
- return Integer.MAX_VALUE;
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
- @Override
- public void destroyItem(View container, int position, Object object) {
- // ((ViewPager)container).removeView(imageViews[position % imageViews.length]);
- }
- /**
- * 载入图片进去,用当前的position 除以 图片数组长度取余数是关键
- */
- @Override
- public Object instantiateItem(View container, int position) {
- try {
- ((ViewPager)container).addView(imageViews[position % imageViews.length], 0);
- }catch(Exception e){
- //handler something
- }
- return imageViews[position % imageViews.length];
- }
- }
布局文件:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="180dp"
- android:orientation="vertical" >
- <android.support.v4.view.ViewPager
- android:id="@+id/viewPager"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- <LinearLayout
- android:id="@+id/viewGroup"
- android:layout_width="fill_parent"
- android:layout_height="25dp"
- android:layout_alignParentBottom="true"
- android:gravity="center_horizontal|bottom"
- android:orientation="horizontal" >
- </LinearLayout>
- </RelativeLayout>
好了,一个基本读取本地图片的viewPager 就算是成功了