android viewPager实现轮播效果一(本地图片篇)

来源:互联网 发布:软件需求整理 编辑:程序博客网 时间:2024/06/18 07:20

最近项目比较闲,个人时间比较充裕,闲来无事,打算将android 一些基本布局一一贴出来给大家做做参考,同时自己在回顾一下之前学android所遇到的一些问题,这篇算是开头吧,后面会后续补上其他控件。

先上个效果图吸引一下:




直接贴代码:

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 就算是成功了




0 0