標籤:android viewpager 引導頁
android使用ViewPager實現歡迎引導頁大多數APP第一次啟動的時候,都會有一個引導介面,左右滑動,到最後一張,使用者點擊才再次進入主介面。當第二次啟動的時候,則直接進入主介面。 這種效果一般使用ViewPager實現。今天就來為大家介紹一下ViewPager的使用。實現步驟:使用SharedPerferences來記錄是否是第一次啟動APP,如果是,則轉跳到Guide頁面,如果不是第一次啟動。就轉跳到主Activity.MainActivity:本Activity作為Logo頁面進入,使用handler來實現頁面的延遲專跳。對於handler還不太瞭解的同學,可以來這裡學習一下安卓的非同步訊息傳遞機制:http://blog.csdn.net/guolin_blog/article/details/9991569 (感謝郭神帶來好文章)
private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case MAIN: Intent intent = new Intent(MainActivity.this,Main.class); startActivity(intent); finish(); break; case GUIDE: Intent intent2 = new Intent(MainActivity.this,GuideView.class); startActivity(intent2); finish(); break; } } };
此外使用SharedPreferences來讀取使用者啟動資訊
mSharedPreferences = getSharedPreferences("conf",MODE_PRIVATE);isFirst = mSharedPreferences.getBoolean("first",true);
之後進行簡單的判斷,這裡不在累贅。
GuideActivity
這個介面是引導頁的介面,我們首先在其布局檔案下添加一個ViewPager之後在java檔案中擷取到這個ViewPager,並為這個ViewPager添加一個適配器。 這個適配器需要自己繼承PagerAdapter來重寫,稍後會進行講解。
mViewPager = (ViewPager) findViewById(R.id.viewpager); ViewPagerAdapter adapter = new ViewPagerAdapter(mList); mViewPager.setAdapter(adapter);
注意這個Adapter的傳入參數是一個泛型為View的List。我們先向List裡添加我們的View,再為最後一個view的Button添加監聽事件,用來轉跳到首頁面;
mList = new ArrayList<>();View view = LayoutInflater.from(this).inflate(R.layout.layout1,null); mList.add(view); view = LayoutInflater.from(this).inflate(R.layout.layout2,null); mList.add(view); view = LayoutInflater.from(this).inflate(R.layout.layout3,null); mList.add(view); mButton = (Button) view.findViewById(R.id.button_enter); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(GuideView.this,Main.class); startActivity(intent); finish(); } });
ViewPagerAdapter
這是ViewPager的適配器,繼承於PagerAdapter,主要實現兩個方法:
destroyItem();
instantiateItem();
顧名思義一個是view去掉時候的方法,一個是添加view的方法。
這裡可以看到一個很熟悉的參數 container,沒錯,和baseAdapter的參數很像,都是用來緩衝當前view的。接下來只需要調用他的removeView和addView即可。需要注意的是,需要向下轉型為ViewPager。
public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager)container).removeView(mList.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { Log.i("wing","viewAdatper here"); ((ViewPager)container).addView(mList.get(position)); return mList.get(position); }
另外不要忘記重寫他的構造方法。傳入一個泛型為view的List
public ViewPagerAdapter(ArrayList list){ mList = list; }
這樣適配器就完成了,大家自己多寫幾遍就會熟練。對了,別忘了給每個view一個布局檔案。
下面看看:
源碼
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
android使用ViewPager實現歡迎引導頁