【viewPager实现轮播(代码)】

来源:互联网 发布:focusky for mac 破解 编辑:程序博客网 时间:2024/06/05 00:39

代码

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