一、创建drawable文件,创建画圆点的xml文件
//正常情况下的圆点
<?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="#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="#f00000"/>
</shape>
二、代码
public class MainActivity extends Activity {
//本地的图片
private String[] imagePath=new String[]{"http://169.254.157.140:8080/aa/a.jpg",
"http://169.254.157.140:8080/aa/b.jpg",
"http://169.254.157.140:8080/aa/c.jpg",
"http://169.254.157.140:8080/aa/d.jpg"};
private LinearLayout ll_dots;
private ArrayList<ImageView> imageList;
/**
*
*handler更新UI
*/
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==0)
{
//获取当前所在页面索引值
int item = vp_pager.getCurrentItem();
item++;
vp_pager.setCurrentItem(item);
handler.sendEmptyMessageDelayed(0, 2000);
}
}
};
private ViewPager vp_pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp_pager = (ViewPager) findViewById(R.id.vp_pager);
ll_dots = (LinearLayout) findViewById(R.id.ll_dots);
//画圆点
initPaint();
/**
* 设置适配器
*/
vp_pager.setCurrentItem(imagePath.length*5000);
vp_pager.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public int getCount() {
// 无限个数
return Integer.MAX_VALUE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(MainActivity.this);
/**
* 设置点击图片
*/
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(0, 2000);
break;
case MotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(0, 2000);
break;
}
return true;
}
});
container.addView(imageView);
/**
* 设置图片 还可以用ImageLoader
*/
BitmapUtils bitmapUtils = new BitmapUtils(MainActivity.this);
bitmapUtils.display(imageView, imagePath[position % imagePath.length] );
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView((View) object);
}
});
/**
* 页面滑动设置相对应的小圆点的改变
*
*/
vp_pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < imagePath.length; i++) {
if(i==arg0 % imagePath.length)
{
imageList.get(i).setImageResource(R.drawable.focus);
}else{
imageList.get(i).setImageResource(R.drawable.nomor);
}
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
//自动轮播
handler.sendEmptyMessageDelayed(0, 2000);
}
/**
* 初始化小圆点
*/
public void initPaint()
{
imageList = new ArrayList<ImageView>();
for (int i = 0; i < imagePath.length; i++) {
//画圆点
ImageView imageView = new ImageView(this);
if(i==0)
{
imageView.setImageResource(R.drawable.focus);
}else{
imageView.setImageResource(R.drawable.nomor);
}
imageList.add(imageView);
LayoutParams params=new LayoutParams(20, 20);
params.setMargins(5, 0, 5, 0);
ll_dots.addView(imageView, params);
}
}
}