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));
    }
    
    

}

 實例下載>>>>>>>>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM