天天看點

【viewPager實作輪播(代碼)】代碼

代碼

xml:

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

    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <com.handmark.pulltorefresh.library.PullToRefreshScrollView
        android:id="@+id/two_pull"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrDrawable="@drawable/default_ptr_flip"
        ptr:ptrHeaderBackground="#383838"
        ptr:ptrHeaderTextColor="#FFFFFF">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

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

            <LinearLayout
                android:id="@+id/two_lin"
                android:layout_width="match_parent"
                android:layout_height="wrap_parent"
                android:layout_alignBottom="@id/two_vp"
                android:gravity="center"
                android:orientation="horizontal"></LinearLayout>

           
        </RelativeLayout>

    </com.handmark.pulltorefresh.library.PullToRefreshScrollView>
</RelativeLayout>
           
Java      
TwoFragment      
package com.bawei.text04.fragments;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;

import com.bawei.text04.R;
import com.bawei.text04.adapter.Two_ImagePager;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by sky on 2017/11/15.
 */

public class TwoFragment extends Fragment {
    private View v;
    private PullToRefreshScrollView rsv;
    private ViewPager vp;
    private LinearLayout lin;
    private List<String> list;
    private ArrayList<ImageView> images;//存放小圓點控件的集合

    private Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //擷取目前正在顯示的頁面
            int index = vp.getCurrentItem();
            vp.setCurrentItem(index + 1);
            //改變小圓點
            setSelectedPoint((index + 1) % list.size());
            //延遲發送消息
            sendEmptyMessageDelayed(1, 2000);

        }
    };
    private int index;
    private ListView lv;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = View.inflate(getActivity(), R.layout.two, null);
        //初始化元件
        initView();
        //初始化輪播
        initvp();
        
        return v;
    }
    private void initView() {
        rsv = v.findViewById(R.id.two_pull);//PullToRefreshScrollView
        vp = v.findViewById(R.id.two_vp);//ViewPager
        lin = v.findViewById(R.id.two_lin);//小圓點
        lv = v.findViewById(R.id.two_lv);//listview
    }
    

    /**
     * 改變小圓點圖檔
     *
     * @param index 頁面的下标
     */
    private void setSelectedPoint(int index) {
        for (int i = 0; i < images.size(); i++) {
            if (i == index) {
                images.get(i).setImageResource(R.drawable.point_selected);
            } else {
                images.get(i).setImageResource(R.drawable.point_un_selected);
            }
        }
    }
    private void initvp() {
        list = new ArrayList<>();
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");
        //初始化小圓點
        initDoc();
        //設定擴充卡
        vp.setAdapter(new Two_ImagePager(getActivity(),list));
        //設定目前要顯示的頁面
        vp.setCurrentItem(list.size()*10);
        //實作自動播放
        myHandler.sendEmptyMessageDelayed(1, 2000);

    }

    private void initDoc() {
        images = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            ImageView imageView = new ImageView(getActivity());
            //設定圖檔的縮放模式
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            //設定要顯示的圖檔
            if (i == 0) {
                imageView.setImageResource(R.drawable.point_selected);
            } else {
                imageView.setImageResource(R.drawable.point_un_selected);
            }
            //設定寬度與高度
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(40, 40);
            params.setMargins(10, 0, 10, 0);
            //添加到底部容器中
            lin.addView(imageView, params);
            //添加到集合中
            images.add(imageView);
        }
    }


}
           
Two_ImagePager      
package com.bawei.text04.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bawei.text04.utils.ImageloaderUtil;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * Created by sky on 2017/11/16.
 */

public class Two_ImagePager extends PagerAdapter {
    Context context;
    List<String> list;//網絡圖檔位址

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

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

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        //傳回目前顯示的視圖
        ImageView image = new ImageView(context);
        image.setScaleType(ImageView.ScaleType.FIT_XY);
        //加載網絡的圖檔list.get(position%list.size())
        //報錯:ImageLoader must be init with configuration before using---imageloader必須初始化配置使用前
        ImageLoader.getInstance().displayImage(list.get(position%list.size()),image, ImageloaderUtil.getImageOptions());
        //添加到容器
        container.addView(image);

        return image;
    }

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

繼續閱讀