ViewPager+holder自动轮播图片

1.xml

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

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

        <LinearLayout
            android:id="@+id/ll2"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:gravity="center"
            ></LinearLayout>
    </RelativeLayout>
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</LinearLayout>

2.java

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 android.widget.RelativeLayout;

import com.google.gson.Gson;

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


public class FragmentOne extends Fragment {

    private String[] images={
            "https://www.zhaoapi.cn/images/quarter/ad1.png",
            "https://www.zhaoapi.cn/images/quarter/ad2.png",
            "https://www.zhaoapi.cn/images/quarter/ad3.png",
            "https://www.zhaoapi.cn/images/quarter/ad4.png"
    };
    private RelativeLayout relativeLayout;
    private ListView listView;
    private String path="https://www.apiopen.top/novelApi";
    private HttpUtlis httpUtlis=HttpUtlis.getInstance();
    private MyAdapter adapter2;
    private ViewPager viewPager2;
    private LinearLayout linearLayout2;
    private View view;
    private List<ImageView> image_list=new ArrayList<>();
    private MyPagerAdapter adapter;
    private int i;//接受当前的页
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //得到当前位置
            i=viewPager2.getCurrentItem();
            //改变的选中页
            viewPager2.setCurrentItem(i+1);
            //每2分钟换一张
            handler.sendEmptyMessageDelayed(1,2000);
        }
    };

    public static Fragment getInstance(String title){
        FragmentOne fragmentOne=new FragmentOne();
        Bundle bundle=new Bundle();
        bundle.putString("title",title);
        fragmentOne.setArguments(bundle);
        return fragmentOne;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        

        view=inflater.inflate(R.layout.fragmentone,container,false);

        viewPager2=view.findViewById(R.id.viewpager2);
        linearLayout2=view.findViewById(R.id.ll2);


        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        //创建适配器
        Bundle arguments=getArguments();
        String title = arguments.getString("title");
        if (arguments.get("title").equals("头条")){
            initview();
            getData();
        adapter=new MyPagerAdapter(images,getActivity());
        viewPager2.setAdapter(adapter);
        //开始轮播
        handler.sendEmptyMessageDelayed(1,2000);

        viewPager2.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                for (int i=0;i<image_list.size();i++) {
                    if (i==position%image_list.size()) {
                        image_list.get(i).setSelected(true);
                    } else {
                        image_list.get(i).setSelected(false);
                    }
                }
            }
            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
     }else {
            relativeLayout = view.findViewById(R.id.rl);
            relativeLayout.setVisibility(View.GONE);
            getData();

        }
    }


    //创建小圆点
    private void initview() {
        for (int i = 0; i < images.length; i++) {
            //创建图片
            ImageView imageView = new ImageView(getActivity());
            //设置选择器
            imageView.setImageResource(R.drawable.imageselector);

            linearLayout2.addView(imageView);

            //添加到集合
            image_list.add(imageView);
        }
        //设置默认选中的圆点
        image_list.get(0).setSelected(true);
    }

    public void getData() {
       listView=view.findViewById(R.id.listview);
       httpUtlis.getdata(path);

       httpUtlis.setHttpListeren(new HttpUtlis.HttpListeren() {
           @Override
           public void getjsondata(String json) {
               Gson gson=new Gson();
               UserBean userBean = gson.fromJson(json, UserBean.class);
               List<UserBean.DataBean> data = userBean.getData();

               adapter2=new MyAdapter(getContext(),data);
               listView.setAdapter(adapter2);
           }
       });
    }
}

3.pagerAdapter适配器

public class MyPagerAdapter extends PagerAdapter {
    private String[] image;
    private Context context;

    public MyPagerAdapter(String[] image, Context context) {
        this.image = image;
        this.context = context;
    }

    @Override
    public int getCount() {
        //最大值
        return Integer.MAX_VALUE;
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //创建imageview
        ImageView imageView=new ImageView(context);
        //得到图片
        ImageLoader.getInstance().displayImage(image[position%image.length],imageView,MyAppliaction.getOptions());
        //添加到视图
        container.addView(imageView);
        return imageView;
    }

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

4.创建小圆点
先在drawable中创建shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
    <stroke android:color="#ffff"
        android:width="2dp"
        />
    <size android:width="10dp"
        android:height="10dp"
        />
    <solid android:color="#ffff"/>
</shape>
然后selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/shape2"/>
    <item android:state_selected="false" android:drawable="@drawable/shape1"/>
</selector>
 

猜你喜欢

转载自blog.csdn.net/android_zmy/article/details/80793832