ViewPager 自動切換廣告效果

/**
步驟:
1 新建組件 <android.support.v4.view.ViewPager/>
2   activity中找到組件並設置繼承至PagerAdapter的Adapter類
3 複寫PagerAdapter中的
public int getCount() {}
public Object instantiateItem(ViewGroup container, int position) {}
public boolean isViewFromObject(View view, Object object) {}
public void destroyItem(ViewGroup container, int position, Object object) {}
4   自動循環播放方式:
 * 1、定時器:Timer
 * 2、開子線程 while  true 循環
 * 3、ColckManager 
 * 4、 用handler 發送延時信息,實現循環
第4種方式相對省性能
以下是一個實例
*/

//1 xml定義

<android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

//2 activity主要代碼

viewPager.setAdapter(new MyPagerAdapter());
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
	
			/**
			 * 頁面切換後調用 
			 * position  新的頁面位置
			 */
			@Override
			public void onPageSelected(int position) {}
			
			@Override
			/**
			 * 頁面正在滑動的時候,回調
			 */
			public void onPageScrolled(int position, float positionOffset,
					int positionOffsetPixels) {
			}
			
			@Override
			/**
			 * 當頁面狀態發生變化的時候,回調
			 */
			public void onPageScrollStateChanged(int state) {
				
			}
		});

//3  PagerAdapter
private class MyPagerAdapter extends PagerAdapter {
		@Override
		/**
		 * 獲得頁面的總數
		 */
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		@Override
		/**
		 * 獲得相應位置上的view
		 * container  view的容器,其實就是viewpager自身
		 * position 	相應的位置
		 */
		public Object instantiateItem(ViewGroup container, int position) {
			
			System.out.println("instantiateItem  ::"+position);
			
			// 給 container 添加一個view
			container.addView(imageList.get(position%imageList.size()));
			//返回一個和該view相對的object
			return imageList.get(position%imageList.size());
		}

		@Override
		/**
		 * 判斷 view和object的對應關係 
		 */
		public boolean isViewFromObject(View view, Object object) {
			if(view == object){
				return true;
			}else{
				return false;
			}
		}

		@Override
		/**
		 * 銷燬對應位置上的object
		 */
		public void destroyItem(ViewGroup container, int position, Object object) {
			System.out.println("destroyItem  ::"+position);
			
			container.removeView((View) object);
			object = null;
		}
	}


//判斷是否自動滾動
	private boolean isRunning = false;
	
	private Handler handler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			
			//讓viewPager 滑動到下一頁
			viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
			if(isRunning){
				handler.sendEmptyMessageDelayed(0, 2000);
			}
		};
	};
	
	protected void onDestroy() {
		
		isRunning = false;
	};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章