Android開發之使用ViewPager做引導頁面

來源:互聯網
上載者:User

標籤:android   viewpager   引導頁面   

引導頁面相信大家都不會陌生,安裝了一個新的App後第一次開啟,都會有類似,相當於說明文檔


實現效果


程式目錄結構


在主layout裡main.xml定義一個幀布局,在viewPager上有多少頁就顯示多少個點

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_gravity="center" >    </android.support.v4.view.ViewPager>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="bottom|center_horizontal"        android:orientation="horizontal" >        <ImageView            android:id="@+id/icon_1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="30dp"            android:contentDescription="@string/content_description"            android:src="@drawable/page_icon" />        <ImageView            android:id="@+id/icon_2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginRight="30dp"            android:contentDescription="@string/content_description"            android:src="@drawable/page_icon" />        <ImageView            android:id="@+id/icon_3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:contentDescription="@string/content_description"            android:src="@drawable/page_icon" />    </LinearLayout></FrameLayout>

每一個View的布局pager1.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/image1"    android:orientation="vertical" >    <Button        android:id="@+id/btn_in_first"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:text="第一頁" /></LinearLayout>
其它兩個view類似

在主Activity中

package com.example.viewpagerdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;public class MainActivity extends Activity {private ViewPager viewPager = null;private ImageView img1, img2, img3;private ArrayList<String> titles;private int curIndex = -1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initWidgets();// 把要顯示的View裝入數組LayoutInflater li = LayoutInflater.from(this);View view1 = li.inflate(R.layout.pager1, null);View view2 = li.inflate(R.layout.pager2, null);View view3 = li.inflate(R.layout.pager3, null);// 添加頁面final ArrayList<View> views = new ArrayList<View>();views.add(view1);views.add(view2);views.add(view3);// 添加標題titles = new ArrayList<String>();titles.add("tab1");titles.add("tab2");titles.add("tab3");picViewPagerAdapter pagerAdapter = new picViewPagerAdapter(views);viewPager.setAdapter(pagerAdapter);curIndex = 1;viewPager.setCurrentItem(curIndex);img2.setImageResource(R.drawable.page_icon_sel);viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubswitch (arg0) {case 0:img1.setImageResource(R.drawable.page_icon_sel);img2.setImageResource(R.drawable.page_icon);img3.setImageResource(R.drawable.page_icon);break;case 1:img2.setImageResource(R.drawable.page_icon_sel);img1.setImageResource(R.drawable.page_icon);img3.setImageResource(R.drawable.page_icon);break;case 2:img3.setImageResource(R.drawable.page_icon_sel);img2.setImageResource(R.drawable.page_icon);img1.setImageResource(R.drawable.page_icon);break;default:break;}curIndex = arg0;System.out.println("[MainActivity->]currIndex = " + curIndex);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});}private void initWidgets() {viewPager = (ViewPager) findViewById(R.id.viewpager);img1 = (ImageView) findViewById(R.id.icon_1);img2 = (ImageView) findViewById(R.id.icon_2);img3 = (ImageView) findViewById(R.id.icon_3);}/** * 為ViewPager添加適配器 *  * @author Administrator *  */class picViewPagerAdapter extends PagerAdapter {private List<View> listViews;public picViewPagerAdapter(List<View> list) {listViews = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn listViews.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic void destroyItem(View container, int position, Object object) {((ViewPager) container).removeView(listViews.get(position));}@Overridepublic CharSequence getPageTitle(int position) {return titles.get(position);}@Overridepublic Object instantiateItem(View container, int position) {((ViewPager) container).addView(listViews.get(position));return listViews.get(position);}}}
每個小圓點的改變是通過viewpager監聽器去改變的

viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubswitch (arg0) {case 0:img1.setImageResource(R.drawable.page_icon_sel);img2.setImageResource(R.drawable.page_icon);img3.setImageResource(R.drawable.page_icon);break;case 1:img2.setImageResource(R.drawable.page_icon_sel);img1.setImageResource(R.drawable.page_icon);img3.setImageResource(R.drawable.page_icon);break;case 2:img3.setImageResource(R.drawable.page_icon_sel);img2.setImageResource(R.drawable.page_icon);img1.setImageResource(R.drawable.page_icon);break;default:break;}curIndex = arg0;System.out.println("[MainActivity->]currIndex = " + curIndex);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});

完整Demo下載:http://download.csdn.net/detail/deng0zhaotai/7272609

Android開發之使用ViewPager做引導頁面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.