ViewPager-Shape

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); } } 
         
       
      
      
     
     
    
    
   
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值