<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_red" android:state_enabled="true"></item> <item android:drawable="@drawable/point_green" android:state_enabled="false"></item> </selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_green_light"></solid> </shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_red_light"></solid> </shape>
佈局:
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="480dp"/> <LinearLayout android:id="@+id/ll_point" android:layout_width="match_parent" android:layout_height="20dp" android:orientation="horizontal" android:layout_alignBottom="@id/vp" android:layout_marginBottom="20dp" android:gravity="center"></LinearLayout>
代碼:
public class MainActivity extends AppCompatActivity { private ViewPager vp; private LinearLayout ll_point; private List<ImageView> images = new ArrayList<>(); private int [] x = new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 initView(); initViewPager(); } private void initView() { vp = (ViewPager) findViewById(R.id.vp); ll_point = (LinearLayout) findViewById(R.id.ll_point); } private void initViewPager() { for (int i = 0; i < x.length; i++) { ImageView imageView = new ImageView(MainActivity.this); imageView.setImageResource(x[i]); images.add(imageView); } MyAdapter adapter = new MyAdapter(); vp.setAdapter(adapter); initPoint(); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //獲取小圓點數據 int count = ll_point.getChildCount(); for (int i = 0; i < count; i++) { View view = ll_point.getChildAt(i); //頁面改變時選中小圓點 view.setEnabled(i == position ? false : true); } } @Override public void onPageScrollStateChanged(int state) { } }); } private void initPoint() { for (int i = 0; i < images.size(); i++) { // Toast.makeText(MainActivity.this, "圖片個數:"+images.size(), Toast.LENGTH_SHORT).show(); //創建小圓點控件 View view = new View(this); //設置背景選擇器 view.setBackgroundResource(R.drawable.point_bg); //創建小圓點大小 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); //創建小圓點間距 params.rightMargin = 10; //把小圓點添加容器 ll_point.addView(view, params); view.setTag(i); } //設置第一個爲默認選擇 View view = ll_point.getChildAt(0); view.setEnabled(false); } //定義handler private Handler handler = new Handler(); //開啓 public void startSwitch() { handler.postDelayed(new Runnable() { @Override public void run() { int item = vp.getCurrentItem(); if (item == vp.getAdapter().getCount() - 1) { item = 0; } else { item++; } vp.setCurrentItem(item); handler.postDelayed(this, 2000); } }, 2000); } //停止 public void stopSwitch() { handler.removeCallbacksAndMessages(null); } //創建適配器 private class MyAdapter extends PagerAdapter { @Override public int getCount() { return images.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = images.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(images.get(position)); } } @Override protected void onResume() { super.onResume(); startSwitch(); } @Override protected void onPause() { super.onPause(); stopSwitch(); } }
另一種
@Override public void onPageSelected(int position) { for (int i = 0;i<images.size();i++){ View view = ll.getChildAt(i); view.setEnabled(i == position%images.size()?false:true); } }
private class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; }
@Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = images.get(position%images.size()); container.addView(imageView); return imageView; }
public void startSwitch(){ handler.postDelayed(new Runnable() { @Override public void run() { int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); handler.postDelayed(this,2000); } },2000); }