效果图:
首先在布局中写viewpager控件
activity_main.xml 下面linearlayout是小圆点的布局
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<LinearLayout
android:id="@+id/linear_layout"
android:layout_marginBottom="10dp"
android:layout_centerHorizontal="true"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_width="100dp"
android:layout_height="50dp">
</LinearLayout>
找到对应的控件
viewPager = (ViewPager) findViewById(R.id.viewPager);
linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
在drawable下面新建两个xml,画小圆点选中与未选中的
shape01.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--没选中的小圆点-->
<corners android:radius="5dp"/>
<size android:width="10dp" android:height="10dp"/>
<solid android:color="#000000"/>
</shape>
shape02.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--选中的小圆点-->
<corners android:radius="5dp"/>
<size android:width="10dp" android:height="10dp"/>
<solid android:color="#ff0000"/>
</shape>
MainActivity.java里面初始化小圆点
//初始化小圆点的方法
private void initshape(){
//创建装着小圆点的集合
listshape = new ArrayList<>();
//清空布局和集合
linearLayout.removeAllViews();
listshape.clear();
for (int i=0;i<3;i++){
ImageView imageView = new ImageView(MainActivity.this);
if(i==0){
//如果当前是第一页,就设置选中的图片
imageView.setImageResource(R.drawable.shape02);
}else{
imageView.setImageResource(R.drawable.shape01);
}
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(9,0,9,0);
//添加到集合和布局里
listshape.add(imageView);
linearLayout.addView(imageView,layoutParams);
}
}
调用初始化小圆点的方法,使用handler发送延迟消息,设置适配器显示
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0){
int currentItem = viewPager.getCurrentItem();
viewPager.setCurrentItem(currentItem+1);
handler.sendEmptyMessageDelayed(0,2000);
}
}
};
initshape();
viewPager.setCurrentItem(100000);
setAdapter();
handler.sendEmptyMessageDelayed(0,2000);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
for (int i =0;i<listshape.size();i++){
if(i==position%listshape.size()){
listshape.get(i).setImageResource(R.drawable.shape02);
}else{
listshape.get(i).setImageResource(R.drawable.shape01);
}
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
public void setAdapter(){
if(imageAdapter==null) {
imageAdapter = new ImageAdapter(MainActivity.this, list);
viewPager.setAdapter(imageAdapter);
}else{
imageAdapter.notifyDataSetChanged();
}
}
适配器里面的
public class ImageAdapter extends PagerAdapter{
Context context;
List<ProductBean.DataBean> list;
public ImageAdapter(Context context, List<ProductBean.DataBean> list) {
this.list = list;
this.context = context;
}
@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) {
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
String images = list.get(0).getImages();
String[] split = images.split("\\|");
ImageLoader.getInstance().displayImage(split[position%split.length],imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
}