效果如下。
1,一个activity.代码有注释。直接用。
package com.example.lenovo.bean.retrofit; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import com.example.lenovo.bean.R; import java.util.ArrayList; public class ViewPageActivity extends Activity { private ViewPager viewpager; private ArrayList<View> list=new ArrayList<>(); private ArrayList<RadioButton> radioButtons = new ArrayList<>();//下标 private RadioGroup radioGroup; private int currentItem;//当前图片 public static final int TIME=2000; private Handler handler=new Handler(); private Runnable runnable=new Runnable() { @Override public void run() { if(currentItem==list.size()){ currentItem=0; } viewpager.setCurrentItem(currentItem,false); currentItem++; handler.postDelayed(runnable,TIME);//间隔轮播 } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_page); viewpager= (ViewPager) findViewById(R.id.viewpager); radioGroup= (RadioGroup) findViewById(R.id.radioGroup); int resources[]={R.drawable.ab,R.drawable.abc,R.drawable.abcd,R.drawable.abcde}; //数据 for (int i = 0; i < 4; i++) { Button button=new Button(this); button.setBackgroundResource(resources[i]); button.setOnClickListener(new View.OnClickListener() {//各个轮播图跳转 @Override public void onClick(View v) { Toast.makeText(ViewPageActivity.this, ""+currentItem, Toast.LENGTH_SHORT).show(); } }); list.add(button); //下标 RadioButton rd = new RadioButton(this); RadioGroup.LayoutParams params_rb = new RadioGroup.LayoutParams(80, 80); params_rb.setMargins(10,0,10,0); rd.setLayoutParams(params_rb); radioButtons.add(rd); radioGroup.addView(rd); radioButtons.get(0).setChecked(true); } MyPagerAdapter adapter=new MyPagerAdapter(list); viewpager.setAdapter(adapter); handler.postDelayed(runnable, TIME); //添加手动滑动viewpager viewpager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE: //停止轮播 handler.removeCallbacks(runnable); break; case MotionEvent.ACTION_UP://继续轮播 handler.postDelayed(runnable, TIME); break; } return false; } }); //记住手动滑动的位置,并设置当前的下标 viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { currentItem=position; radioButtons.get(position).setChecked(true); } @Override public void onPageScrollStateChanged(int state) { } }); } //设配器 class MyPagerAdapter extends PagerAdapter{ private ArrayList<View> list; public MyPagerAdapter(ArrayList<View> list2){ list=list2; } @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { View view=list.get(position); container.addView(view); return view; } } }
2,一个xml布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="200dp" /> <RadioGroup android:layout_below="@+id/viewpager" android:orientation="horizontal" android:layout_marginTop="-20dp" android:layout_width="match_parent" android:gravity="center" android:id="@+id/radioGroup" android:layout_height="20dp"></RadioGroup> </RelativeLayout>
最后,一个简单的图片轮播就搞定。