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>