无限自动轮播 加布局

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity----";
    private String image1 = "http://pic.sogou.com/pics/recompic/detail.jsp?category=%E7%BE%8E%E5%A5%B3&tag=%E5%B0%91%E5%A5%B3#36%265043451";
    private String image2 = "http://img.zcool.cn/community/038c0ee5744f9a500000025ae5acd2a.jpg";
    private String image3 = "http://img5.duitang.com/uploads/item/201411/06/20141106104720_WHEe2.jpeg";
    private String image4 = "http://android.tgbus.com/bizhi/UploadFiles_7790/201204/20120423124456526.jpg";
    private String[] urls=new String[]{image1,image2,image3,image4};
    private ViewPager main_vp;
    private List<ImageView> imageViews = new ArrayList<>();
    private List<ImageView> points = new ArrayList<>();
    private MyHandler myHandler=new MyHandler();
    private LinearLayout ll_points;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

        datas();
        MyAdapter myAdapter = new MyAdapter(imageViews);
        main_vp.setAdapter(myAdapter);
        main_vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                position=position%imageViews.size();
                for (int i = 0; i < points.size(); i++) {
                    if (i==position){
                        points.get(i).setSelected(true);
                    }else {
                        points.get(i).setSelected(false);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        autoPlay();
    }

    private void datas() {
        for (int i = 0; i < urls.length; i++) {
            ImageView imageView = new ImageView(this);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            //加载网络图片
            ImageLoader.getInstance().displayImage(urls[i], imageView, MyApp.getOptions());
            //将imageview添加到集合
            imageViews.add(imageView);
            //添加小圆点
            ImageView point = new ImageView(this);
            point.setImageResource(R.drawable.circle_selector);
            //添加到布局里面
            ll_points.addView(point);

            points.add(point);
        }
        //默认第一个选中
        points.get(0).setSelected(true);
    }


    private void initView() {
        main_vp = findViewById(R.id.main_parent);
        ll_points = findViewById(R.id.ll_points);
    }
    private void autoPlay() {
        myHandler.sendEmptyMessageDelayed(0,2000);
    }

    //开始自动轮播
    //结束自动轮播
    public void stopPlay() {
        myHandler.removeCallbacksAndMessages(null);
    }

    //适配器
    class MyAdapter extends PagerAdapter{
  private List<ImageView> list;

        public MyAdapter(List<ImageView> list) {
            this.list = list;
        }

        @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) {
            position=position % list.size();
            ImageView imageView=list.get(position);
            container.addView(imageView);
            return  imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((ImageView)object);
        }
    }
      class MyHandler extends Handler{
          @Override
          public void handleMessage(Message msg) {
              switch (msg.what){
                  case 0:
                      int item = main_vp.getCurrentItem()+1;
                      main_vp.setCurrentItem(item);
                      myHandler.sendEmptyMessageDelayed(0,2000);
                      break;
              }
          }
      }

    @Override
    protected void onPause() {
        super.onPause();
        stopPlay();
    }
}
主xml

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

      <RelativeLayout
          android:layout_width="wrap_content"
          android:layout_height="240dp">

          <android.support.v4.view.ViewPager
              android:id="@+id/main_parent"
              android:layout_width="match_parent"
              android:layout_height="240dp"
              android:background="#999999"
              ></android.support.v4.view.ViewPager>
            <LinearLayout
                  android:orientation="horizontal"
                android:id="@+id/ll_points"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:background="#6600ff"
                android:layout_width="match_parent"
                android:layout_height="30dp"></LinearLayout>
         
      </RelativeLayout>

</LinearLayout>

select_shape

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

    <item android:drawable="@drawable/select_shape" android:state_selected="true" />
    <item android:drawable="@drawable/onrmal_shape" android:state_selected="false" />

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

    <item android:drawable="@drawable/select_shape" android:state_selected="true" />
    <item android:drawable="@drawable/onrmal_shape" android:state_selected="false" />

</selector>


onrmal_shape

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

    <size
        android:width="20dp"
        android:height="20dp" />

    <solid android:color="#999999" />

</shape>



猜你喜欢

转载自blog.csdn.net/qq_41637459/article/details/80397142