輪播圖+小圓點

//輪播佈局

<android.support.v4.view.ViewPager
    android:id="@+id/vp"
    android:layout_width="match_parent"
    android:layout_height="200dp">
</android.support.v4.view.ViewPager>
<LinearLayout
    android:id="@+id/linear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:layout_marginTop="-20dp"
    >
</LinearLayout>

小圓點的配置

//默認的

<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval"> //shape設置形狀
    <solid android:color="#999999"/>  //color自己設置
    <corners android:radius="2dp" />
</shape>
//選擇的
<shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape="oval">
    <solid android:color="#595959"/>
    <corners android:radius="2dp" />
</shape>



//activity類

ViewPager vp;
LinearLayout linear;
//線程必須的
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        vp.setCurrentItem(page);//改變輪播頁
    }
};

//將圖片放入一個list集合 我這 是網絡請求的圖片 imagelist是圖片的集合,該過程省略

public void initView(){
    vp.setAdapter(new MyPagerAdapter());
    for (int i = 0; i <imageList.size();i++){
        View doView = new View(context);
        //小圓點的大小
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10,10);
        //小圓點左邊距和右邊距
        params.rightMargin = 5;
        params.leftMargin = 5;
        //加載小圓點到視圖中
        doView.setLayoutParams(params);
        //當顯示的圖片的下標和i相等時,顯示選中狀態
        if(i == 0){
            doView.setBackgroundResource(R.drawable.shape_select);
            //否則。
        }else {
            doView.setBackgroundResource(R.drawable.shape_normal);
        }
        //把佈局加載到linearlayouot
        linear.addView(doView);
    }

    vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }
        @Override
        public void onPageSelected(int position) {
            //圖片改變後,讓小圓點改變爲當前下標狀態
            linear.getChildAt(position % imageList.size()).setBackgroundResource(R.drawable.shape_select);
            //其他的改變爲默認
            linear.getChildAt(oldPositon % imageList.size()).setBackgroundResource(R.drawable.shape_normal);
            //將當前下標賦給之前的下標
            oldPositon = position;
        }
        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
}


適配器

public class MyPagerAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        //數量爲2147483647
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {


        return view == object;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView image =new ImageView(context);
//在這裏我用了Application 這個類,在裏面創建的imageloader  在這邊直接調用的
        ImageLoader.getInstance().displayImage(imageList.get(position% imageList.size()),image, MyApplication.getOptions());
        container.addView(image);
        return image;
    }
}


//輪播代碼           該方法在調用initview方法後面調用 調用該方法可實現自動輪播

private void autoplay() {

    new Thread(){
        @Override
        public void run() {

            while(true){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //增加圖片下標瑪
                page++;
                //發送空消息
                handler.sendEmptyMessage(0);
            }
        }
    }.start();
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章