在drawable创建两个shape标签的xml布局,暗色个红色
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp"/>
<solid android:color="#88000000"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="8dp" />
<solid android:color="#f00" />
</shape>
在代码中实现,把创建的圆点添加到新建的 ArrayList中
//根据lunboPager的个数绘制圆点
dotList = new ArrayList<ImageView>();
for (int i = 0; i < lunboPager.length; i++) {
ImageView image = new ImageView(MainActivity.this);
if(i==0){
image.setImageResource(R.drawable.dot_red);
}else{
image.setImageResource(R.drawable.dot_hui);
}
//把创建的圆点图片添加到布局中
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);
params.setMargins(5,0,5,0);
linear.addView(image, params);
dotList.add(image);
}
以上代码是绘制原点的,下面实现图片的无限轮播
//轮波图需要的图片
private void initDataPager() {
lunboPager = new int[] {R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4};
}
viewpager适配器
//viewpager适配器
private void setPagerAdapter() {
vp.setCurrentItem(lunboPager.length*5000);
vp.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//设置轮播图片
ImageView image = new ImageView(MainActivity.this);
image.setImageResource(lunboPager[position%lunboPager.length]);
container.addView(image);
//为图片添加点击监听
image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://down 手指按下的时候,图片停止滑动
// 手指按下的时候,停止自动轮播的任务
// 移除所有的消息及回调 null 移除所有
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP://up 手指抬起的时候
handler.sendEmptyMessageDelayed(0, 2000);
break;
case MotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(0, 2000);
break;
}
return true;
}
});
return image;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView((View) object);
}
});
viewpager的滑动监听
private void setPagerLiseter() {
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
//界面切换的时候,下面的圆点跟着滑动
for (int i = 0; i < lunboPager.length; i++) {
if(i==arg0%lunboPager.length){
dotList.get(i).setImageResource(R.drawable.dot_red);
}else{
dotList.get(i).setImageResource(R.drawable.dot_hui);
}
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
handler.sendEmptyMessageDelayed(0, 2000);
}
Handler 处理消息,实现轮播
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==0){
//获取当前vp的下标
int currentItem = vp.getCurrentItem();
currentItem++;
vp.setCurrentItem(currentItem);
handler.sendEmptyMessageDelayed(0, 2000);
}
};
};