Android向导页面的实现
16lz
2021-01-26
向导页面比较适合用在复杂的需要由多个步骤组成的情况,比如收集一些数据的时候。用户可以在已经填写的步骤中切换,方便更改前面填写过的数据。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
更多相关文章
- 开源中国 4 周年, Android、iPhone、WP7三个平台客户端全面开源
- PC客户端与Android服务端的Socket同步通信(一)
- android studio 利用productFlavors 生成三种不同网络环境的Apk
- 我的 Android(安卓)开发实战经验总结
- 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接
- Android中代码混淆和打包
- Android中的资源
- android双屏显示的一些修改与尝试
- Android常用的数据加密方式代码详解