res/drawable/dot_focus.xml
public class MainActivity extends Activity {
private int[] imgs = { R.drawable.a, R.drawable.b, R.drawable.c,
R.drawable.d };
private LinearLayout ll;
private ViewPager vp;
private List
imglist;
private List
dotlist;
private Handler h = new Handler() {
public void handleMessage(android.os.Message msg) {
int i = vp.getCurrentItem();
vp.setCurrentItem(++i);
h.sendEmptyMessageDelayed(0, 2000);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ll = (LinearLayout) findViewById(R.id.ll_dots);
vp = (ViewPager) findViewById(R.id.vp);
// 初始化数据
initImages();
initDots();
vp.setAdapter(new MyAdapter(imglist, h));
vp.setCurrentItem(imglist.size() * 100000);
vp.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageSelected(int arg0) {
for (int i = 0; i < dotlist.size(); i++) {
if (arg0 % dotlist.size() == i) {
dotlist.get(i).setImageResource(R.drawable.dot_focus);
} else {
dotlist.get(i).setImageResource(R.drawable.dot_normal);
}
}
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageScrollStateChanged(int arg0) {
}
});
h.sendEmptyMessageDelayed(0, 2000);
}
private void initDots() {
dotlist = new ArrayList
();
for (int i = 0; i < imgs.length; i++) {
ImageView iv = new ImageView(this);
if (i == 0) {
iv.setImageResource(R.drawable.dot_focus);
} else {
iv.setImageResource(R.drawable.dot_normal);
}
LayoutParams lp = new LayoutParams(10, 10);
lp.setMargins(5, 0, 5, 0);
// 把小圆点放到页面的LinnearLayout容器中
ll.addView(iv, lp);
// 把小圆点存放到集合中
dotlist.add(iv);
}
}
private void initImages() {
imglist = new ArrayList
();
for (int i = 0; i < imgs.length; i++) {
ImageView iv = new ImageView(this);
iv.setImageResource(imgs[i]);
iv.setScaleType(ScaleType.FIT_XY);
imglist.add(iv);
}
}
}
public class MyAdapter extends PagerAdapter {
private List
imglist; private Handler h; public MyAdapter(List
imglist, Handler h) { super(); this.imglist = imglist; this.h = h; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView iv = imglist.get(position % imglist.size()); // 点击图片停止轮播 iv.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_CANCEL:// 鼠标划走 h.sendEmptyMessageDelayed(0, 2000); break; case MotionEvent.ACTION_DOWN:// 鼠标按下 h.removeCallbacksAndMessages(null);// 清空所有handler消息池的消息及所有回调函数 break; case MotionEvent.ACTION_UP:// 鼠标抬起 h.sendEmptyMessageDelayed(0, 2000); break; } return false; } }); container.addView(iv); return iv; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
ViewPager-Shape
最新推荐文章于 2021-05-26 20:14:24 发布