動態ViewPager導航頁面

今天新學知識總計,我的信息,僅供參考:android

item設置:數組

viewpager頁面設置:ide

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager1220"
        android:layout_width="match_parent"
        android:layout_height="200dp">

    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignBottom="@id/viewpager1220"
        android:padding="10dp"
        >
        <LinearLayout
            android:id="@+id/point1220"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="horizontal">
        </LinearLayout>

    </LinearLayout>
</RelativeLayout>佈局

adapter設置this

package com.example.administrator.test_1216.adapter;

public class PagerAdapter1220 extends PagerAdapter {
   private List<ImageModel1220> list;
    private Context context;


    public PagerAdapter1220(List<ImageModel1220> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    /**
     * 判斷是否由對象生成頁面
     * @param view
     * @param object
     * @return
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    /**
     * 添加頁面
     * @param container 將要顯示的頁面
     * @param position 將要顯示頁面的位置
     * @return
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //添加子佈局
        View view=View.inflate(context, R.layout.img1220_item,null);
        //聲明控件並綁定id
        ImageView img1220= (ImageView) view.findViewById(R.id.img1220);
        //獲取圖片
        img1220.setBackgroundResource(list.get(position%list.size()).getImages());
        //將子佈局添加到視圖
        container.addView(view);
        return view;
    }

    /**
     * 銷燬頁面
     * @param container 將要銷燬的頁面
     * @param position 將要銷燬的頁面的位置
     * @param object
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);
    }
}
activity設置:spa

package com.example.administrator.test_1216;
/**
 * Created by Administrator on 2016/12/20.
 */

public class PagerActivity1220 extends Activity implements ViewPager.OnPageChangeListener {
    private ViewPager viewPager;
    private LinearLayout point;
    private PagerAdapter adapter;
    private List<ImageModel1220> list;
    //圖片數組
    private int[] imgs = {R.mipmap.main_page1, R.mipmap.main_page2, R.mipmap.main_page3, R.mipmap.main_page4, R.mipmap.main_page5};
 //handdle機制處理定時任務
    Handler handler=new Handler(){
     @Override
     public void handleMessage(Message msg) {
         viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
         handler.sendEmptyMessageDelayed(0,3000); //設置時間間隔
     }
 };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager1220_activity);
        viewPager = (ViewPager) findViewById(R.id.viewpager1220);
        point = (LinearLayout) findViewById(R.id.point1220);
        //設置圖片滑動監聽
        viewPager.setOnPageChangeListener(this);
        //初始化集合
        list = new ArrayList<ImageModel1220>();
        //遍歷圖片數組
        for (int i = 0; i < imgs.length; i++) {
            ImageModel1220 model = new ImageModel1220();
            model.setImages(imgs[i]);
            list.add(model);
        }
        //初始化小圓點
        for (int i = 0; i < list.size(); i++) {
            //新建視圖
            View v = new View(this);
            //新建一個佈局參數,設置小圓點寬,高
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10);
            //設置小圓點的間距
            if (i != 0) {
                params.leftMargin = 10;

            }
            //設置小圓點視圖
            v.setLayoutParams(params);
            //給小圓點設置背景顏色
            v.setBackgroundResource(R.drawable.points);
            //將設置好的小圓點添加到佈局文件裏
            point.addView(v);

        }
        //初始化適配器
        adapter = new PagerAdapter1220(list, this);
        //設置適配器
        viewPager.setAdapter(adapter);
        //設置當前的圖片位置
        //將有用的View放到全部view中間,並將有用的View的第一個視圖放到第一個位置
        viewPager.setCurrentItem(Integer.MAX_VALUE/2-(Integer.MAX_VALUE/2)%list.size());
        changePoint();//動態改變小圓點
        //設置自動時間爲3秒
            handler.sendEmptyMessageDelayed(0,3000);
    }

    //動態改變小圓點
    private void changePoint() {
        //獲取當前頁面的位置
        int currentPager = viewPager.getCurrentItem() % list.size();
        //遍歷小圓點
        for (int i = 0; i < point.getChildCount(); i++) {
            //設置Enabled,獲取小圓點的焦點,當i==currentPager,小圓點是白色
            point.getChildAt(i).setEnabled(i == currentPager);
        }
    }

    /**
     * 頁面滑動結束調用
     *
     * @param position 選中頁面的位置
     */
    @Override
    public void onPageSelected(int position) {
            changePoint();
    }
    /**
     * 此方法在頁面滑動的時候調用
     *
     * @param position:當前頁面的位置
     * @param positionOffset:頁面偏移的百分比
     * @param positionOffsetPixels:頁面偏移的像素
     */
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    /**
     * 此方法在頁面狀態改變的時候調用
     *
     * @param state:state==0:什麼也沒作 state==1:正在滑動
     *                             state==2:滑動結束
     */

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}
效果圖:3d

 

 

相關文章
相關標籤/搜索