项目重构-引导页的实现
来源:互联网 发布:js处理json数据 编辑:程序博客网 时间:2024/06/05 19:01
公司的项目从最开始设计到现在上线发版好几个版本,中间经过不停的迭代和修改,现在已经变得有点冗余,对以后的合作开发和后续扩展产生了一定的影响,所以抽空把项目重构一下,一些逻辑和代码重新做一下调整,以更加适合当前的业务逻辑,so,先从引导页面上入手。
比较常用的集中引导页面有如下几种:
第一种: 最简单的引导页(导航点和引导页合二为一,好处是简单,缺点也同样明显:过渡生硬,受适配影响较大),具体代码如下:
<?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:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" /></LinearLayout>
效果如下:
第二种:使用背景图片+CirclePageIndicator小圆点来实现导航点的效果(稍微复杂,但有了页面切换时的小圆点动画效果)
主布局activity代码如下:
<?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:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" /> <com.viewpagerindicator.CirclePageIndicator android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="8dp" android:padding="10dp" /> </RelativeLayout></LinearLayout>
然后就是引导页的每一个页面的布局了,这里只展示一个就行了,因为几乎都是一样的,代码如下:
<?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"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/bg_boot_page_one"/></LinearLayout>
activity代码如下:
import android.app.Activity;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import com.viewpagerindicator.CirclePageIndicator;import java.util.ArrayList;import java.util.List;import Adapter.ViewPagerAdapter;public class ViewPagerActivity extends Activity{ private CirclePageIndicator circlePageIndicator; ViewPager viewPager; ViewPagerAdapter mpagerAdapter; private List<View> views= new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_viewpager); viewPager= (ViewPager) findViewById(R.id.id_viewpager); circlePageIndicator= (CirclePageIndicator) findViewById(R.id.indicator); LayoutInflater minflater=LayoutInflater.from(this); View view01=minflater.inflate(R.layout.viewpager01,null); View view02=minflater.inflate(R.layout.viewpager02,null); View view03=minflater.inflate(R.layout.viewpager03,null); View view04=minflater.inflate(R.layout.viewpager04,null); View view05=minflater.inflate(R.layout.viewpager05,null); views.add(view01); views.add(view02); views.add(view03); views.add(view04); views.add(view05); mpagerAdapter=new ViewPagerAdapter(views); viewPager.setAdapter(mpagerAdapter); circlePageIndicator.setViewPager(viewPager); }}
最终的实现效果和第一种其实查不了太多,但稍微高档了一些。
第三种:Guideshow控件实现
Guideshow使你简单、快速的构建引导页。另外,你无须生成动态的gif图片就可使页面产生动画效果,如平移、渐变。项目地址: https://github.com/javajavadog/guideshow
第四种:AppIntro 控件实现
尝试使用了下,确实是个漂亮的控件,而且使用也很简单,推荐使用。
项目地址:https://github.com/PaoloRotolo/AppIntro
第五种:SwitchViewDemo
一个简单的引导页实现。值得推荐的是这完全是个单独的控件,而不是借助ViewPager实现的。作者完全是扩展ViewGroup做的。有兴趣的可以参考作者的设计。
最后备注一下:
小圆点的实现有多重方法,自己定义,或者使用第三方的开源库,这里介绍一个第三方的开源库,一个轻量级的viewpager指示器CircleIndicator , 项目地址:https://github.com/ongakuer/CircleIndicator,类似于nexus5 启动器的效果。它可以自定义指示器上小圆点的样式和动画效果,效果如下:
综上,个人推荐使用第二种+自定义小圆点,这样更加灵活,效果也比较不错,能够满足大部分的需求了。
- 项目重构-引导页的实现
- 引导页的实现
- 0代码实现项目引导页
- android引导页的实现
- APP引导页的实现
- Android 引导页的实现
- 完整页的引导实现
- 引导页的实现大全
- Android引导页的实现
- 项目引导页动画的总结
- Maria 项目接口重构的主要功能及其实现
- iOS用户引导页的简单实现
- Android ViewPager程序引导页的实现
- 引导页旋转动画的实现
- IOS开发:引导页的实现
- iOS新手引导页的实现,源码
- android引导页的实现办法
- hellow mui 引导页的实现
- 树的子结构
- angular中的ng-class的几种常用方式
- HDU:2037 今年暑假不AC(简单贪心+结构体)
- android版本检测更新的方法2
- B树
- 项目重构-引导页的实现
- 2016 Multi-University Training Contest 1题解报告
- python3的字符串
- 评估你的市场
- [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
- hdoj--2037 *今年暑假不AC(sort+结构体+贪心)
- HttpClient
- memcache 的相关使用
- Ad hoc query