Android:ViewPager制作幻灯片

布局:

<?xml version="1.0" encoding="utf-8"?>
   
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    >
    <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    >
</android.support.v4.view.ViewPager>
    <LinearLayout 
    android:id="@+id/pointgroup"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="5dp"
    android:gravity="center"
    >
    
</LinearLayout>
</RelativeLayout>

程序:

public class MainActivity extends Activity {
    //ViewPager 
        private ViewPager viewpager;    
        //幻灯片图片资源
        private int [] imgArray={R.drawable.view1,R.drawable.view2,R.drawable.view3};
        //图片数组
        private ArrayList<View> viewlist;

        private ImageView imageView;
        //点点
        private ViewGroup pointgroup;
        private ImageView[] pointarr;
        

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_viewpage);
            //初始化
            viewpager =(ViewPager) findViewById(R.id.viewpager);
            pointgroup =(ViewGroup) findViewById(R.id.pointgroup);
            viewlist = new ArrayList<View>();
            
            //将图片装载到数组    
            for(int i=0;i<imgArray.length;i++){
                imageView =new ImageView(this);
                //设置图片
                imageView.setBackgroundResource(imgArray[i]);
                //设置图片id
                imageView.setId(imgArray[i]);
                viewlist.add(imageView);
                
            }
            
            /*
             * viewpager加载适配器
             * MyPageAdapter为自定义适配器
             * */
            
            //传递上下文
            Context context = MainActivity.this;
            MyPageAdapter pageadapter2 =new MyPageAdapter(viewlist,context);
            viewpager.setAdapter(pageadapter2);        
            
            
            //点数组
            pointarr=new ImageView[imgArray.length];
            //把点加入布局,和设置点状态
            for(int i=0;i<imgArray.length;i++){
                ImageView point=new ImageView(this);        
                
                //设置点大小
                point.setLayoutParams(new LayoutParams(10,10)); 
                pointarr[i]=point;
                //状态处理
                if(i==0){
                    pointarr[i].setBackgroundResource(R.drawable.viewpage_point_focused);
                }else{
                    pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);
                }
                //加入到容器
                pointgroup.addView(pointarr[i]);
            }
            
        
            //viewpager设置监听器
            pointChangeListener pointListener=new pointChangeListener();
            viewpager.setOnPageChangeListener(pointListener);
            //点击图片
            
            
            
        }
            
        
        /*
         * viewpage监听器
         */
        
        public class pointChangeListener implements OnPageChangeListener{

            @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) {
                
                // TODO Auto-generated method stub
                for(int i=0;i<pointarr.length;i++){
                    pointarr[arg0].setBackgroundResource(R.drawable.viewpage_point_focused);    
                    if(arg0 !=i){
                    pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);    
                    }
                }
                
            }
            
            
        }
        

        
    }

自定义适配器:

public class MyPageAdapter extends PagerAdapter {
    private List<View> viewlist;
    private Context context;
    public MyPageAdapter(List<View> viewlist,Context context){
        this.viewlist =viewlist;
        this.context=context;
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return viewlist.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return arg0==arg1;
    }
    
    //以下也是必要方法,不过要自己添加
    //实例化
    
    @Override
    public Object instantiateItem(View container, int position) {
        // TODO Auto-generated method stub
        ((ViewPager)container).addView(viewlist.get(position));
        View view =viewlist.get(position);
        view.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int i =v.getId();
                String t="你点击了图片的图片id为:"+i;
                Toast.makeText(context, t, Toast.LENGTH_LONG).show();
                
                /*跳转页面
                *Intent intent =new Intent(context,NavigationActivity.class);
                *context.startActivity(intent); 
                 */ 
            
            }
            
        });
        return viewlist.get(position);                
    }
     

    //销毁
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
        container.removeView(viewlist.get(position));
    }
    
    

}

 实例下载>>>>>>>>

posted @ 2014-09-04 18:31  tinyphp  Views(4094)  Comments(1Edit  收藏  举报