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; } } };</pre> <p>此外使用SharedPreferences來讀取用戶啟動信息</p>
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一個布局文件。
下面看看效果圖:
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!