向导页面比较适合用在复杂的需要由多个步骤组成的情况,比如收集一些数据的时候。用户可以在已经填写的步骤中切换,方便更改前面填写过的数据。Android中,我们可以时候viewpager来实现所需要的向导的功能,在viewpager的滑动事件中,处理向导的导航。先上效果图



代码实现主要就是使用viewpager类,以及一个自定义的view StepPagerStrip类,用于实现viewpager顶部的状态显示。


layout代码


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <viewpagerdemo.android.baidao.com.androidwizard.StepPagerStrip        android:id="@+id/strip"        android:layout_width="match_parent"        android:layout_height="4dp"        android:layout_marginLeft="0dp"        android:layout_marginRight="0dp"        android:gravity="fill_horizontal"        android:paddingBottom="1dp"        android:paddingTop="1dp" />    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" />    <View        android:id="@+id/divider"        android:layout_width="match_parent"        android:layout_height="1px"        android:background="@color/wizard_button_container_divider_color" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <Button            android:id="@+id/prev_button"            style="@style/WizardButtonBarButton"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/wizard_button_selector"            android:text="@string/wizard_prev" />        <View            android:layout_width="1px"            android:layout_height="match_parent"            android:background="@color/wizard_button_container_divider_color" />        <Button            android:id="@+id/next_button"            style="@style/WizardButtonBarButton"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/wizard_button_selector"            android:text="@string/wizard_next" />    </LinearLayout></LinearLayout>

在viewpager的scoll事件中,更新StepPageStrip的状态即可

viewPager = (ViewPager) findViewById(R.id.pager);adapter = new WizardAdapter(getSupportFragmentManager());viewPager.setAdapter(adapter);stepPagerStrip = (StepPagerStrip) findViewById(R.id.strip);stepPagerStrip.setPageCount(adapter.getCount());viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {    @Override    public void onPageScrolled(int i, float v, int i2) {    }    @Override    public void onPageSelected(int i) {        stepPagerStrip.setCurrentPage(i);    }    @Override    public void onPageScrollStateChanged(int i) {    }});

详细的代码可以去我的github下载
https://github.com/lzyzsd/AndroidWizard

更多相关文章

  1. 开源中国 4 周年, Android、iPhone、WP7三个平台客户端全面开源
  2. PC客户端与Android服务端的Socket同步通信(一)
  3. android studio 利用productFlavors 生成三种不同网络环境的Apk
  4. 我的 Android(安卓)开发实战经验总结
  5. 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接
  6. Android中代码混淆和打包
  7. Android中的资源
  8. android双屏显示的一些修改与尝试
  9. Android常用的数据加密方式代码详解

随机推荐

  1. 关于Android(安卓)Studio无法查看详细的
  2. 树莓派与Android客户端进行socket通信
  3. Android持续集成之Jenkins 部署
  4. 用C++语言开发Android程序 配置开发环境
  5. Android基础入门教程——2.3.11 Date & T
  6. android中xml直接转json
  7. 基于Eclipse平台的Android(安卓)OpenCV开
  8. 命名规范,编码规则(Android版)
  9. 聊聊Service(二)
  10. Android(安卓)EventBus使用