ViewPager+GridView 日历手势滑动

思路:使用GridView进行日历数据的存储,使用ViewPager进行日历页面的切换。当然也可以使用GestureDetector+ViewFlipper进行页面的的手势控制和页面切换。首先写好GridView的adapter,用数组存储三个Gridview表示这上一个月,这一个月,和下一个月,并且添加item的点击事件,表示选中的日期。然后将这三个Gridview作为viewpager的item,并且给Viewpager添加页面改变的监听,当页面改变的时候,数据要跟着改变。注意:viewpager本身是不能进行循环显示的,因此要自己想办法 可以看我的另一篇博客。https://mp.csdn.net/postedit/79963491


MainActivity

        public class MainActivity extends Activity implements OnClickListener{
	 private List<MyGridView> mLists;  
	 private int index = 1;
	 private MyPagerListener listener;
	 
	 private ViewPager viewPager;
	 private MyViewPagerAdapter pagerAdapter;
	 
	 private TextView diary_title;
	 private Button lastButton;
	 private Button nextButton;
	 private CalendarAdapter gridAdapter;
	 
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);	
		init();	
		viewPager = (ViewPager) findViewById(R.id.viewPager);
		diary_title = (TextView) findViewById(R.id.diary_title);
		lastButton = (Button) findViewById(R.id.lastButton);
		nextButton = (Button) findViewById(R.id.nextButton);
		pagerAdapter = new MyViewPagerAdapter(this, mLists);
		viewPager.setAdapter(pagerAdapter);
		listener = new MyPagerListener();
		viewPager.setOnPageChangeListener(listener);
		viewPager.setCurrentItem(1);
	}
	private Calendar nowCalendar = Calendar.getInstance();
	int year;
	int month;
	class MyPagerListener implements OnPageChangeListener{

		int currentPosition;
		@Override
		public void onPageScrollStateChanged(int state) {
			 if (state != ViewPager.SCROLL_STATE_IDLE) return;

             // 当视图在第一个时,将页面号设置为图片的最后一张。
             if (currentPosition == 0) {
                 viewPager.setCurrentItem(mLists.size() - 2, false);

             } else if (currentPosition == mLists.size() - 1) {
                 // 当视图在最后一个是,将页面号设置为图片的第一张。
            	 viewPager.setCurrentItem(1, false);
             }
             Log.e("Calendar&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值