package com.example.wuxianlunbo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { ArrayList<tu> tuarr = new ArrayList<>(); private ViewPager vp; private LinearLayout ll; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); send(); } } }; private ArrayList<ImageView> ivList1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); ll = (LinearLayout) findViewById(R.id.ll); shuju(); initDot(); vp.setAdapter(new vpspq()); send(); //监听viewpager的混动 vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < tuarr.size(); i++) { ImageView imageView = ivList1.get(position % tuarr.size()); if(position%ivList1.size()==i){ imageView.setImageResource(R.drawable.bb); }else{ ivList1.get(i).setImageResource(R.drawable.aa); } } } @Override public void onPageScrollStateChanged(int state) { } }); } class vpspq extends PagerAdapter { @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) { View inflate = View.inflate(MainActivity.this, R.layout.aa, null); ImageView vptu = (ImageView) inflate.findViewById(R.id.imag); vptu.setImageResource(tuarr.get(position % tuarr.size()).getImg()); container.addView(inflate); return inflate; } //销毁的 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } //发送handler的方法实现自动轮播不加这个方法手动 public void send() { handler.sendEmptyMessageDelayed(1, 2000); } //轮播图片集合 public void shuju() { tuarr.add(new tu(R.drawable.a)); tuarr.add(new tu(R.drawable.b)); tuarr.add(new tu(R.drawable.c)); tuarr.add(new tu(R.drawable.d)); } //初始化原点 private void initDot() { ivList1 = new ArrayList<>(); if (ivList1 != null) { ivList1.clear(); } //添加原点的操作 for (int x = 0; x < tuarr.size(); x++) { ImageView iv = new ImageView(MainActivity.this); if (x == 0) { //第一张,让其圆点进行选中状态 iv.setImageResource(R.drawable.aa); } else { iv.setImageResource(R.drawable.bb); //其它的都不选中 } LinearLayout.LayoutParams parmes = new LinearLayout.LayoutParams(20, 20); //设置两个点之间的距离 parmes.setMargins(10, 0, 10, 0); ll.addView(iv, parmes); ivList1.add(iv); } } } XML布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context="com.example.wuxianlunbo.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="wrap_content" android:layout_height="300dp" android:layout_centerHorizontal="true" tools:layout_editor_absoluteY="0dp" tools:layout_editor_absoluteX="0dp" /> <!--android:layout_alignBottom="@id/vp"--> <LinearLayout android:layout_below="@id/vp" android:id="@+id/ll" android:layout_centerHorizontal="true" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout> </RelativeLayout> //tu的类 //用于集合的泛型 public class tu { private int img; @Override public String toString() { return "tu{" + "img=" + img + '}'; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } public tu(int img) { this.img = img; } } //aa.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imag" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Android无限自动轮播+自动添加原点+监听改变原点
最新推荐文章于 2022-12-24 01:18:23 发布